📝本文概览

本文将详细介绍PetaLinux 2023.1版本的安装和使用流程,包括:虚拟机环境搭建、PetaLinux安装、在线/离线编译方法、SD卡制作与上板验证。不同版本和板子之间可能略有区别。

一、安装虚拟机

查看文档UG1144,确定所要安装的petalinux版本对应的虚拟机版本,这里我安装的是Ubuntu20.04.6(虽然显示不支持,但实际上没什么问题)。

Ubuntu配置中硬盘可以给大一点,后面如果要离线编译的话用得上。

安装虚拟机后可以切换镜像源,方便后面下载库文件。

二、下载petalinux

进入官网下载页面

三、安装Petalinux

1. 安装必要的库文件

1
sudo apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax xterm build-essential libtinfo5 libncurses5 tftpd-hpa -y

2. 将petalinux安装包复制到虚拟机中

💡传输方法

可以使用scp命令复制,前提是虚拟机需要先安装并启动SSH服务(sudo apt install openssh-server 和 sudo systemctl start ssh)。

SCP传输语法
1
scp 需要复制的文件 虚拟机用户名@虚拟机ip地址:文件保存的地址

示例:

1
scp petalinux-v2023.1-05012318-installer.run raiset@192.168.80.130:~/Downloads

3. 创建Petalinux文件夹并给予权限

1
2
3
4
5
sudo mkdir -p /opt/pkg/petalinux
sudo chown raiset(虚拟机用户名) /opt/pkg/
sudo chgrp raiset /opt/pkg/
sudo chown raiset /opt/pkg/petalinux/
sudo chgrp raiset /opt/pkg/petalinux/

4. 开始安装

第一步:修改权限

为安装文件添加执行权限:

1
sudo chmod 777 petalinux-v2023.1-05012318-installer.run
第二步:启动安装程序

指定安装路径为刚才创建的文件夹:

1
./petalinux-v2023.1-05012318-installer.run -d /opt/pkg/petalinux/
第三步:跳过许可协议

输入 q ,回车,然后跳出一大段文字:

再次输入 `q` 退出协议页面,输入 `y` 同意协议:
第四步:开始安装

依此类推,直到开始安装:

四、PetaLinux使用

1. 配置环境变量

每次打开一个Terminal都需要执行此命令,否则无法运行PetaLinux相关指令!

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

2. 创建工作目录并给予权限

创建一个目录,在该目录下可创建多个PetaLinux工程。

1
2
3
sudo mkdir peta_prj
sudo chmod 777 peta_prj/
cd peta_prj

3. 创建PetaLinux工程

命令格式
1
petalinux-create --type project --template <PLATFORM> --name <PROJECT_NAME>

参数说明:

  • <PLATFORM> - 目标平台类型
    支持的平台类型
    • versal - Versal ACAP
    • zynqMP - Zynq UltraScale+ MPSoC
    • zynq - Zynq-7000 devices
    • microblaze - MicroBlaze™ processor
  • <PROJECT_NAME> - 工程名称

4. 配置PetaLinux(在线编译)

4.1 配置工程

进入工程目录:

1
cd test_peta 

将Vivado生成的XSA文件移动到虚拟机中

运行 bash petalinux-config --get-hw-description <XSA_PATH>

其中 <XSA_PATH> 是XSA文件所在路径。

一般情况下保持默认配置即可,使用方向键移动到Exit退出。

不同板子的配置可能不一样,可以参考板子的相关手册,下面几个配置同理。

4.2 配置内核

1
petalinux-config -c kernel 

⚠️保持虚拟机联网状态,这里会从网络下载大量文件!

由于以太网的PHY芯片驱动默认没有打开,需要手动配置:

使用方向键导航,按enter进入,依次选择Device Drivers → Network device support → PHY Device support and infrastructure → Micrel Phys

y 选中Micrel Phys驱动,然后选择Exit逐层退出并保存。

4.3 配置根文件系统

1
petalinux-config -c rootfs

根文件系统配置一般保持默认即可,直接退出。

5. 编译

1
petalinux-build

⚠️编译过程较长,会从网络下载大量依赖文件。

常见问题解决:cracklib分支问题

错误现象: 编译过程中出现以下错误信息:

解决方案: GitHub上的cracklib主分支已从master改为main,需要修改配置文件:

文件路径: [projectdir]/components/yocto/layers/poky/meta/recipes-extended/cracklib/cracklib_2.9.8.bb

修改内容: 将分支信息从master改为main:

有时如果编译不成功,可以多运行几次petalinux-build命令。

出现以下信息代表编译成功:

6. 打包

1
petalinux-package --boot --u-boot --fsbl --fpga --force
参数详解

--fsbl

  • 指定FSBL镜像文件位置
  • 默认路径:images/linux/zynq_fsbl.elf

--fpga

  • 指定bitstream文件位置
  • 默认路径:images/linux/system.bit
  • 注意:如果XSA文件中不包含bit文件,不应添加此参数

--u-boot

  • 指定U-Boot镜像位置
  • 默认路径:images/linux/u-boot.elf

--force

  • 强制覆盖已存在的文件

五、制作SD卡

1. 准备工作

  • 一张空闲的SD卡
  • 读卡器
  • 将SD卡通过读卡器连接至虚拟机

2. 查看SD卡设备

打开Disks工具,查看SD卡设备名称:

本例中SD卡设备被识别为/dev/sdb,请根据实际情况调整后续命令中的设备名称!

3. SD卡分区操作

3.1 进入分区工具

1
sudo fdisk /dev/sdb

3.2 查看现有分区

输入 p 并回车查看当前分区状态:

如果存在已有分区,需要先删除。输入 d 删除现有分区,然后选择要删除的分区编号:

3.3 SD卡分区创建

第一步:

创建主分区:

  1. 输入 n 创建新分区
  2. 输入 p 设置为primary主分区
  3. 分区编号和起始扇区默认即可,直接回车
  4. 输入 +1G 设置分区大小为1GB

设置为启动分区:
输入 a 将分区1设置为可启动:

设置文件系统类型:
输入 t 然后输入 c 设置为FAT32格式:

第二步:

创建Root分区:

  1. 输入 n 创建第二个分区
  2. 输入 p 设置为primary主分区
  3. 其他设置默认即可,直接回车使用剩余所有空间
第三步:确认并保存

输入 p 查看分区创建结果:

写入分区表:
输入 w 并回车将分区配置写入SD卡,写入完成后会自动退出fdisk工具。

3.4 格式化分区

取消挂载:

1
2
sudo umount /dev/sdb1
sudo umount /dev/sdb2

格式化Boot分区为FAT32格式:

1
sudo mkfs.vfat -F 32 -n boot /dev/sdb1

格式化Root分区为ext4格式:

1
sudo mkfs.ext4 -L root /dev/sdb2

重新插拔SD卡后,使用以下命令验证格式化结果::

1
lsblk -f
💡替代工具

除了命令行方式,也可以使用图形化工具:Linux: gparted;Windows: DiskGenius。

4. 写入系统文件

4.1 拷贝Boot文件

进入工程目录/images/linux,将以下文件拷贝到Boot分区:

  • boot.scr
  • BOOT.BIN
  • image.ub

4.2 写入Root文件系统

💡写入方式对比

dd命令:直接写入ext4镜像文件,完整性好; 解压方式:将rootfs.tar.gz解压到挂载点,速度较快。

1
sudo dd if=rootfs.ext4 of=/dev/sdb2

等待写入完成

1
sudo tar -zxf rootfs.tar.gz -C /media/raiset/root

挂载的位置可以从上面lsblk -f命令输出的结果中看到。

六、上板验证

1. 设置SD卡启动

将开发板设置为SD卡启动模式,具体设置方法请参考板卡用户手册,通常通过跳线帽或拨码开关来设置。

2. 串口连接

2.1 查看端口

打开Windows设备管理器查看串口号:

如果设备管理器中不显示串口,需要下载并安装相应的USB转串口驱动程序。

2.2 配置串口工具

以Putty为例,配置连接参数:

3. 启动测试

3.1 启动过程

  1. 启动开发板 - 插入SD卡并上电
  2. 打开串口工具 - 连接并打开串口窗口
  3. 等待启动完成 - 观察启动日志输出

3.2 首次登录配置

  1. 用户名: 输入 petalinux
  2. 设置密码: 根据提示设置新密码
  3. 确认密码: 再次输入密码确认
  4. 登录成功: 进入PetaLinux系统命令行

七、离线编译

离线编译通过预先下载所需文件,避免在编译过程中联网下载,可以显著提升编译速度。

1. 下载离线资源

访问AMD/Xilinx下载页面

根据开发板型号选择相应的文件,其中downloads文件所有平台都需要:

2. 解压

创建两个文件夹分别用于存放sstate-cache和downloads文件。

运行tar -xvf xxx.tar.gz解压文件,解压完成后删去压缩包。

3. 配置离线编译

第一步

进入Yocto Settings菜单:
petalinux-config 界面中,使用方向键导航到 “Yocto Settings” 并回车进入。

第二步

禁用网络并启用离线模式:

  1. n 取消 “Enable Network sstate feeds”
  2. y 选择 “Enable BB NO NETWORK”
第三步

配置sstate-cache路径:
找到 “Local sstate feeds settings” 选项,进入后输入sstate-cache所在路径:

注意使用绝对路径,不能使用 ~/ 简写,否则后面会报错。

第四步

配置downloads路径:
找到 “Add pre-mirror url” 选项,进入后输入downloads所在路径:

注意必须添加file://前缀。

🎉总结

至此,您已经完成了PetaLinux的完整学习流程,希望这个教程能对您的嵌入式Linux开发工作有所帮助!

Site Total Visits Loading
Site Total Visitors Loading