当前位置: 首页 > news >正文

[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

http://www.mrgr.cn/news/95212.html

相关文章:

  • 【问题解决】Postman 测试报错 406
  • vue3+ts项目心得
  • 【VUE】day05-ref引用
  • git tag以及git
  • 基于RAGFlow本地部署DeepSeek-R1大模型与知识库:从配置到应用的全流程解析
  • K8S下nodelocaldns crash问题导致域名请求响应缓慢
  • c语言笔记 结构体指针运用
  • Python散点图(Scatter Plot):高阶分析、散点图矩阵、三维散点图及综合应用
  • 【算法day15】最接近的三数之和
  • git tag常用操作
  • Umi从零搭建Ant Design Pro项目(2)
  • An Introduction to Stable Diffusion
  • 1-1 MATLAB深度极限学习机
  • C++ 头文件说明
  • 【c++】【STL】unordered_set 底层实现(简略版)
  • MATLAB深度极限学习机
  • 识别并脱敏上传到deepseek/chatgpt的文本文件中的护照信息
  • 同等学力申硕-计算机专业-数学基础-历年真题和答案解析
  • 鬼泣:动作系统3
  • 【ESP32】虚拟机Ubuntu20.04下ESP32环境搭建