cangcanglang 发表于 2022-4-9 11:02:43

Petalinux patch生成和应用方法整理

大家在使用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就能直接找到了。

http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248961-01.png在这个AR中会有一个列表介绍当前版本下所有petalinux工具相关的版本信息。

http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248962-02.png2. 如何修改以及生成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
http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248963-03.png
另外,在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
http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248964-04.png
Linux components Selection -> External u-boot local source settings -> External u-boot local source path
http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248965-05.png
Kernel external配置:
Linux components Selection -> linux-kernel -> ext-local-src
http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248966-06.png
Linux components Selection -> External linux-kernel local source settings -> External linux-kernel local source path
http://xilinx.eetrend.com/files/2022-04/wen_zhang_/100559300-248967-07.png

weiziushi 发表于 2022-4-9 11:31:33

bidezhi7777 发表于 2022-4-9 13:02:17

mj8abcd 发表于 2022-4-9 16:09:44

h09721 发表于 2022-4-12 08:02:30

页: [1]
查看完整版本: Petalinux patch生成和应用方法整理