在软件开发过程中我们经常遇到用 Patch 来传递和更新代码的场景。本文以一个端到端的例子来演示在 Petalinux 使用过程中,如何给 u-boot 的源码生成 Patch 并在 Petalinux 中编译。
操作系统:Ubuntu 18.04
工具:Petalinux 2020.2
开发板:ZCU102 Rev 1.0
源码:https://github.com/Xilinx/u-boot-xlnx
目标:出于演示目的,我们将修改 u-boot/cmd/bdinfo.c 文件,在 bdinfo 命令中加入一段打印,最终通过上板执行 bdinfo 命令来验证效果。
生成 Patch
首先 clone u-boot 源码到本地,切换到 Petalinux 2020.2 对应的 u-boot 分支。可从 Petalinux 2020.2 release notes
中查找对应的 u-boot 源码 branch 和 tag 信息。
https://www.xilinx.com/support/answers/75775.html
接下来使用任何你喜欢的编辑器修改 u-boot/cmd/bdinfo.c 代码,在 do_bdinfo 函数体中加入最后几句打印信息,具体如下:
在 u-boot 源码目录下执行“git diff cmd/bdinfo.c > bdinfo.patch"。这个操作将在 u-boot 源码目录下生成 bdinfo.patch 文件,其内容如下:
应用 Patch
把 Patch 文件拷贝到 Petalinux 工程下 project-spec/meta-user/recipes-bsp/u-boot/files 文件夹中。
编辑 u-boot-xlnx_%.bbappend,添加 SRC_URI +="
file://bdinfo.patch",
准备就绪,编译并运行
一切准备好了,接下来就是常规操作 Build Petalinux 工程并且打包 boot.bin 文件。最后上板启动 u-boot, 运行 bdinfo 命令:
我们添加的打印信息在 Bdinfo 中打印了出来,可见 Patch 成功了!
这个简单例子演示了 Petalinux 工程 Patch 源码的完整操作。同样可参照该流程对 Kernel/FSBL 等其它源码进行patch,需要注意的地方:
1. 用来生成 Patch 的源码版本必须与 Petalinux 编译用的源码版本完全一致,否则 Patch 文件无法匹配。
2. 也可使用 Linux 的 diff 命令来生成 Patch,需要注意 Generate patch 时目标文件夹深度要与 Apply 时一致,否则 Patch 也无法匹配(参考阅读 diff 命令的 -p 选项)。
3. 修改 u-boot-xlnx_%.bbappend 文件以将 Patch 加入到 Build 过程中,注意如果 /project-spec/meta-user/recipes-bsp/u-boot 文件夹不存在的话(很有可能),可以按照该目录结构自己来创建,.bbappend 文件的作用及语法可参考 Yocto 相关文档。
-
源码
+关注
关注
8文章
637浏览量
29182 -
u-boot
+关注
关注
0文章
121浏览量
38219 -
命令
+关注
关注
5文章
681浏览量
22008 -
编辑器
+关注
关注
1文章
805浏览量
31146
原文标题:开发者分享|如何在 Petalinux 下 Patch u-boot 源码
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论