1.U-Boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。U-Boot的做用是系統引導。U-Boot從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式與Linux內核很類似,事實上,很多U-Boot源碼就是根據相應的Linux內核源程序進行簡化而造成的,尤爲是一些設備的驅動程序,這從U-Boot源碼的註釋中能體現這一點。android
2.U-Boot不單單支持嵌入式Linux系統的引導,它還支持NetBS網絡
D, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操做系統。其目前要支持的目標操做系統是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。這是U-Boot中Universal的一層含義,另一層含義則是U-Boot除了支持PowerPC系列的處理器外,還能支持MIPS、 x8六、ARM、NIOS、XScale等諸多經常使用系列的處理器。這兩個特色正是U-Boot項目的開發目標,即支持儘量多的嵌入式處理器和嵌入式操做系統。就目前來看,U-Boot對PowerPC系列處理器支持最爲豐富,對Linux的支持最完善。工具
3.優點:post
選擇U-Boot的理由:
① 開放源碼;
② 支持多種嵌入式操做系統內核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;
③ 支持多個處理器系列,如PowerPC、ARM、x8六、MIPS;
④ 較高的可靠性和穩定性;
⑤ 高度靈活的功能設置,適合U-Boot調試、操做系統不一樣引導要求、產品發佈等;
⑥ 豐富的
設備驅動源碼,如串口、
以太網、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;
⑦ 較爲豐富的開發調試文檔與強大的
網絡技術支持;
4.目錄結構:
* board
目標板相關文件,主要包含SDRAM、FLASH驅動;
* common 獨立於處理器體系結構的通用代碼,如內存大小探測與故障檢測;
* cpu 與處理器相關的文件。如mpc8xx子目錄下含串口、網口、LCD驅動及中斷初始化等文件;
* driver 通用
設備驅動,如CFI FLASH驅動(目前對INTEL FLASH支持較好)
* doc U-Boot的說明文檔;
* examples可在U-Boot下運行的示例程序;如hello_world.c,timer.c;
*
include U-Boot頭文件;尤爲configs子目錄下與目標板相關的配置頭文件是移植過程當中常常要修改的文件;
* lib_xxx 處理器體系相關的文件,如lib_ppc, lib_arm目錄分別包含與PowerPC、ARM體系結構相關的文件;
* net 與網絡功能相關的
文件目錄,如bootp,nfs,tftp;
* post
上電自檢文件目錄。尚有待於進一步完善;
* tools 用於建立U-Boot S-RECORD和BIN
鏡像文件的工具;
5.工做模式
U-Boot的工做模式有啓動加載模式和下載模式。啓動加載模式是Bootloader的正常工做模式,嵌入式產品發佈時,Bootloader必須工做在這種模式下,Bootloader將
嵌入式操做系統從FLASH中加載到SDRAM中運行,整個過程是自動的。下載模式就是Bootloader經過某些通訊手段將
內核映像或
根文件系統映像等從PC機中下載到
目標板的FLASH中。用戶能夠利用Bootloader提供的一些命令接口來完成本身想要的操做。
下面分析下makefile文件