在軟件開(kāi)發(fā)過(guò)程中我們經(jīng)常遇到用 Patch 來(lái)傳遞和更新代碼的場(chǎng)景。本文以一個(gè)端到端的例子來(lái)演示在 Petalinux 使用過(guò)程中,如何給 u-boot 的源碼生成 Patch 并在 Petalinux 中編譯。
操作系統(tǒng):Ubuntu 18.04
工具:Petalinux 2020.2
開(kāi)發(fā)板:ZCU102 Rev 1.0
源碼:https://github.com/Xilinx/u-boot-xlnx
目標(biāo):出于演示目的,我們將修改 u-boot/cmd/bdinfo.c 文件,在 bdinfo 命令中加入一段打印,最終通過(guò)上板執(zhí)行 bdinfo 命令來(lái)驗(yàn)證效果。
生成 Patch
首先 clone u-boot 源碼到本地,切換到 Petalinux 2020.2 對(duì)應(yīng)的 u-boot 分支??蓮?Petalinux 2020.2 release notes
中查找對(duì)應(yīng)的 u-boot 源碼 branch 和 tag 信息。
https://www.xilinx.com/support/answers/75775.html
接下來(lái)使用任何你喜歡的編輯器修改 u-boot/cmd/bdinfo.c 代碼,在 do_bdinfo 函數(shù)體中加入最后幾句打印信息,具體如下:
在 u-boot 源碼目錄下執(zhí)行“git diff cmd/bdinfo.c > bdinfo.patch"。這個(gè)操作將在 u-boot 源碼目錄下生成 bdinfo.patch 文件,其內(nèi)容如下:
應(yīng)用 Patch
把 Patch 文件拷貝到 Petalinux 工程下 project-spec/meta-user/recipes-bsp/u-boot/files 文件夾中。
編輯 u-boot-xlnx_%.bbappend,添加 SRC_URI +="
file://bdinfo.patch",
準(zhǔn)備就緒,編譯并運(yùn)行
一切準(zhǔn)備好了,接下來(lái)就是常規(guī)操作 Build Petalinux 工程并且打包 boot.bin 文件。最后上板啟動(dòng) u-boot, 運(yùn)行 bdinfo 命令:
我們添加的打印信息在 Bdinfo 中打印了出來(lái),可見(jiàn) Patch 成功了!
這個(gè)簡(jiǎn)單例子演示了 Petalinux 工程 Patch 源碼的完整操作。同樣可參照該流程對(duì) Kernel/FSBL 等其它源碼進(jìn)行patch,需要注意的地方:
1. 用來(lái)生成 Patch 的源碼版本必須與 Petalinux 編譯用的源碼版本完全一致,否則 Patch 文件無(wú)法匹配。
2. 也可使用 Linux 的 diff 命令來(lái)生成 Patch,需要注意 Generate patch 時(shí)目標(biāo)文件夾深度要與 Apply 時(shí)一致,否則 Patch 也無(wú)法匹配(參考閱讀 diff 命令的 -p 選項(xiàng))。
3. 修改 u-boot-xlnx_%.bbappend 文件以將 Patch 加入到 Build 過(guò)程中,注意如果 /project-spec/meta-user/recipes-bsp/u-boot 文件夾不存在的話(很有可能),可以按照該目錄結(jié)構(gòu)自己來(lái)創(chuàng)建,.bbappend 文件的作用及語(yǔ)法可參考 Yocto 相關(guān)文檔。
-
源碼
+關(guān)注
關(guān)注
8文章
639瀏覽量
29185 -
u-boot
+關(guān)注
關(guān)注
0文章
121瀏覽量
38220 -
命令
+關(guān)注
關(guān)注
5文章
683瀏覽量
22011 -
編輯器
+關(guān)注
關(guān)注
1文章
805瀏覽量
31163
原文標(biāo)題:開(kāi)發(fā)者分享|如何在 Petalinux 下 Patch u-boot 源碼
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論