新聞資訊
技術解析
uboot的基礎知識與linux啟動相關知識
2018-12-20 10:06:37
摘要:uboot本質是一個裸機程序

uboot在啟動時的作用:

主要是用來啟動操作系統(tǒng)的內核。

部署整個系統(tǒng)。

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

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

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

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

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

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

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

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

uboot解決的問題:

由于硬件的不同,所以uboot必須進相應的改變從而實現(xiàn)成功移植的目的。

uboot的終極目標是:引導操作系統(tǒng)內核啟動并且給內核進行傳參。

uboot的會在指定的位置為linux內核準備一些啟動參數(shù),內核啟動時在這個特定的位置去取uboot傳給他的參數(shù),然后再內核之中解析這些參數(shù),指導linux內核的啟動過程。

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

uboot一旦結執(zhí)行束,不能再次回到uboot。

uboot的工作方式:

本身是一個裸機程序,由若干個.c和.h文件組成,最后編譯后生成一個uoboot.bin鏡像文件。 有些程序需要交互,這就使得uboot有著和linux相似的shell,只是命令集不同而已。

uboot的關鍵:命令和環(huán)境變量

命令:uboot的shell下可以被識別的各種命令。 uboot的環(huán)境變量和操作系統(tǒng)的環(huán)境變量工作原理和方式幾乎完全相同。 uboot的驅動管理幾乎完全和linux的驅動架構相同。 環(huán)境變量被認為是系統(tǒng)的全局變量。 環(huán)境變量在程序運行時誕生,結束時死亡,被儲存在Flash中的一塊特殊的區(qū)域,可以通過程序更改其變量值。

uboot的常見命令:

1.print/printenv:打印出系統(tǒng)所有的環(huán)境變量。

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

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

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

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

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

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

DDR和FLASH:

uboot的FLASH分區(qū):對于FALSH進行分塊管理。

在uboot之中沒有操作系統(tǒng),所以對于FLASH的管理必須事先使用分區(qū)界定。

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

FLASH的分區(qū):(掉電存在)

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

環(huán)境變量:緊貼著uboot進行存放,一般是32kb,1MB。

kernel:緊跟著環(huán)境變量存放,大小為3~5MB。

rootfs(根文件系統(tǒng)):kernel啟動之后將自由分區(qū)內掛載到rootfs下使用。

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

DDR的分區(qū):(掉電消失)

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

USA-IDC為您提供免備案服務器 0元試用
立即聯(lián)系在線客服,即可申請免費產品試用服務
立即申請