当前位置: 首页 > 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/bash

bsp_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" ]; then
    echo "进入路径: $projct_path"
    cd "$projct_path"
else
    echo "未找到包含 '$keyword' 的路径"
fi

mkdir $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_PATH

sed -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-xlnx

sed -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 ]; do
    petalinux-build
    echo "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.dtcms.com/a/79958.html

相关文章:

  • 全面解析软件开发流程与工具对比
  • Evo2:跨所有生命领域的基因组建模与设计
  • 利用Linux的I2C子系统和i2c-tools工具集写出的对I2C设备AP3216C读写的应用程序
  • Python Cookbook-4.8 二维阵列变换
  • ZooKeeper集群高可用性测试与实践:从规划到故障模拟
  • 单片机flash存储也做磨损均衡
  • 分布式训练与多GPU加速策略
  • 创造型设计模式
  • IP查询底层逻辑解析:数据包与地理位置
  • 【虚幻引擎UE5】SpawnActor生成Character实例不执行AI Move To,未初始化AIController的原因和解决方法
  • 嵌入式4-Modbus
  • 网络类型及数据链路层协议【复习篇】
  • MySQL身份验证的auth_socket插件
  • 使用 `pytest` 框架时,可以通过极限封装将 YAML 文件的读取、解析
  • Kotlin v2.1.20 发布,标准库又有哪些变化?
  • 设计模式在事件处理系统中的应用
  • Qt之MVC架构MVD
  • cmake教程
  • JAVA URL和URI差异对比
  • C语言入门知识(上)
  • 搭建React简单项目
  • lua垃圾回收
  • javaAPI文档中文版(在线版)
  • 绿盟面试题
  • centos家用笔记
  • 智能汽车图像及视频处理方案,支持视频智能拍摄能力
  • ModuleNotFoundError: No module named ‘flask‘ 错误
  • Cursor/windsurf+MCP+Blender自动建模还有多远
  • JimuReport与deepseek结合,颠覆现有BI模式
  • ASFF:Learning Spatial Fusion for Single-Shot Object Detection