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

u-boot源碼
U-Boot的啟動及移植分析
Porting U-Boot to the Control
一種在U-BOOT中嵌入千兆網(wǎng)絡(luò)功能的方法
u-boot的Makefile分析
U-Boot結(jié)構(gòu)功能介紹

u-boot簡介
如何在U-Boot中實(shí)現(xiàn)對Yaffs鏡像的設(shè)計(jì)?

U-Boot架構(gòu)淺析

在u-boot中使用ethernet的方法
創(chuàng)建自定義的u-boot命令
Linux U-Boot開發(fā)指南

評論