Petalinux patch生成和应用方法整理

本文转载自: XILINX开发者社区

本文作者:赛灵思工程师 Terry

大家在使用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

例如:

petalinux-devtool modify linux-xlnx

Linux kernel的源码会被下载到

/components/yocto/workspace/sources/文件夹下。然后就可以直接在这个位置对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 //生成2个版本之间的patch

版本信息可以使用git log或者git status来查看。

接下来就可以将生成的patch应用到petalinux工程中去。通常就是修改对应recipe的bbappend文件,把patch添加进去即可。

FSBL:

把patch文件拷贝到
/project-spec/meta-user/recipes-bsp/fsbl/files目录下,如果目录不存在,手动建立即可。

然后在
/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文件拷贝到
/project-spec/meta-user/recipes-bsp/pmu/files目录下,如果目录不存在,手动建立即可。

然后在
/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文件拷贝到
/project-spec/meta-user/recipes-bsp/device-tree/files目录下,如果目录不存在,可以先编译一下工程,工具会自动生成。

然后在
/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文件拷贝到
/project-spec/meta-user/recipes-extended/xen/files文件夹下,如果目录不存在,手动建立即可。

然后在
/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

最新文章

最新文章