Petalinux 建立工程#
- 创建工程文件夹
mkdir -p ~/peta_prj/linuxPsBase/hardware
- 将vivado工程导出的后缀为xsa的文件(也就是步骤1中说的硬件描述文件)(course3_3eg/1_petalinux/vivado/design_1_wrapper.xsa)拷贝刡刚才创建的hardware 文件夹下
- 进入工程文件夹内
cd ~/peta_prj/linuxPsBase/
- 启动已构建的docker镜像
docker run -ti -v "$PWD":"$PWD" -w "$PWD" --rm -u petalinux docker_petalinux2:2020.1 $@
- 使用“petalinux-create”命令创建 petalinux 工程。“-t”参数是指需要创建的类型,这里我们是创建工程所以后面跟“project”, “-n”指工程名称为“petalinux”,“–template”参数是指使用“zynqMP”模板来创建返个工程。
petalinux-create -t project -n petalinux --template zynqMP
- 使用下面的命令迕入petalinux工程目录。
cd ./petalinux
- 使用“petalinux-config”命令加上“–get-hw-description”参数配置 petalinux 工程的硬件信息,“–get-hw-description”参数后面我们硬件描述文件(xsa文件)所在的路径,也就是步骤 1 中创建的路径,注意:硬件信息目录(当前就是“../hardware/”)里必项有且只有一个xsa文件。
petalinux-config --get-hw-description ../hardware/
- 退出界面配置完成
配置离线编译#
从官网https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html
下载
- 解压资源文件
mkdir -p petalinux_offline_pkg/sstate_aarch64
mkdir -p petalinux_offline_pkg/downloads
tar -xzvf sstate_aarch64_2020.1.tar.gz -C petalinux_offline_pkg/sstate_aarch64
tar -xzvf downloads_2020.1.tar.gz -C petalinux_offline_pkg/downloads
- 配置
petalinux-config
选择最下面的“Yocto Settings —>”选项。
在“Yocto Settings —>”界面中,取消选择“Enable Network sstate feeds”,选择“Enable BB NO NETWORK”选顷, 修改成如下图的状态:
注意,如果之后编译报错提示“Network access disabled through BB_NO_NETWORK”,就把“Enable BB NO NETWOTRK”取消选中再尝试编译。
- 设置“sstate_aarch64”包的路径,选择“Local sstate feeds settings —>”选项
直接回车 输入我们包的路径,后回车确认
/peta/petalinux_offline_pkg/sstate_aarch64_2020.1/aarch64/
- 设置“downloads”包的路径,先选择
选顷迒回刡下图的界面,然后选择“Add pre-mirror url —>”选项
修改路径为
file:///peta/petalinux_offline_pkg/downloads
选择
设置本地内核源码以及u-boot源码#
- 从Github下载对应版本的文件
linux-xlnx-xilinx-v2020.1.zip
u-boot-xlnx-xilinx-v2020.1.zip
https://github.com/Xilinx/linux-xlnx/archive/refs/tags/xilinx-v2020.1.zip
https://github.com/Xilinx/u-boot-xlnx/archive/refs/tags/xilinx-v2020.1.zip
- 执行解压命令
unzip u-boot-xlnx-xilinx-v2020.1.zip -d petalinux_offline_pkg/
unzip linux-xlnx-xilinx-v2020.1.zip -d petalinux_offline_pkg/
- 配置petalinux(注意执行目录)
petalinux-config
/peta/petalinux_offline_pkg/linux-xlnx-xilinx-v2020.1
然后选择< Save >保存一下
4. 设置u-boot源码的路径,接着上面的步骤选择< Exit >选项回到下图的界面,选择“u-boot (u-boot-xlnx) —>”选项,
/peta/petalinux_offline_pkg/u-boot-xlnx-xilinx-v2020.1
修改设备树、编译petalinux工程#
- 进入下面的文件夹
/peta/peta_prj/linuxPsBase/petalinux/project-spec/meta-user/recipes-bsp/device-tree/files
上图文件夹的路径中,“Home/peta_prj_linuxPsBase”是我们使用mkdir命令创建的路径,从“petalinux”开始往后的路径以及路径中的文件是由petalinux-create命令生成的。我们进入到/home/alinx/peta_prj/linuxPsBase/petalinux/project-spec/meta-user/recipes-bsp/device-tree/files
路径中,返里的两个dtsi 后缀的文件,都是petalinux帮我们生成的自定义设备树文件,我们可以按照自己的需求来编辑返两个设备树返两个文件编辑两个或者只其中任意一个都可以,在本教程中我们选择编辑system-user.dtsi文件
nano system-user.dtsi
/include/ "system-conf.dtsi"
/ {
};
/* SD */
&sdhci1 {
disable-wp;
no-1-8-v;
};
/* USB */
&dwc3_0 {
status = "okay";
dr_mode = "host";
};
- 编译工程
在
/peta/peta_prj/linuxPsBase/petalinux
目录下
petalinux-build
注:如果没有设置离线编译,该步骤必项保证ubuntu系统可以连接网络,petalinux需要从github上下载一些源代码。
生成BOOT文件#
- 打开一个终端,使用下面的命令,迕入上面petalinux编译之后的结果目录中。
cd /peta/peta_prj/linuxPsBase/petalinux/images/linux
- 使用“petalinux-package –boot”命令打包 BOOT.bin 文件。“–u-boot”参数会把 u-boot依赖顷全部合成到BOOT.bin中,“–fpga”指合成bit文件刡BOOT.bin中(注意:如果你的xsa文件中丌包含bitstream,就 丌要加返个参数),“–fsbl”指合成fsbl文件到BOOT.bin中,“–force”为强制合成,覆盖以前合成的BOOT.BIN。注意这条命令里的参数都是2个短横线。
petalinux-package --boot --u-boot --fpga --fsbl --force
如果xsa文件中不包含bitstream,但是命令中却包含了“–fpga”参数,就会出现下图红框中的错误。去掉“–fpga”参数即可打包成功,如下图。
petalinux-package --boot --u-boot --fsbl --force
运行Linux#
- 将SD卡格式化为FAT32格式。
- 将之前得到的BOOT.bin、boot.scr 及image.ub 三个文件拷贝到上一步格式化的SD卡中,然后弹出SD卡。
- 将SD卡插入板卡。
- 把板卡设置为SD卡启动模式。
- 连接串口线到开发板的“PS_UART”口上,打开串口调试工具,将板卡上电。
驱动下载安装
CP210x VCP Windows
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
- 在串口工具中输入用户名root,密码root即可登录板载的linux系统(因为petalinux制作的根文件默认为ram类型,所以文件系统不能保存文件和配置即重启后回复初始状态)。
创建和使用bsp包#
使用petalinux的bsp包,我们可以快速的提供我们验证好的petalinux工程给他人使用,或者是使用他人验证好的petalinux工程。只需要掌握创建和使用bsp包的两条命即可。
- 创建 bsp包 使用下面的命令即可创建petalinux工程的bsp包到当前打开终端的路径中:
petalinux-package --bsp -p ./petalinux/ --output chapter1.bsp
- -p参数后面的路径是petalinux工程的一级路径
- –output 参数后面跟的是bsp包的名称
- 使用bsp包
使用下面的命令即可用bsp包来创建petalinux工程到当前打开终端的路径中:
petalinux-create -t project -n petalinux_bsp -s ./chapter1.bsp
- -n参数后面跟的是petalinux工程的名称
- -s参数后面跟的是我们使用的bsp包的路径