[Xilinx]工具篇_PetaLinux自动编译
[Xilinx]工具篇_PetaLinux自动编译
- 若该文为原创文章,未经允许不得转载
- 风释雪
- QQ:627833006
- E-mail:hn.cy@foxmail.com
- CSDN博客: https://blog.csdn.net/weixin_46718879
- 知乎:https://www.zhihu.com/people/abner-80-4
1.版本
日期 | 作者 | 版本说明 |
---|---|---|
2025XXXX | 风释雪 | 初始版本 |
2.流程
基于成熟的BSP文件,自动化生成PetaLinux工程,并实现uboot、kernel源码的指定路径替换,最终自动编译完成;
该模式适用于gitlab、服务器自动部署,一键编译、打包生成项目生成文件;
由于该过程每个项目使用情况不一样,因此文中脚本只适用于本人自己,不同项目需要定制;
#!/bin/bashbsp_path=$(realpath "$1")
xsa_path=$(realpath "$2")
uboot_path=$(realpath "$3")
kernel_path=$(realpath "$4")echo "PetaLinux BSP: $bsp_path"
echo "XSA File Path: $xsa_path"
echo "Uboot Source Path: $uboot_path"
echo "Kernel Source Path: $kernel_path"petalinux-create -t project -s $bsp_path# 定义特定字样
keyword="PetaLinux"# 查找当前目录下名称包含关键字的路径
path=$(find . -type d -name "*${keyword}*" | head -n 1)projct_path=$(realpath "$path")echo "Project Path: $projct_path"# 检查是否找到路径
if [ -n "$projct_path" ]; thenecho "进入路径: $projct_path"cd "$projct_path"
elseecho "未找到包含 '$keyword' 的路径"
fimkdir $projct_path/platform# 准备XSA文件到platform目录下
cp "$xsa_path" $projct_path/platform# 静默配置
petalinux-config --get-hw-description ./platform/ --silentconfig# /opt/petalinux/2023.2/source/u-boot-xlnx-xilinx-v2023.2
# /home/abner/workspace/files/linux-xlnx-xilinx-v2023.2# 文件内容修改
# project-spec/configs/config
# CONFIG_SUBSYSTEM_COMPONENT_U__BOOT_NAME_EXT_LOCAL_SRC_PATH
# CONFIG_SUBSYSTEM_COMPONENT_LINUX__KERNEL_NAME_EXT_LOCAL_SRC_PATHsed -i 's@^CONFIG_SUBSYSTEM_COMPONENT_U__BOOT_NAME_EXT_LOCAL_SRC_PATH=.*@CONFIG_SUBSYSTEM_COMPONENT_U__BOOT_NAME_EXT_LOCAL_SRC_PATH=${uboot_path}@g' $projct_path/project-spec/configs/config
sed -i 's@^CONFIG_SUBSYSTEM_COMPONENT_LINUX__KERNEL_NAME_EXT_LOCAL_SRC_PATH=.*@CONFIG_SUBSYSTEM_COMPONENT_LINUX__KERNEL_NAME_EXT_LOCAL_SRC_PATH=${kernel_path}@g' $projct_path/project-spec/configs/config# 文件内容修改
# project-spec/configs/plnxtool.conf
# EXTERNALSRC:pn-u-boot-xlnx
# EXTERNALSRC:pn-linux-xlnxsed -i 's@^EXTERNALSRC:pn-u-boot-xlnx=.*@EXTERNALSRC:pn-u-boot-xlnx=${uboot_path}h@g' $projct_path/project-spec/configs/plnxtool.conf
sed -i 's@^EXTERNALSRC:pn-linux-xlnx=.*@EXTERNALSRC:pn-linux-xlnx=${kernel_path}@g' $projct_path/project-spec/configs/plnxtool.conf# 编译
while [ $? -ne 0 ]; dopetalinux-buildecho "Build successful"
done
脚本调用
# 参数1 BSP文件
# 参数2 xsa文件
# 参数3 uboot源码路径
# 参数4 kernel源码路径./PetaLinux_AutoRun.sh ./project.bsp ./projecet.xsa ./projecet/u-boot-xlnx-xilinx-v2023.2 ./projecet/linux-xlnx-xilinx-v2023.2