U-Boot 在 board/ 目錄下存放個別板子的支援程式碼(board support codes、board support package),並且是一張板子一個目錄。有時,基於一些理由,我們會想到新增一個新的 board 目錄來存放我們的 BSP。例如,以 Jollen-Kit!(JK2410)為例,JK2410 是基於 SMDK2410 所發展,若將 U-Boot 設定為 'smdk2410_config',也能支援我們的 JK2410。但是,我們會想要另外增加一個 <U-Boot>/board/jk2410/ 目錄,來擺放 JK2410 的程式碼,即便 <U-Boot>/board/smdk2410/ 與 <U-Boot>/board/jk2410/ 裡的程式碼是 100% 相同的。
有這樣需要的幾個具體理由是:
練習 U-Boot 移植。
避免修改到原始的 BSP 程式碼。
門面問題,讓 U-Boot 也能有專屬於我們板子的支援,而不是基於其他的板子。
將來會正式釋出 patch。
以下是「Porting a New Board」的具體做法:
1. 產生 JK2410 的 BSP 專屬目錄。
# cd <U-Boot>
# cd board
# cp -pa smdk2410/ jk2410/
jk2410/ 目錄下的程式碼與 smdk2410/ 完全相同。
2. 建立專屬的 config 檔。
# cd <U-Boot>
# cd include/configs/
# cp smdk2410.h jk2410.h
基於 smdk2410.h 來產生我們專屬的 jk2410.h 設定檔。
3. 修改 Makefile,基於 SMDK2410 來加入 JK2410 的 rule,紅色部份是新加入的設定:
smdk2410_config : unconfig @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 jk2410_config : unconfig @./mkconfig $(@:_config=) arm arm920t jk2410 NULL s3c24x0
紅色粗體字部份是板子的目錄名稱,即 <U-Boot>/board/<Board Name>。
專屬於 JK2410 的設定選項
完成後,我們就能以專屬的設定,將 U-Boot 設定為 JK2410 的支援:
# cd <U-Boot>
# make jk2410_config
Configuring for jk2410 board...
Let's start and happy porting !!
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw