uboot本質是一個裸機程序

***uboot在啓動時的作用:

主要是用來啓動操作系統的內核。

部署整個系統。

操作Flash等板子上硬件的驅動,初始化一部分硬件。

提供一個命令行界面供人進行交互操作。

PC機的啓動:上電後先執行BIOS程序(實際上就是Norflish),BIOS程序負責初始化DDR內存,初始化硬盤,再從硬盤之中將OS鏡像文件讀取到DDR之中,然後跳轉至DDR中去執行OS直到啓動。

嵌入式linux的啓動過程:部署和啓動效仿PC機的啓動。

uboot程序部署在Flash,操作系統(OS)部署在Flash之中,用Flash代替了硬盤。

內存掉電無作用,cpu掉電不工作。

上電之後先執行uboot,uboot負責初始化DDR,初始化Flash,然後將OS鏡像文件讀取到DDR之中,然後跳轉至DDR中去執行OS直到啓動。

對比:uboot————>BIOS Flash————>硬盤

1

2

3

4

5

6

7

8

9

10

11

12

***uboot解決的問題:

由於硬件的不同,所以uboot必須進相應的改變從而實現成功移植的目的。

uboot的終極目標是:引導操作系統內核啓動並且給內核進行傳參。

uboot的會在指定的位置爲linux內核準備一些啓動參數,內核啓動時在這個特定的位置去取uboot傳給他的參數,然後再內核之中解析這些參數,指導linux內核的啓動過程。

uboot的生命週期:uboot運行時別的程序不能同時運行,對CPU獨佔。

uboot一旦結執行束,不能再次回到uboot。

1

2

3

4

5

6

***uboot的工作方式:

本身是一個裸機程序,由若干個.c和.h文件組成,最後編譯後生成一個uoboot.bin鏡像文件。

有些程序需要交互,這就使得uboot有着和linux相似的shell,只是命令集不同而已。

1

2

***uboot的關鍵:命令和環境變量

命令:uboot的shell下可以被識別的各種命令。

uboot的環境變量和操作系統的環境變量工作原理和方式幾乎完全相同。

uboot的驅動管理幾乎完全和linux的驅動架構相同。

環境變量被認爲是系統的全局變量。

環境變量在程序運行時誕生,結束時死亡,被儲存在Flash中的一塊特殊的區域,可以通過程序更改其變量值。

1

2

3

4

5

***uboot的常見命令:

1.print/printenv:打印出系統所有的環境變量。

2.set name value :設置環境變量name爲value (僅僅只是更改了內存之中的環境變量)

3.保存環境變量的改變: saveenv/save (利用save映射至flash)

4.movi指令是一個命令集,

movi read用來讀取iNand的到DDR中,movie write 將DDR內容寫入iNand中。

1

2

3

4

5

***bootm:啓動內核時同時給內核傳參,而GO命令啓動內核時不用傳參。

GO命令本來不是爲了啓動內核設計的,其內部就是一個函數指針指向一個內存地址然後直接調用這個函數,本質就是PC直接跳轉至那個內存地址進行運行。GO命令可以被用在uboot中執行任何裸機程序。

***uboot的環境變量:

環境變量有兩份,一份在FLASH中,一份在內存之中。uboot啓動之後一次性從FLASH讀取所有的環境變量到DDR之中作爲環境變量的初始值,每次使用時都是使用DDR之中的環境變量。

兩個重要的環境變量:

1.bootcmd:自動運行命令設置。 uboot的在啓動時會倒數bootdelay秒,uboot開機啓動時實際上就是執行了bootcmd這個環境變量的值對應的命令集。

可以通過set bootcmd改變bootcmd的值,saveenv進行保存。

2.bootarge:uboot給kernel傳參。

1

2

3

4

5

6

7

***DDR和FLASH:

uboot的FLASH分區:對於FALSH進行分塊管理。

在uboot之中沒有操作系統,所以對於FLASH的管理必須事先使用分區界定。

分區的方法在移植之前必須事先設定好

FLASH的分區:(掉電存在)

uboot:從FLASH的起始地址開始存放,分區的大小一般設計爲512kb,或者1MB。

環境變量:緊貼着uboot進行存放,一般是32kb,1MB。

kernel:緊跟着環境變量存放,大小爲3~5MB。

rootfs(根文件系統):kernel啓動之後將自由分區內掛載到rootfs下使用。

注:uboot必須放在FLASH的開頭,其他分區可變。

DDR的分區:(掉電消失)

DDR內存的分區是在linux內核啓動之前進行部署管理整個內存空間。

查看原文 >>
相關文章