ZYNQ学习之路——创建PetaLinux工程

本文转载自:亦梦云烟的博客

在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统。

开发环境:Ubuntu16 64bit, PetaLinux 2018.2, Vivado 2018.2

硬件环境:米尔科技Zturn board(XC7Z010)

一、配置硬件环境
1.1 创建硬件工程
Zynq-7000运行嵌入式Linux系统要求至少包含以下硬件外设:

一个Triple Timer Counter(TTC)
至少32MB内存
串口,用于终端输入输出
非易失存储器(QSPI Flash, SD/MMC)
以太网(可选)
根据之前系列教程使用vivado创建一个能启动Linux系统的工程ZYNQ学习之路1.Linux系统从零开始建立

编译综合后,生成hardware description file(.hdf),Petalinux根据此文件进行初始化PetaLinux工程。

将工程目录下的
.sdk/_hw_platform_0文件夹拖到Ubuntu虚拟机中。

1.2 创建PetaLinux工程
使用petalinux-crete工具创建一个基本的工程文件夹:

$ petalinux-create --type project --template

--template CPU_TYPE——支持的CPU类型,zynqMP, Zynq和MicroBlaze
--name NAME——创建的工程名

本例命令:
$ petalinux-create --type project --template zynq --name ZturnTemplate

创建成功后,工程中有一个文件和一个配置文件。
ubuntu:~/workspace/petalinux$ ls ZturnTemplate/
config.project project-spec

导入硬件描述文件
$ cd ZturnTemplate/
$ petalinux-config --get-hw-description=../ZturnHW/system_wrapper_hw_platform_0

因为是新创建的工程,我们会进入一个配置界面,在这里需要配置一些系统参数,包括:启动方式,启动存储分区表,启动文件名称等。本例程从SD卡启动系统,所有的配置默认即可。

退出时保存设置,开始自动配置系统。

配置成功后将生成PetaLinux工程的文件组件。

最后编译工程:
$ petalinux-build

1.3 配置工程的组件
虽然在开发板中,linux系统可以正常启动,但是,有些自定义设计的外设驱动可能无法适配,比如网卡,FLASH等,这时候就需要用到petalinux的配置工具。

进入工程目录下:
$ cd

启动顶级系统配置菜单
$ petalinux-config

启动uboot配置菜单
$ petalinux-config -c u-boot

启动linux内核配置菜单
$ petalinux-config -c kernel

启动文件系统配置菜单
$ petalinux-config -c rootfs

在直接使用默认配置时,在Zturnboard启动是显示找不到网卡。
Net: ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id
PHY is not detected
GEM PHY init failed
No ethernet found.

该阶段是Uboot阶段,所以进入uboot配置菜单。开发的网卡芯片型号是KSZ9031,是micrel公司生产的,所以uboot和kernel配置中都需要配置对其支持。

打开
/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h文件,在第一行代码下添加宏定义:
#include
#undef CONFIG_PHY_MARVELL
#define CONFIG_PHY_MICREL

首先配置u-boot:
$ petalinux-config -c u-boot
Device Drivers --->
-*- Ethernet PHY (physical media interface) support --->
[*] Micrel Ethernet PHYs Support
[*] Micrel KSZ90X1 family support

然后配置kernel:
$ petalinux-config -c kernel
Device Drivers --->
[*] Network device support --->
Ethernet driver support --->
[*] Micrel devices
-*- PHY Device support and infrastructure --->
<*> Micrel PHYs

修改了配置之后必须重新编译
$ petalinux-build

1.4 创建启动文件
编译完成后生成可以启动的镜像文件。

生成内核文件:
$ petalinux-package --image -c kernel --format uImage

生成启动文件:
$ petalinux-package --boot --fsbl --fpga --u-boot
FSBL image:fsbl文件在./images/linux中
FPGA bitstream:bit文件在./images/linux中

执行完这些命令后,在工程目录下会生成BOOT.BIN文件。

首先可以在QEMU中验证软件系统的正确性:
$ petalinux-boot --qemu --kernel

启动成功消息如下:

图1-1 QEMU启动ZturnTemplate

使用特定的DTB启动:
$ petalinux-boot --qemu --image ./images/linux/zImage --dtb ./images/linux/system.dtb

当Linux系统被创建好之后并且测试成功,下一步就是制作启动镜像。

zynq-7000启动需要FPGA的bitstream文件,fsbl文件,uboot.elf文件以及image.ub文件。使用以下命令制作BOOT.bin启动文件。

$ petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/system.bit --u-boot

在./images/linux文件夹中生成BOOT.BIN文件。

将BOOT.BIN,image.ub拷贝到FAT格式的SD卡中,插入Zturnboard开发板启动之。

二、PetaLinux常用命令
2.1 编译镜像
编译工程:petalinux-build

生成uImage: petalinux-package --image -c kernel --format uImage

生成Boot镜像:petalinux-package --boot --fsbl --fpga --u-boot

打包预建镜像:petalinux-package --prebuilt --fpga

在当前目录下生成pre-built文件夹,该文件夹下包含了Zynq-7000启动Linux所需要的文件。

2.2 下载调试
使用预建镜像启动QEMU:
petalinux-boot --jtag --prebuilt
level 1:下载FPGA比特流
level 2:下载FPGA比特流并启动boot程序
level 3:下载FPGA比特流,FSBL启动u-boot和Linux内核

在QEMU中启动:
petalinux-boot --qemu --prebuilt 3

使用JTAG在硬件中启动镜像:
环境要求:连接JTAG并安装Linux的驱动程序

2.3 BSP打包
在PetaLinux工程的上一级目录中运行命令。
petalinux-package --bsp -p
--output MY.BSP

这里MY.BSP将会包含以下内容:

/project-spec/ /config.project /,petalinux/ /pre-build/
所有选择的组件

参考资料
[1] ug1156-petalinux-tools-workflow-tutorial.pdf

最新文章

最新文章