01_uboot的介紹、作用。

一、uboot的歷史

1.uboot從哪裏來的

u-boot全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目,U-Boot的作用是系統引導。

這個項目起源於 Magnus Damm.在 8xx PowerPC 架構下寫的引導加載程序:8xxROM。1999 年十月,Wolfgang Denk 將項目移轉到 SourceForge.net,但 SourceForge.net 不允許數字開頭的項目名稱,所以改名爲PPCBoot。

uboot是Wolfgang Denk (德國人)在sourceforge.net的發起的開源項目,然後由整個網絡感興趣的人共同維護髮展而來的BootLoader。

2.uboot的發展歷程

自己使用的小開源項目->被更多人認可->被SOC廠商默認支持

經過多年的發展,uboot已經成爲業內bootloader標準,大部分的嵌入式設備默認支持uboot。

2.uboot的版本號

早期的版本號類似:uboot1.3.4
現在的版本號類似:uboot-2010.06

uboot的核心部分沒有怎麼變化,越新的版本支持的開發板越多。

二、爲什麼要有uboot

1.計算機系統的組成部件

典型的計算機系統:
1)PC:臺式機和筆記本…
2)嵌入式設備:手機、平板、遊戲機…
3)單片機:家用電器、空調…

計算機系統的運行時主要核心部件:
CPU+外部存儲器(Flash/硬盤) + 內部存儲器(DDR /SDRAM/SRAM)

2.幾種計算的啓動過程

1)PC機

①典型的PC機的部署:BIOS程序部署在PC機的主板上,操作系統部署在硬盤上。內存掉電無作用、CPU在掉電時不工作。

②啓動過程:PC上電後先執行BIOS(NorFlash)程序,BIOS負責初始化DDR內存,初始化硬盤。然後將硬盤中的OS鏡像讀取到DDR中,跳轉到DDR中去執行OS,直到啓動。

2)典型嵌入式linux系統啓動過程

嵌入式系統的部署和啓動是參考PC機的,只是有的設備不一樣(比如硬盤->falsh)。

①典型的嵌入式系統部署:uboot程序部署在Flash(能作爲啓動設備的flash)、OS部署在flash上,內存掉電無作用、CPU在掉電時不工作。

②啓動過程:嵌入式系統上電後先執行uboot、然後uboot負責初始化DDR,初始化flash,然後將OS從FLASH中讀取到DDR中,啓動OS。

3)android啓動過程

①android的啓動過程跟linux系統幾乎一樣,Uboot到OS啓動幾乎一樣,不一樣的地方是內核啓動後加載根文件系統不一樣。

3.uboot的作用

1)uboot主要作用是用來啓動操作系統內核
2)uboot負責部署整個計算機系統
3)uboot還有操作flash等的硬盤驅動
4)uboot提供命令行界面、人機交互

三、u-boot解決的問題

1.可開機直接啓動

1) 一般的SOC的啓動方式:SD卡啓動、NORFALSH啓動、NANDFALSH啓動…

2)uboot必須進行硬件相對應的代碼級別的更改和移植。uboot中的第一階段start.S文中處理這一塊。

2.能引導操作系統內核啓動並給內核傳參

1)linux內核設計爲可以被傳參,所以uboot中應事先給linux內核準備啓動參數。啓動的時候,內核去特定位置去讀取uboot準備的參數,指導linux的啓動過程。

2)uboot的最終目的就是啓動內核。

3.能提供系統部署功能

1)uboot必須能夠被人藉助而完成整個系統(包括uboot、kernel、rootfs等的鏡像)在Flash上的燒錄下載工作。

4.能進行SOC級的板級硬件管理

1)SoC級:SoC內部外設。 板級:SoC外面開發板的硬件(網卡、inand)

2)uboot中初始化了部分硬件,實現了部分硬件的控制。
uboot要實現刷機必須初始化iNAND
刷機時LCD顯示進度條必須初始化LCD
uboot要實現串口交互必須初始化串口

5.uboot的“生命週期”

1)uboot的入口和出口。
uboot的入口就是開機自動啓動,uboot的唯一出口就是啓動內核。

uboot還可以執行很多別的任務(譬如燒錄系統),但是其他任務執行完後都可以回到uboot的命令行繼續執行uboot命令,而啓動內核命令一旦執行就回不來了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章