一、petanlinux工具编译镜像文件,最终就只有两个文件 BOOT.BIN和image.ub, 这两个文件包括u-boot、linux内核、设备树、PL端的bitstream、fsbl等,虽然方便但是速度太慢;
二、分布式编译步骤繁琐,单是灵活性高,是因为编写驱动的时候要经常改动设备树文件、内核、根文件系统、bitstream,
将bitstream从BOOT.BIN中独立出来
将image.ub文件分开为内核zImage和设备树dtb
将根文件系统放到SD卡的EXT4分区
创建Petalinux工程,生成BOOT.BIN
1、创建一个petalinux工程目录,
2、在该工程目录下载创建一个hdf目录
3、将vivado 生成的sdk文件夹复制到上述的hdf目录下
4、创建petalinux工程,之下一下步骤之后会在petalinux工程目录下生成一个WEDU-ZYNQ目录,这就是我们产生镜像文件对应的工程目录
设置petalinux环境
创建工程
进入工程目录
导入hdf文件
以后更新vivado工程的时候,只需要将sdk文件夹更新或更换,再导入hdf文件即可
5、hdf文件导入成功或自动弹出petalinux工程配置窗口,如下所示
6、进入Subsystem AUTO Hardware Settings
-->Serial settings
-->Primary stdin/stdout 选择ps7_uart_0
7、进入Subsystem AUTO Hardware Settings
-->Advance bootable images storage Settings
-->dtb image settings
-->image storage media 选择primary sd
以上步骤是将dtb文件从image.ub文件中独立出来,并存到SD卡的EXT4分区
8、返回到最初的配置界面,进入Image Packaging Configuration
-->Root filesystem type 选择SD card
以上步骤是将根文件系统放到SD卡的EXT4分区
9、配置完成后,编译fsbl和uboot,以及生成BOOT.BIN,命令如下
petalinux-build -c bootloader
petalinux-build -c u-boot
petalinux-build --boot --fsbl --u-boot --force
这三条命令的实行时间视电脑的配置而定
BOOT.BIN文件仅包含zynq_fsbl.elf和u-boot.elf文件,而没有bit文件,这两个文件我们基本是不需要改动的
10、生成设备树文件,在上步执行 petalinux-build -c u-boot命令之后,会在工程目录~/petalinux/WEDU-ZYNQ/components/plnx_workspace/device-tree/device-tree下生成设备树,圈出来的部分可用
编译内核
将xilinx官方2018.3版本的内核源码复制到/home/linux/kernel目录
以后再内核源码目录下进行编译,而不使用petalinux工具,因为内核也是经常改动,petalinux太慢
1、添加设备树文件,将面前产生的设备树文件复制到内核源码下的arch/arm/boot/dts目录
2、使用vim打开system-top.dts文件,进行一些简单的修改,
主要修改bootargs属性;
添加model属性;
网口0的MAC地址
QSPI进行分区
3、使用vim打开arch/arm/boot/dts目录下的Makefile文件,将设备树添加进去;
4、在内核源码目录下进行defconfig配置,命令如下:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig
5、编译内核,执行以下命令,-j2是因为虚拟机只分配了2个核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j2
6、编译完成之后,会在arch/arm/boot/目录下生成一个名为在Image的内核镜像文件
编译设备树
在内核里边需要单独编译出设备树的dtb文件,前面我们已经将所需要的设备树文件复制到内核的arch/arm/boot/dts目录下;
接下来执行以下命令编译system-top.dtb文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j2
编译rootfs
1、进入petalinux创建的工程目录,WEDU-ZYNQ;
2、配置根文件系统,配置免密码登陆
petalinux-config -c rootfs
进入Image Features 选中debug-tweaks
3、编译根文件系统 petalinux-build -c rootfs
编译完成知乎产生的根文件压缩包在image/linux目录下
制作SD启动卡
FAT分区:
内核镜像:zImage /arch/arm/boot/zImage
内核设备树:system-top.dtb /arch/arm/boot/dts/system-top.dtb 重命名为system.dtb
PL端bitstream文件:petalinux工程目录下 images/linux/system.bit
BOOT.BIN文件: petalinux工程目录下 images/linux/BOOT.BIN
EXT4分区:
根文件系统
将petalinux工程目录下 image/linux/rootfs.tar.gz 解压缩到SD卡
sudo tar -xzf rootfs.tar.gz -C /media/fangzeli/rootfs
/media/fangzeli/rootfs是本人的SD启动卡对应的EXT4分区挂载点
启动开发板
在U-Boot启动倒计时完成之前 按回车,进入U-Boot的命令行模式,因为环境变量的问题,现在无法启动
修改环境变量
输入boot 重启电路板
标签:文件,boot,arm,ZYNQ,内核,linux,镜像,petalinux,目录 From: https://www.cnblogs.com/FZLGYZ/p/16623534.html