在軟件開發過程中我們經常遇到用 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文章
664瀏覽量
30003 -
u-boot
+關注
關注
0文章
122瀏覽量
38606 -
命令
+關注
關注
5文章
713瀏覽量
22531 -
編輯器
+關注
關注
1文章
812瀏覽量
31546
原文標題:開發者分享|如何在 Petalinux 下 Patch u-boot 源碼
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
U-boot的基本介紹

U-Boot的啟動及移植分析
Porting U-Boot to the Control
一種在U-BOOT中嵌入千兆網絡功能的方法
u-boot的Makefile分析
U-Boot結構功能介紹

u-boot簡介
如何在U-Boot中實現對Yaffs鏡像的設計?

U-Boot架構淺析

評論