一、u-boot的儲存位置
u-boot 一般是放在硬體「本地」(電路板)的flash內,也有可能放在sd卡上,但是肯定不會放在記憶體或網路上。
二、u-boot的意義
u-boot是嵌入式linux作業系統中執行的第乙個程式(可將u-boot和核心看做是兩個不同的程式),其終極目的是引導載入核心進而使linux作業系統執行起來,。如果u-boot出現問題 ,作業系統就無法啟動,所以對於u-boot而言,其穩定性是第一位,執行速度是排在第二位的。
三、u-boot的啟動流程
1、彙編階段
a、初始化關鍵硬體:關閉看門狗、中斷、mmu和cache(快取)等,開啟時鐘、串列埠、flash和記憶體等。
目的:為了u-boot穩定性,關掉不必要或影響穩定性的硬體,開啟執行u-boot必須的硬體。即通過使u-boot執行單純化,從而保證u-boot的穩定性。
b、u-boot自搬移:u-boot自己將自己從flash搬移到記憶體(ram)執行。
目的:提高u-boot的執行速度。因為記憶體要比flash速度快。
2、c語言階段:
a、初始化大部分硬體;
b、將linux核心(kernel)從flash中「搬移」到記憶體中執行;
c、執行核心(kernel)。
四、u-boot啟動之「彙編階段」和「c語言階段」
1、u-boot啟動中「彙編階段」的必要性:
a、u-boot初始化硬體階段,要操作arm體系架構下的特殊功能暫存器,而特殊功能暫存器必有由組合語言訪問,c語言無法訪問。
b、如果使用c語言,在進入u-boot c程式的main函式之前需要提前把「棧」設定好,否者「棧」預設是0,無法執行c語言。所以u-boot啟動先要使用組合語言,把「棧」設定好,然後使用c語言。
2、u-boot啟動中「c語言階段」的重要性:
u-boot啟動執行過程能不能全用組合語言寫呢?原則上是可以的,但是組合語言晦澀難懂、邏輯演算法表達單一而且不易移植,所以在u-boot的啟動**中,能用c語言寫就用c語言,c語言寫不了的用組合語言寫(組合語言**佔u-boot 總**的10%左右。)。
移植U Boot之BootLoader簡介
一 bootloader的認識 bootloader的作用是初始化硬體裝置,準備好軟體環境,將作業系統核心複製到記憶體中,然後啟動核心。為了開發方便,工程師們增強了bootloader的功能,實際上,在生產的產品中並不需要這些功能,為了提高我們的開發效率而增加功能而已。bootloader跟硬體關係...
Openwrt移植IMX6之增加u boot支援
openwrt已經支援 imx6的 u boot,u boot位於 package boot uboot imx6,只需要針對自己的 u boot新增補丁,openwrt使用 quilt管理補丁 以下是製作補丁的全過程。參考文件 cat quiltrc quilt refresh args no t...
bootloader如何固化?
關於bootloader,先簡要地總結一下。經過了第乙個階段的學習,對bootloader有了乙個整體的認識,其實把它當作乙個功能單元就可以了,職責就是完成從硬體加電到作業系統核心執行之前的所有工作,這些工作包括硬體檢測 硬體初始化 載入kernel。這些工作怎麼完成呢?按照功能分為兩個部分比較合適...