使用Petalinux定制自己的linux系统

本文详细介绍了如何使用PetaLinux工具为Zynq SoC定制Linux系统,包括设置环境变量、创建工程、配置内核、根文件系统、设备树、编译工程以及制作启动文件BOOT.BIN。通过PetaLinux,开发者可以轻松定制U-Boot、Linux内核和根文件系统,实现针对Zynq开发板的Linux系统个性化开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

zynq是xilinx推出的一款集成arm核以及fpga可编程逻辑器件的soc芯片,使得它不仅拥有 ASIC 在能耗、性能和兼容性方面的优势,而且具有FPGA 硬件可编程性的优点。zynq主要分为两端,首先是pl端,属于像fgpa开发一样的纯逻辑开发。然后是ps端,我把它类比成是单片机的裸机开发,通过操作库函数配置寄存器等,它的优势是可以将pl端当成是外设,pl端写好的东西可以被ps端直接调用。然后ps端是属于arm-A核,是可以跑系统的(linux等)。
在zynq的linux开发端,官方提供了一个名为petalinux的工具,该工具运行在pc的linux环境下(如ubuntu),使用这个工具可以为我们的开发板量身定制Uboot、kernel、rootfs。该解决方案旨在提高设计生产力,可与 Xilinx 硬件设计工具一起使用,以简化针对 Zynq-7000 SoC 的 Linux 系统的开发。

Petalinux设计流程

首先,在这里我粘贴出所有要使用的petalinux使用语句,以方便后面要修改系统时直接复制使用即可

petalinux-create -t (工程名字)  //创建一个petalinux工程
petalinux-config --get-hw-description (.hdf文件所在目录的路径)//导入.hdf硬件配置文件
petalinux-config //打开petalinux工程的图形化配置页面
petalinux-config -c kernel //定制linux内核
petalinux-config -c rootfs //定制根文件系统
petalinux-build //编译整个petalinux工程
petalinux-package --boot --fsbl --fpga --u-boot --force //将--后面的文件全部打包生成BOOT.BIN 文件

1.设置petalinux运行的环境变量

source /opt/pkg/petalinux/2018.3/settings.sh

我们安装完petalinux之后,会在安装目录中生成一个settings.sh文件,我们要在使用的终端中执行这个脚本文件,对petalinux 工作环境进行初始化,以便我们使用petalinux命令的时候,系统可以自动进入安装目录中引用petalinux。
在这里插入图片描述

2.创建 petalinux 工程

我们在终端进入到一个你喜欢的文件夹中,在这个文件夹中运行以下命令,创建一个petalinux工程。

petalinux-create -t project --template zynq -n (工程名字)

template 参数表明创建的 petalinux 工程使用的平台模板,此处的 zynq 表明使用的是zynq 平台模板的 petalinux 工程,用于 zynq-7000 系列的芯片。
打开创建的工程有以下目录
在这里插入图片描述

3.配置 petalinux 工程

首次配置工程,需要引用vivado工程中生成的以.hdf结尾的硬件描述文件,因为linux可用的很多外设都不存在硬核,需要在pl端工程中配置出软核来代替硬核使用。这里根据你开发板的资源产生hdf文件导入即可。
进入到你的petalinux目录下执行以下命令:

petalinux-config --get-hw-description (hdf文件所在目录路径)

之后就会进入到一个图形化配置界面,我们通过键盘进行操作,基本操作就是上下左右移动光标,回车选择,ESC键按两下表示返回,这里建议大家多去摸索图形化配置界面,每个菜单进去看看有什么用,这是学习linux必不可少的过程。
首先我对菜单进行简单的介绍
在这里插入图片描述

“ Auto Config Settings”菜单主要就是选择是否使能 fsbl、 Device tree、 Kernel 和u-boot 的自动配置,默认为自动配置,无需更改。
在这里插入图片描述
这里大家可能会和我的不同,大家不用修改,因为后面我们会定制内核和uboot。我在这里只是向大家介绍这个地方是可以自己指定uboot和kernel,如果大家有自己内核和uboot可以在这里设置。
在这里插入图片描述
进入到这个目录,可以发现各个子菜单里面都已经有了默认配置,这些默认配置是根据 hdf 文件的信息自动配置的,基本上无需我们手动修改; 在serial setting 中可以设置串口用于打印后面的开机信息。

在这里插入图片描述
这里是设置启动引导镜像和内核镜像的存储媒介,默认为 sd 卡,这里保持默认即可。
在这里插入图片描述
第一个选项便是根文件系统的类型的配置,默认为 INITRAMFS,意思是从后面我们制作的.ub文件中读取根文件系统,这里也可以设置为sd卡,那么启动的时候就会从sd卡中挂载根文件系统。
Copy final images to tftpboot选项指当在 Ubuntu 的根文件下创建一个名为 tftpboot 的文件夹时,工程生成镜像后会自动将相关文件复制到/tftpboot 目录中。
回到主界面,“ Firmware Version Configuration”可以用来修改定制的 linux 系统的主机名和产品名,默认与该 Petalinux 工程同名。
这时候就配置得差不多了,记得移动光标到Save中回车保存配置再连按esc退出。
在这里插入图片描述
配置成功。

4.配置linux内核

到了这一步,就开始设计linux三大件之一——kernel了。
执行如下命令

petalinux-config -c kernel

等待一段时间后,就会打开kernel的menuconfig界面,大家可以随心所欲地在这里配置自己的linux内核,新手的话可以不做修改已经有默认配置,直接连按esc退出
在这里插入图片描述

5.配置linux根文件系统

执行如下指令进入到根文件系统的配置界面

petalinux-config -c rootfs

在这里插入图片描述
大家可以在这里探索配置,新手也可以不配置,则创建出来的根文件系统会比较小,但是麻雀虽小五脏俱全。

6.配置设备树

大家进入到petalinux工程中的目录project-spec/meta-user/recipes-bsp/device-tree/files 会发现有一个dtsi后缀的文件。这就是petalinux指定的设备树文件了。大家有什么设备树节点都可以添加到这里面去,它会被petalinux自动编译到设备树文件中去。新手可以不做配置,因为不配置设备树也可以启动内核,只是不能使用硬件设备而已。
在这里插入图片描述
在这里插入图片描述

7.编译工程

这时候就把工程该配置的信息配置好了,就需要编译生成我们启动linux系统需要的文件了。

petalinux-build

这个过程会比较久,petalinux虽然智能,但是因为编译太多的东西导致耗时比较长。
在这里插入图片描述

编译成功!警告不需要管,是因为版本问题产生的。

8.制作zynq的启动文件BOOT.BIN

BOOT.BIN 文件是 fsbl 镜像、 u-boot 镜像以及 pl 端 bit 文件集合在一起的。对于启动文件的介绍可以参考zynq启动分析。我们需要利用前面制作的文件来生成BOOT.BIN

petalinux-package --boot --fsbl --fpga --u-boot --force

在这里插入图片描述
“ --fsbl” 用于指定 fsbl 镜像文件所在位置,后面接文件对应的路径信息,如果不指定文件位置,默认对应的是 images/linux/zynq_fsbl.elf;选项“ --fpga” 用于指定
bitstream 文件所在位置,后面接该文件对应的路径信息,默认对应的是images/linux/system.bit;选项“ --u-boot”用于指定 U-Boot 镜像所在位置,后面接该文件所在路径信息,默认为 images/linux/u-boot.elf。这里均没有指定对应的文件的路径信息,那么 Petalinux 会自动使用默认文件。

9.成功启动linux!

进入工程目录images/linux下,将image.ub和BOOT.BIN拷贝到sd卡的fat32格式分区中。不会查看sd卡格式或者制作分区的可以参考sd卡分区操作

在这里插入图片描述

在这里插入图片描述
image.ub 这个文件的本质包括内核镜像、 dtb 以及根文件系统。
最后,将sd卡插入开发板设置启动模式为sd卡模式,开机后打印出启动日志代表开机成功啦!
zynq的默认开机名字和密码都是root。
在这里插入图片描述

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值