使用Petalinux的boot文件、根文件系统,和开源Linux的Image启动

作者: 付汉杰 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

最新文章

最新文章