U-Boot:Porting a new Board(如何在 U-Boot 裡新增自己的 board)

jollen 發表於 January 29, 2007 4:14 PM

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