本文转载自:亦梦云烟的博客
在前面的学习中,我们知道如何根据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工程。
将工程目录下的
1.2 创建PetaLinux工程
使用petalinux-crete工具创建一个基本的工程文件夹:
$ petalinux-create --type project --template --name
参数意义:
--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的配置工具。
进入工程目录下: 启动顶级系统配置菜单 启动uboot配置菜单 启动linux内核配置菜单 启动文件系统配置菜单 在直接使用默认配置时,在Zturnboard启动是显示找不到网卡。 该阶段是Uboot阶段,所以进入uboot配置菜单。开发的网卡芯片型号是KSZ9031,是micrel公司生产的,所以uboot和kernel配置中都需要配置对其支持。 打开 首先配置u-boot: 然后配置kernel: 修改了配置之后必须重新编译 1.4 创建启动文件 生成内核文件: 生成启动文件: 执行完这些命令后,在工程目录下会生成BOOT.BIN文件。 首先可以在QEMU中验证软件系统的正确性: 启动成功消息如下:
$ cd
$ petalinux-config
$ petalinux-config -c u-boot
$ petalinux-config -c kernel
$ petalinux-config -c rootfs
Net: ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id
PHY is not detected
GEM PHY init failed
No ethernet found.
#include
#undef CONFIG_PHY_MARVELL
#define CONFIG_PHY_MICREL
$ petalinux-config -c u-boot
Device Drivers --->
-*- Ethernet PHY (physical media interface) support --->
[*] Micrel Ethernet PHYs Support
[*] Micrel KSZ90X1 family support
$ petalinux-config -c kernel
Device Drivers --->
[*] Network device support --->
Ethernet driver support --->
[*] Micrel devices
-*- PHY Device support and infrastructure --->
<*> Micrel PHYs
$ petalinux-build
编译完成后生成可以启动的镜像文件。
$ petalinux-package --image -c kernel --format uImage
$ petalinux-package --boot --fsbl
FSBL image:fsbl文件在./images/linux中
FPGA bitstream:bit文件在./images/linux中
$ 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
这里MY.BSP将会包含以下内容:
所有选择的组件
参考资料
[1] ug1156-petalinux-tools-workflow-tutorial.pdf