作者: 付汉杰 hankf@xilinx.com hankf@amd.com,文章来源:博客园
测试环境: Vivado/PetaLinux 2021.2, Linux 5.10.0,VCK190
image.ub启动
Petalinux编译后,在images/linux里,既有Image,也有image.ub。image.ub已经带文件系统,可以独立启动。查看boot.scr,可以看到uboot加载image.ub后,执行命令“bootm 0x10000000”,启动了Linux。
fitimage_name=image.ub if test -e ${devtype} ${devnum}:${distro_bootpart} /${fitimage_name}; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x10000000 ${fitimage_name}; bootm 0x10000000; fi
使用image.ub,只有一个文件,使用起来最简单方便。
Image启动
在调试时,也可以使用分开的Image、rootfs.cpio.gz.u-boot、system.dtb。查看boot.scr,可以看到uboot依次检查上述3个文件是否存在。如果存在,就加载。加载完rootfs.cpio.gz.u-boot后,执行命令“booti 0x00200000 0x04000000 0x00001000”,启动了Linux。
kernel_name=Image rootfs_name=rootfs.cpio.gz.u-boot if test -e ${devtype} ${devnum}:${distro_bootpart} /${kernel_name}; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x00200000 ${kernel_name}; fi if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x00001000 system.dtb; fi if test -e ${devtype} ${devnum}:${distro_bootpart} /${rootfs_name} && test "${skip_ramdisk}" != "yes"; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x04000000 ${rootfs_name}; booti 0x00200000 0x04000000 0x00001000 fi
如果Image和image.ub都存在,优先使用image.ub启动。
使用Petalinux的boot文件、根文件系统,和开源Linux的Image启动
使用PetaLinux编译时,会自动生成根文件系统,耗时较长,导致调试不方便。在编译PetaLinux工程后,把Linux kernel的代码和配置文件复制出来。修改Linux kernel的代码后,直接编译,得到对应的Image和ko文件,也可以使用上述命令启动。
hankf$ find -name "kernel-source" ./build/tmp/work-shared/versal-generic/kernel-source hankf$ find -name ".config" | xargs -n 1 ls ./build/tmp/work/versal_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/linux-xlnx-5.10+git999/.config ./build/tmp/work/versal_generic-xilinx-linux/u-boot-xlnx/v2021.01-xilinx-v2021.2+gitAUTOINC+63b6d260db-r0/build/.config ./build/tmp/work-shared/versal-generic/kernel-build-artifacts/.config
其中体积最大的文件,是Linux的配置文件。复制到默认配置文件夹,比如arm64的是“arch/arm64/configs/”中,命名为xilinx_xxx_defconfig,比如命名为 xilinx_vck190_defconfig。
hankf$ ls arch/arm64/configs/ -l total 236 -rw-r--r-- 1 hankf hankf 25682 Mar 1 15:41 defconfig -rw-r--r-- 1 hankf hankf 11334 Mar 1 15:41 xilinx_defconfig -rw-r--r-- 1 hankf hankf 179126 Mar 2 10:37 xilinx_vck190_defconfig -rw-r--r-- 1 hankf hankf 5635 Mar 1 15:41 xilinx_versal_defconfig -rw-r--r-- 1 hankf hankf 9726 Mar 1 15:41 xilinx_zynqmp_defconfig