前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【分享】使用Petalinux的boot文件、根文件系统,和开源Linux的Image启动

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

作者头像
hankfu
发布2022-03-23 10:20:54
3.8K0
发布2022-03-23 10:20:54
举报
文章被收录于专栏:hank

使用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。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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文件,也可以使用上述命令启动。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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

在Linux kernel的代码的代码目录,执行“make xilinx_vck190_defconfig”,再编译,就能得到对应的Image和ko文件。相对PetaLinux编译,这种方式更快,也能使用PetaLinux的boot文件和根文件系统。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Petalinux的boot文件、根文件系统,和开源Linux的Image启动
  • 概述
  • image.ub启动
  • Image启动
  • 使用Petalinux的boot文件、根文件系统,和开源Linux的Image启动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档