开发者分享|如何在 Petalinux 下 Patch u-boot 源码

科技   2024-11-28 19:00   新加坡  


本文作者: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  源码目录下执行“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 相关文档。



AMD 自适应 SOC 及 FPGA 中文技术支持社区

欢迎您访问本社区论坛:

[https://support.xilinx.com/s/?language=zh_CN]

我们希望能帮助您快速找到所需内容。本网站是AMD 自适应 SoC 及 FPGA 支持资源登录页面,其中包括我们的知识库、社区论坛以及指向更多内容的链接。搜索并探索您所选主题的内容,然后登录以查看更多支持选项。



XILINX开发者社区
Xilinx开发者社区源于社区,服务社区,是面向广大开发者与产学研合作的平台,以技术为驱动,创建共享知识社区。(注: Xilinx is now a part of AMD)
 最新文章