uboot如何啟動核心
導讀 | ARM裝置如何透過uboot啟動 核心 |
(1)uboot的本質就是就是一個複雜點的裸機程式,和ARM部分寫的裸機程式沒有本質區別。
(2)核心本身也是一個裸機程式,和uboot、裸機程式無本質區別。要說不同的地方,那就是核心執行起來後,在軟體上分為核心層和應用層,分層後兩層的許可權不同,記憶體訪問和裝置操作的管理上更加精細(核心可以隨便訪問各種硬體,而應用程式只能被限制地訪問硬體和記憶體地址)。
(3)直觀上來看,uboot的映象是u-boot.bin,
的映象是zImage,這兩個東西其實都是兩個裸機程式映象。從系統的啟動角度來講,核心其實就是一個大的複雜點的裸機程式。
(1)一個完整的軟體+硬體的嵌入式系統,靜止時(未上電時)bootloader、kernel、rootfs等必須的軟體都以映象的形式儲存在啟動介質中(x210中是iNand/SD卡),執行時都是在DDR記憶體中執行的,與儲存介質無關。上面兩個狀態都是穩定狀態,第三個狀態是動態過程,即從靜止態到執行態的過程,也就是啟動過程。
(2)動態啟動過程就是一個從SD卡逐步搬移到DDR記憶體,並且執行啟動程式碼進行相關的硬體初始化和軟體架構的建立,最終達到執行時穩定狀態。
(3)靜止時,u-boot.bin、kernel、rootfs都在SD卡中,它們不可能隨意存在SD卡的任意位置,因此需要對SD卡進行一個分割槽,然後將各種映象存在不同的分割槽,這樣在啟動過程中uboot、核心就知道到哪裡去找。(uboot和kernel中的分割槽表必須一致,同時和SD卡的實際使用分割槽也要一致)
(1)uboot在第一階段中進行重定位時將第二階段(整個uboot)載入到DDR的0xC3E00000地址處,這個地址就是uboot的連結地址。
(2)核心也有類似要求,uboot啟動核心時,將核心從SD卡讀取放到DDR中(其實就是個重定位的過程),不能隨意放置,必須放在核心的連結地址處,否則啟動不起來。例如在x210中使用的核心連結地址是0x30008000。
(1)uboot是無條件啟動的,從零開始啟動的。
(2)核心是不能開機自動完全從零開始啟動的,核心啟動需要別人幫忙。uboot需幫助核心實現重定位(從SD卡到DDR),uboot還要給核心提供啟動引數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2710258/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux:uboot啟動流程分析Linuxboot
- uboot1: 啟動流程和移植框架boot框架
- Uboot連結指令碼與啟動流程boot指令碼
- 九鼎S5PV210開發板的SD卡啟動、uboot tftp升級核心映象SD卡bootFTP
- Linux 核心啟動流程Linux
- hi3531 SDK 編譯 uboot, 改動PHY地址, 改動 uboot 引數 .編譯boot
- 如何預設啟動到 Linux 系統的舊核心Linux
- uboot環境變數與核心MTD分割槽關係boot變數
- ubuntu修改預設啟動核心Ubuntu
- linux核心啟動引數Linux
- Linux核心啟動流程(簡介)Linux
- Linux核心Kernel啟動過程Linux
- Uboot功能boot
- uboot-uboot介紹-學習筆記boot筆記
- Util應用框架核心(二) - 啟動器框架
- 系統 核心啟動期間使用ftrace
- 2.12.uboot的移植2-從uboot官方標準uboot開始移植boot
- uboot 新增命令boot
- uboot移植rtcboot
- 嵌入式之uboot原始碼分析-啟動第二階段學習筆記(上篇)boot原始碼筆記
- 聊聊Dubbo(八):核心原始碼-容器啟動/停止原始碼
- CentOS 7.0 系統更改核心啟動順序CentOS
- CentOS如何啟動PostgreSQLCentOSSQL
- 如何啟動Redis ManagerRedis
- 如何向 Linux 核心提交驅動Linux
- uboot 解壓縮boot
- uboot 命令總結boot
- uboot 結構分析boot
- Uboot基本知識boot
- 認識Tomcat核心元件及其啟動引數Tomcat元件
- [譯] 如何手動啟動 Angular 程式Angular
- 如何使用kubelet 啟動命令限制Pod 啟動數量?
- windows啟動管理器未能啟動如何解決Windows
- 專案應如何啟動?
- 如何啟動專案?(轉)
- Linux 修改核心啟動預設引導順序Linux
- Linux4.1.15核心啟動流程簡單分析Linux
- Linux下VMware在更新完核心無法啟動Linux