如何在Petalinux下Patch u-boot源码

描述

本文作者:AMD 工程师 Chao Zhang

在软件开发过程中我们经常遇到用 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

在 u-boot  源码目录下执行“git diff cmd/bdinfo.c > bdinfo.patch"。这个操作将在 u-boot 源码目录下生成  bdinfo.patch 文件,其内容如下:

u-boot

应用 Patch

把 Patch 文件拷贝到 Petalinux 工程下 project-spec/meta-user/recipes-bsp/u-boot/files 文件夹中。

u-boot

编辑 u-boot-xlnx_%.bbappend,添加 SRC_URI += "

file://bdinfo.patch", u-boot

准备就绪,编译并运行

一切准备好了,接下来就是常规操作 Build Petalinux 工程并且打包 boot.bin 文件。最后上板启动 u-boot, 运行 bdinfo 命令:

u-boot

我们添加的打印信息在 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 相关文档。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分