1. 程式人生 > >作業系統的中uboot和核心的意義

作業系統的中uboot和核心的意義

1.uboot到底是什麼

1.1總結:uboot到底是幹嘛的
(1)uboot主要作用是用來啟動作業系統核心。
(2)uboot還要負責部署整個計算機系統。
(3)uboot中還有操作Flash等板子上硬碟的驅動。
(4)uboot還得提供一個命令列介面供人來操作。

1.2、uboot的可移植性的正確理解
(1)uboot就是universal bootloader(通用的啟動程式碼),通用的意思就是在各種地方都可以用。所以說uboot具有可移植性。

(2)uboot具有可移植性並不是說uboot在哪個開發板都可以隨便用,而是說uboot具有在原始碼級別的移植能力,可以針對多個開發板進行移植,移植後就可以在這個開發板上使用了。

1.3.uboot必須解決哪些問題

1.3.1、自身可開機直接啟動
(1)一般的SoC都支援多種啟動方式,譬如SD卡啟動、NorFlash啟動、NandFlash啟動等·····uboot要能夠開機啟動,必須根據具體的SoC的啟動設計來設計uboot,能初始化部分DDR,這樣核心才有地方去執行。
(2)uboot必須進行和硬體相對應的程式碼級別的更改和移植,才能夠保證可以從相應的啟動介質啟動。uboot中第一階段的start.S檔案中具體處理了這一塊。
1.3.2、能夠引導作業系統核心啟動並給核心傳參
(1)uboot的終極目標就是啟動核心。
(2)linux核心在設計的時候,設計為可以被傳參。也就是說我們可以在uboot中事先給linux核心準備一些啟動引數放在記憶體中特定位置然後傳給核心,核心啟動後會到這個特定位置去取uboot傳給他的引數,然後在核心中解析這些引數,這些引數將被用來指導linux核心的啟動過程。
1.3.3

、能提供系統部署功能
(1)uboot必須能夠被人藉助而完成整個系統(包括uboot、kernel、rootfs等的映象)在Flash上的燒錄下載工作。
(2)裸機教程中刷機(ARM裸機第三部分)就是利用uboot中的fastboot功能將各種映象燒錄到iNand中,然後從iNand啟動。
1.3.4、能進行soc級和板級硬體管理
(1)uboot中實現了一部分硬體的控制能力(uboot中初始化了一部分硬體),因為uboot為了完成一些任務必須讓這些硬體工作。譬如uboot要實現刷機必須能驅動iNand,譬如uboot要在刷機時LCD上顯示進度條就必須能驅動LCD,譬如uboot能夠通過串列埠提供操作介面就必須驅動串列埠。譬如uboot要實現網路功能就必須驅動網絡卡晶片。
(2)SoC級(譬如串列埠)就是SoC內部外設,板級就是SoC外面開發板上面的硬體(譬如網絡卡、iNand)

1.4、uboot啟動核心

(1)啟動核心第一步:載入核心到DDR中uboot要啟動核心,分為2個步驟:第一步是將核心映象從啟動介質中載入到DDR中,

(2)第二步是去DDR中啟動核心映象。(核心程式碼根本就沒考慮重定位,因為核心知道會有uboot之類的把自己載入到DDR中連結地址處的,所以核心直接就是從連結地址處開始執行的)


2、什麼核心

2.1、核心啟動需要必要的啟動引數
(1)uboot是無條件啟動的,從零開始啟動的。
(2)核心是不能開機自動完全從零開始啟動的,核心啟動要別人幫忙。uboot要幫助核心實現重定位(從SD卡到DDR),uboot還要給核心提供啟動引數

2.2、核心和發行版的區別
(1)區別:核心是作業系統核心的簡稱,核心負責實現作業系統的核心功能(資源管理模組,譬如記憶體管理、排程系統······),核心不包括應用程式。所以說只有核心人是沒法用的,因為人做任何事情都是通過相應的應用程式來完成的。所以賣作業系統的人把核心和一些常用的應用程式打包在一起提供給普通使用者,這就是作業系統的發行版(也就是普通意義上的作業系統)。
(2)核心只有一個。www.kernel.org
(3)發行版有很多。譬如ubuntu、redhat、suse、centos······