摘要:該文介紹了U-Boot的頂層目錄結構及其特點,并以S3C2410為例子說明了U-Boot在ARM平臺下的移植。
關鍵詞:ARM平臺;U-Boot移植
中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2009)04-0837-02
Transplanting of U-Boot under the ARM Platform
FENG Zhong-ling1, TONG Ying-hua2
(1.Department of Physics,Qinghai Normal University, Xining 810008, China; 2.Department of Computer, Qinghai Normal University, Xining 810008, China)
Abrstract: In this paper, U-Boot top-level directory structure and its characteristics are discriped, and the transplanting of U-Boot in the ARM platform be showed for the S3C2410 as special examples.
Key words: ARM platform; U-Boot transplanting
1 引言
Bootloader是嵌入式操作系統內核運行之前的一段程序,它類似于PC機中的BIOS程序,可以完成硬件的初始化,并建立內存空間的映射圖的功能,從而將系統的軟硬件環(huán)境帶到一個合適的狀態(tài),為最終調用系統內核做好準備,是嵌入式系統中非常重要的一部分,也是系統運行工作的必要組成部分。在嵌入式系統中常見的Bootloader有:VIVI、Blob、RedBoot、ARMboot、U-Boot等。本文將對U-Boot及其在ARM平臺下的移植作較詳細的介紹。
2U-boot工程簡介
最早,德國DENX軟件工程中心的Wolfgang Denk基于8xxrom的源碼創(chuàng)建了PPCBOOT工程,并且不斷添加處理器的支持。后來,Sysgo Gmbh把ppcboot移植到ARM平臺上,創(chuàng)建了ARMboot工程。然后以PPCBOOT工程和ARMboot工程為基礎,創(chuàng)建了U-Boot工程。
現在U-Boot已經能支持PowerPC、ARM、X86、MIPS體系結構的上百種開發(fā)板,已經成為功能最多、靈活性最強并且開發(fā)最積極的開放源代碼Bootloader。目前仍由DENX的Wolfgang Denk維護。
U-Boot的源碼包可以從http://sourceforge.net/project/u-boot下載,還可以訂閱該網站活躍的U-Boot Users郵件論壇,這個郵件論壇對于U-Boot的開發(fā)和使用都很有幫助。
3U-Boot源碼結構
U-Boot源程序包在頂層目錄下有18個子目錄,分別存放和管理不同的源程序。這些目錄中所要存放的文件有其規(guī)則,可以分為三類:
第一類目錄與處理處理器體系結構或者開發(fā)板硬件直接相關;
第地類目錄是一些通用的函數或者驅動程序;
第三類目錄是U-Boot的應用程序、工具或者文檔。
表1列出了U-Boot頂層目錄下各級目錄存放原則。
U-Boot的源代碼包含對幾十種處理器、數百種開發(fā)板的支持??墒菍τ谔囟ǖ拈_始板,配置編譯過程只需其中的部分程序。
4 ARM平臺下的U-Boot移植
移植需在事先已建立好硬件開發(fā)環(huán)境并在PC上安裝好針對ARM的交叉編譯工具的情況下進行。
在移植前,首先需要先分析一下U-Boot已經支持的開發(fā)板,為了使U-Boot支持新的開發(fā)板,一種簡便的做法是在U-Boot已經支持的開發(fā)板中選擇一種和目標板接近的,并在其基礎上進行修改,選擇的原則是:首先處理器相同,其次處理結構相同,然后是以太網等外圍接口。這里具體以S3C2410 arm920t處理器為例,具體分析其移植過程。
U-Boot-1.1.2版本已支持S3C2410,移植主要步驟如下:
4.1 下載U-Boot包并解壓到指定目錄
$ cd/u-boot
$ tarjxvfu-boot-1.1.2.tar.bz2
$ cdu-boot-1.1.2
4.2 配置Makefile文件
1) 在Makefile中修改交叉編譯工具鏈前綴CROSS_COMPILE:
CROSS_COMPILE = arm–linux–
2) 修改Makefile文件,開發(fā)板添加新的配置選項,使用已有的配置項目為例。
smdk2410_config : unconfig
@ . /mkconfig $(@ : _config = )armarm920tNULLs3c2410
參考上面兩行,添加下面兩行。
s3c2410_config : unconfig
@ . /mkconfig $(@ : _config = )armarm920tNULLS3C2410
4.3 移植U-Boot-1.1.2支持開發(fā)板
1) 在board目錄中建立s3c2410目錄,并復制smdk2410目錄中的內容。
$ cpsmdk2410/* s3c2410
并將部分文件重命名。如下:
board/s3c2410/config.mk
board/s3c2410/flash.c
board/s3c2410/s3c2410.c
board/s3c2410/Makefile
board/s3c2410/memsetup.S
board/s3c2410/u-boot.lds
2) 為開發(fā)板添加新的配置文件,再修改。
$ cpinclude/configs/smdk2410.h include/configs/s3c2410.h
如果是為一顆新的CPU移植,還要創(chuàng)建一個新的目錄存放CPU相關的代碼。
4.4 配置開發(fā)板
$ make s3c2410_config
4.5 編譯U-Boot
$ make
執(zhí)行make命令,編譯成功可以得到U-Boot映像。有些錯誤是跟配置選項有關系的,通常打開一些功能選項會帶來一些錯誤,一開始可以盡量跟參考板配置相同。
4.6 添加驅動或者功能選項
在能編譯通過的基礎上,還要實現U-Boot的以太網接口,Flash擦寫等。
4.7 調試U-Boot源代碼
直到U-Boot在開發(fā)板上正常啟動。
4.8 通過JTAG 電纜將目標板與計算機并口連接
燒寫U-Boot到flash,燒寫完成后,復位實驗板,串口終端就會顯示U-Boot的啟動信息。
5 結束語
本文較為詳細地介紹了U-Boot源代碼構成,以及為開發(fā)者提供了在ARM平臺下移植U-Boot的過程與方法,在移植過程中強調其可操作,步驟清晰,對嵌入式系統的Bootloader開發(fā)有重要的參考意義。
參考文獻:
[1] 李亞鋒,歐文盛.ARM嵌入式Linux系統開發(fā)從入門到精通[M].北京:清華大學出版社,2007.
[2] 馬忠梅,李善平.ARM Linux嵌入式系統教程[M].北京:北京航空航天大學出版社,2006.
[3] 孫紀坤,張小全.嵌入式Linux系統開發(fā)——基于ARM[M].北京:人民郵電出版社,2006.
[4] 李巖,榮盤祥.基于S3C44B0X嵌入式uCLinux系統原理及應用[M].北京:清華大學出版社,2005.