【Linux】PetaLinux开发
使用Xilinx的PetaLinux工具编译用于Zynq7020的Linux.
部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。
专栏目录:记录自己的嵌入式学习之路-CSDN博客
目录
1 一般开发流程
2 离线编译过程
3 系统根文件系统的配置:
4 常用Petalinux设置
5 各步操作可生成的文件
5.1 编译任意东西
5.2 编译bootloader
5.3 编译U-Boot
5.4 编译设备树
5.5 打包boot
6 设置Flash启动
7 错误解决
7.1 Bitbake Server错误
7.2 Bitbake Fetch错误
7.3 空间不足错误
7.4 启动时Kernel panic
7.5 启动时卡在等待root device附近
7.6 共享文件夹文件nobody权限的问题(VirtualBox相关)
7.7 编译到某步骤就卡住
7.8 Flash相关
7.8.1 vitis无法写入
7.8.2 Flash无法加载
7.8.3 无法加载内核
1 一般开发流程
一般的设计流程如下:
1.通过Vivado创建硬件平台,得到xsa文件;
2.运行source <petalinux安装路径>/settings.sh,设置Petalinux运行环境
3.通过petalinux-create -t project创建petalinux工程;
4.使用petalinux-config --get-hw-description,将xsa文件导入到petalinux工程当中并配置petalinux工程;
5.使用petalinux-config -c kernel配置Linux内核,默认情况下会在线下载文件编译,如下图。
2023.1版本的PetaLinux的默认Linux内核为6.1.5,一般不要手动更改内核版本,不过这也比较困难。
关于离线编译和修改内核,可以参考:使用Petalinux定制Linux系统 — ZYNQ 7000开发平台FPGA教程 1.0 文档https://ax7020-20231-v101.readthedocs.io/zh-cn/latest/7020_S4_RSTdocument_CN/05_%E4%BD%BF%E7%94%A8Petalinux%E5%AE%9A%E5%88%B6Linux%E7%B3%BB%E7%BB%9F_CN.html 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系统。
2 离线编译过程
(1)到Xilinx官网下载arm sstate-cache和Downloads;
(2)petalinux-config -> Yocto Settings ->
① 取消Enable Network sstate feeds(可不取消,有时候还是得联网);
② 使能Enable BB NO NETWORK;
③ Local sstate feeds settings -> 改为arm sstate-cache解压后的路径;
④ Add pre-mirror url -> 改为file://<Downloads解压后的路径>;
3 系统根文件系统的配置:
INITRD 类型的根文件系统每次重新启动 linux 系统都是全新的、未改动过的,也就是说启动系统后进行的所有修改掉电后就全部丢失了,再次重新启动还是之前未修改过的根文件系统,选择“EXT4”可以将根文件系统放在 SD 卡、eMMC 的 ext4 分区,这样启动系统后进行的所有修改掉电后就不会丢失了。
petalinux-config --get-hw-description [xsa_dir]
Image Packaging Configuration ---> Root filesystem type
Petalinux的EXT4模式的硬盘挂载情况:
PetaLinux的INITRD模式下的硬盘挂载情况: