5、赛灵思-Zynq UltraScale+ MPSoC学习笔记:Petalinux 的设计流程及定制Linux系统
声明:本文是学习赛灵思 Zynq UltraScale+ MPSoC 5EV过程中写的笔记,便于以后复习,参考《 ug1144-petalinux-tools-reference-guide》、黑金Zynq UltraScale+ MPSoC 5EV开发板资料。
5.1、Petalinux 的设计流程概述
一般的设计流程如下:
1.通过 Vivado 创建硬件平台,得到 hdf 硬件描述文件;
2.运行 source <petalinux 安装路径>/settings.sh,设置 Petalinux 运行环境;
3.通过 petalinux-create -t project 创建 petalinux 工程;
4.使用 petalinux-config --get-hw-description,将 hdf 文件导入到 petalinux 工程当中并配置 petalinux 工程;
5.使用 petalinux-config -c kernel 配置 Linux 内核;
6.使用 petalinux-config -c rootfs 配置 Linux 根文件系统;
7.配置设备树文件;
8.使用 petalinux-build 编译整个工程;
9.使用 petalinux-package --boot 制作 BOOT.BIN 启动文件;
10.制作 SD 启动卡,将 BOOT.BIN 和 image.ub 以及根文件系统部署到 SD 卡中;
11.将 SD 卡插入开发板,并将开发板启动模式设置为从 SD 卡启动;
12.开发板连接串口线并上电启动,串口上位机打印启动信息,登录进入 Linux 系统。
5.2、使用 Petalinux 定制 Linux 系统
5.2.1、Petalinux 建立工程
1.在用户目录下,创建一个工作目录;
mkdir -p /home/peta_prj/linuxPsBase/hrd
2.将 vivado
导出 xsa
文件拷贝到 hrd文件夹下;
3.进入工程目录;路径中“~”表示用户 home 路径,等效于/home/peta_prj
cd ~/peta_prj/linuxPsBase
4.设置 petalinux
环境变量,运行下面命令,环境变量只在当前终端中有效,所以后面和 petalinux
相关的命令都要在当前终端中输入,关闭后需要重新运。
source /opt/pkg/petalinux/settings.sh
设置打开终端及开启环境变量配置
echo "source" /opt/pkg/petalinux/settings.sh" >> ~/.bashrc
5.创建 petalinux
工程,名称为“petalinux”,类型为“project
”,使用 zynqMP
模板
petalinux-create -t project -n petalinux --template zynqMP
6.使用命令进入petalinux目录
cd petalinux
7.配置 Petalinux 工程的硬件信息,硬件信息目录里只能能有一个 xsa 文件
petalinux-config --get-hw-description ../hardware/
8.在赛灵思官网下载Linux内核和uboot
GitHub地址:
Linux内核:GitHub - Xilinx/linux-xlnx: The official Linux kernel from Xilinx
uboot:GitHub - Xilinx/u-boot-xlnx: The official Xilinx u-boot repository
9.弹出工程配置项界面,如下图,在“Auto Config Settings”选项中勾选“Device tree autoconfig”、“kernel autoconfig” “u-boot autoconfig”,然后“Save”、接着“Exit”
10.弹出是否保存配置界面,选择 ,回车
11.等待配置完成
5.3、离线编译
5.3.1、配置u-boot 和 kernel
进入内核和uboot配置界面:点击Linux components selection
-> u-boot (u-boot-xlnx)
-> ext-local-src
选完之后退出到 Linux components selection
下面会多一个选项 External u-boot local source path (NEW)
。
然后将u-boot
的路径添加进去;
赛灵思 uboot 下载地址:GitHub - Xilinx/u-boot-xlnx: The official Xilinx u-boot repository
在 master
下选择自己需要的坂本 版本需跟petalinux
版本一致;
Linux
内核下载地址:GitHub - Xilinx/linux-xlnx: The official Linux kernel from Xilinx
需要将下载好的u-boot
和 内核拷贝到 工程目录下。
将uboot 路径添加进配置文件
同理进入 linux-kernel (linux-xlnx)
- > ext-local-src
退出后进入 External linux-kernel local source path (NEW)
然后在 auto config settings
下的 kernel autoconfig
和 u-boot autoconfig
勾选。
5.3.2、配置离线包
①、petalinux 编译过程中会需要下载 许多包文件,如果网络环境差,编译会失败,因此选择直接下载好安装包,进入赛灵思官网:Xilinx -灵活应变. 万物智能.
②、点击 下载与许可 ,选择对应版本,需要和petalinux 版本一致,因此选择 2021.2
③、在petalinux 下的 工具中 下载 aarch64 sstate-cache
和 download
④、进入petalinux 配置界面;去掉Enable Network sstate deeds
*号
⑤、进入Local sstate feeds settings
配置 sstate_aarch64_2021.2
路径
保存退出!
⑥、进入Add pre-mirror url
删除原来的网站路径 ,添加自己的路径,注意路径前要加 file://
保存退出!
5.3.3、配置设备树文件
在工程目录下的 petalinux/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
文件的内容修改为:
5.3.4、编译工程
5.4、生成 BOOT 文件
进入工程文件目录:petalinux/images/linux
目录下;使用如下命令将u-boot
依赖全部合成生成BOOT.BIN
文件
petalinux-package --boot --u-boot --fpga --force
在目录下会生成BOOT.bin
文件;可以将BOOT.bin、boot.scr
及 image.ub
拷贝入 SD 卡启动Linux系统。
使用用户 root,密码 root 登录
5.5、petalinux常用命令总结:
①、创建petalinux
工程
petalinux-create --type project --template <CPU_TYPE> --name <PROJECT_NAME>
<CPU_TYPE>
可以是:zynqMP, zynq, microblaze
<PROJECT_NAME>
就是工程名称
②、导入硬件信息
首先要切换到petalinux
工程目录;再使用如下命令导入:
petalinux-config --get-hw-description ../hardware
hardware
–是存放.xsa文件的目录
③、配置petalinux
petalinux-config -c u-boot /* 配置petalinux u-boot */
petalinux-config -c kernel /* 配置petalinux 内核 */
petalinux-config -c rootfs /* 配置petalinux rootfs */
④、编译petalinux
系统
petalinux-build
Please pay attention to obtain resources: Kevin的学习站,输入:057