1.开发背景
Zynq7020 有 2 个 A9 核,支持运行 Linux 系统和 FreeRTOS 等,这里主要使用 Linux,利用Linux 的开发生态减少复杂的外设开发。
2.开发需求
实现工程搭建和工程编译导出
3.开发环境
Zynq7020 + Ubuntu18.04 + Vivado2020.2 + petalinux2020.2
4.实现步骤
注意,这里默认你有可用的 Vivado 导出硬件 .xsa 文件
4.1 工程创建
bash
# 创建工程模版 工程模版名 zynq7020 后面的指令需要进到这个工作区运行
petalinux-create -t project --template zynq -n zynq7020
cd zynq7020
4.2 硬件导入
导入 .xsa 文件,指定路径即可,如果只是配置工程,则不需要制定文件文件
bash
# 导入硬件文件 zynq_wrapper.xsa
petalinux-config --get-hw-description ./zynq_wrapper.xsa
4.3 配置工程
工程配置都是基于 make menuconfig 那种界面实现的,配置就完事了,一般保持默认即可,根据自己的板卡执行配置。
以下两个路径可以从官方下载原始文件,一般开发板资料也有,配置指定路径既可,取消 Enable Network sstate feeds,默认的可能下载比较慢。
-> Yocto Settings -> Add pre-mirror url
-> Yocto Settings -> Local sstate feeds settings
bash
# 配置工程
petalinux-config
# 配置uboot
petalinux-config --c u-boot
# 配置 kernel
petalinux-config -c kernel
# 配置 rootfs
petalinux-config -c rootfs
4.4 编译工程
bash
# 编译全工程
petalinux-build
# 编译引导
petalinux-build -c bootloader
# 编译 uboot
petalinux-build -c u-boot
# 编译 kernel
petalinux-build -c kernel
# 编译 rootfs
petalinux-build -c rootfs
16 核编译的快感,nice

关键文件:
zynq_fsbl.elf:第一阶段引导文件,主要职责是把 ddr 搞起来,有大内存就好办事了
u-boot.elf:第二阶段启动文件,主要职责是启动内核,可以操作一般文件了
system.bit:fpga 文件,fpga 异构体独有的文件,就是 fpga 程序,推荐第二阶段加载
boot.scr:引导脚本,uboot 启动后使用这个脚本配置后续启动项
zImage:内核镜像,包含众多的外设驱动功能和系统调度
system.dtb:设备树二进制文件,主要描述了板卡外设细节
rootfs.tar.gz:文件系统,应用类软件功能,包含 ssh 等常用功能
