我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 576|回复: 4

[技术文章] Petalinux patch生成和应用方法整理

[复制链接]

该用户从未签到

25

主题

30

回帖

133

积分

二级逆天

积分
133

社区居民终身成就奖

发表于 2022-4-9 11:02:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
大家在使用petalinux工具实现自己工程的时候难免会需要用到patch。如何在patalinux工具下生成patch和应用patch, 对于刚接触Xilinx petalinux工具的同学来说,可能会比较头疼。下面将对如何生成patch以及在petalinux工具中应用patch做一个整理。
1. petalinux工具中各个component或者recipe源码
每个Xilinx Petalinux工具版本都会在官网有一个AR来具体说明。所有版本说明的AR的名称会按照如下格式来命名,PetaLinux XXXX.X - Product Update Release Notes and Known Issues。例如你要找2021.1版本的话,可以在官网搜索PetaLinux 2021.1 - Product Update Release Notes and Known Issues就能直接找到了。


                               
登录/注册后可看大图
在这个AR中会有一个列表介绍当前版本下所有petalinux工具相关的版本信息。


                               
登录/注册后可看大图
2. 如何修改以及生成patch
2021.1及以后的版本:
可以直接通过petalinux工具中的命令,把源码下载到当前的petalinux工程中然后直接按照你的需要进行修改。之后petalinux工具会按照你修改后的源码进行编译。命令格式如下:
petalinux-devtool modify<recipe-name style="box-sizing: border-box;">
例如:
petalinux-devtool modify linux-xlnx
Linux kernel的源码会被下载到
<plnx-proj-root style="box-sizing: border-box; color: rgb(51, 51, 51); font-family: Ubuntu, Tahoma, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; background-color: rgb(255, 255, 255);">/components/yocto/workspace/sources/<recipe-name style="box-sizing: border-box;">文件夹下。然后就可以直接在这个位置对kernel的源码进行修改,修改完成后直接用petalinux-build就可以编译进去了。
如果不知道确切的recipe的名字的话,可以使用petalinux-devtool search 来查找。
例如:petalinux-devtool search xen

                               
登录/注册后可看大图

另外,在2021.1版本之后,FSBL的recipe-name为fsbl-firmware,pmu的recipe-name为pmu-firmware。
2021.1之前的版本:
a. 通过patch的方式实现源码的修改
利用git工具,先从上面的列表中找到对应的版本,然后先下载下来。
git clone -b
下载之后修改对应的源码,修改完成后回到源码的根目录来生成patch
git add . //把修改的内容添加到本地版本中
git diff <xxx.patch style="box-sizing: border-box;">//生成2个版本之间的patch
版本信息可以使用git log或者git status来查看。
接下来就可以将生成的patch应用到petalinux工程中去。通常就是修改对应recipe的bbappend文件,把patch添加进去即可。
FSBL:
把patch文件拷贝到
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/fsbl/files目录下,如果目录不存在,手动建立即可。
然后在
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/fsbl目录下创建或修改fsbl_%.bbappend文件。在文件中添加需要的patch文件,例如:
SRC_URI_append = "file://0001-FSBL.patch"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
接着用petalinux-build -x mrproper清空之前的编译内容,然后用petalinux-build重新编译。
PMU:
把patch文件拷贝到
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/pmu/files目录下,如果目录不存在,手动建立即可。
然后在
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/pmu目录下创建pmu-firmware_%.bbappend文件。在文件中声明需要添加的patch文件,例如:
SRC_URI_append = "file://0001-PMUFW.patch"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
接着用petalinux-build -x mrproper清空之前的编译内容,然后用petalinux-build重新编译。
device-tree:
把patch文件拷贝到
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/device-tree/files目录下,如果目录不存在,可以先编译一下工程,工具会自动生成。
然后在
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-bsp/device-tree目录下修改device-tree.bbappend文件。在文件中声明需要添加的patch文件,例如:
SRC_URI_append = "file://0001-dtc.patch"
接着用petalinux-build -x mrproper清空之前的编译内容,然后用petalinux-build重新编译。
Xen:
把patch文件拷贝到
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-extended/xen/files文件夹下,如果目录不存在,手动建立即可。
然后在
<plnx-proj-root style="box-sizing: border-box;">/project-spec/meta-user/recipes-extended/xen目录下创建xen_%.bbappend文件。在文件中声明需要添加的patch文件,例如:
SRC_URI_append = "file://0001-DomU.patch"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
接着用petalinux-build -x mrproper清空之前的编译内容,然后用petalinux-build重新编译。
b.如果只是需要修改u-boot或者kernel源码的话,我们还可以通过external的方式来实现。
利用git工具,从上面的列表中找到对应的版本,然后下载下来。
git clone -b
接着在petalinux工程的目录下使用petalinux-config命令来修改u-boot或者kernel的源配置。
u-boot external配置:
Linux components Selection -> u-boot -> ext-local-src

                               
登录/注册后可看大图

Linux components Selection -> External u-boot local source settings -> External u-boot local source path

                               
登录/注册后可看大图

Kernel external配置:
Linux components Selection -> linux-kernel -> ext-local-src

                               
登录/注册后可看大图

Linux components Selection -> External linux-kernel local source settings -> External linux-kernel local source path

                               
登录/注册后可看大图
回复

使用道具 举报

  • TA的每日心情
    开心
    昨天 12:05
  • 签到天数: 151 天

    [LV.7]常住居民III

    0

    主题

    3519

    回帖

    3860

    积分

    二级逆天

    积分
    3860

    社区居民终身成就奖优秀斑竹奖特殊贡献奖原创先锋奖

    QQ
    发表于 2022-4-9 11:31:33 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 77 天

    [LV.6]常住居民II

    128

    主题

    1万

    回帖

    8419

    积分

    二级逆天

    积分
    8419

    终身成就奖特殊贡献奖原创先锋奖社区居民灌水天才奖优秀斑竹奖宣传大使奖忠实会员最爱沙发社区劳模

    QQ
    发表于 2022-4-9 13:02:17 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2022-4-9 16:09:44 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:15
  • 签到天数: 186 天

    [LV.7]常住居民III

    2

    主题

    8897

    回帖

    1万

    积分

    三级逆天

    积分
    10354

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2022-4-12 08:02:30 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表