第二階段
u-boot 全稱 universal boot loader,是遵循gpl條款的開放原始碼專案。 u-boot 是乙個主要用於嵌入式系統的引導引導程式,可以在x86計算機上建構,x86必須安裝有可支援特定平台結構的互動發展gnu工具鏈。主線目標功能是從flash中讀出核心,放到記憶體中,啟動核心。為了要實現這個功能,u-boot分為兩個階段,主要在start.s檔案中。
模組框架結構
cpu與處理器相關的檔案。每個子目錄中都包括cpu.c和interrupt.c、start.s、u-boot.lds
cpu.c:初始化cpu、設定指令cache和資料cache等
interrupt.c:設定系統的各種中斷和異常
start.s:是u-boot啟動時執行的第乙個檔案,它主要做最早期的系統初始化,**重定向和設定系統堆疊,為進入u-boot第二階段的c程式奠定基礎
board
已經支援的所有開發板相關檔案,其中包含sdram初始化**、flash底層驅動、板級初始化檔案。
其中的config.mk檔案定義了text_base,也就是**在記憶體的實際位址,非常重要。
common
與處理器體系結構無關的通用**,u-boot的命令解析**/common/command.c、所有命令的上層**cmd_.c、u-boot環境變數處理**env_.c等都位於該目錄下
drivers
包含幾乎所有外圍晶元的驅動,網絡卡、usb、串列埠、lcd、nand flash等等
disk
fsnet
支援cpu無關的重要子系統:
磁碟驅動的分割槽處理**
檔案系統:fat、jffs2、ext2等
網路協議:nfs、tftp、rarp、dhcp等等
include
標頭檔案,包括各cpu的暫存器定義,檔案系統、網路等等
configs子目錄下的檔案是與目標板相關的配置標頭檔案
docu-boot的說明文件,在修改配置檔案的時候可能用得上
lib_arm
處理器體系相關的初始化檔案
比較重要的是其中的board.c檔案,幾乎是所有架構的u-boot第二階段**入口函式和相關初始化函式存放的地方。
apiexamples
外部擴充套件應用程式的api和範例
nand_spl
onenand_ipl
post
一些特殊構架需要的啟動**和上電自檢程式**
libfdt
支援平坦裝置樹(flattened device trees)的庫檔案
tools
編譯s-record或u-boot映像等相關工具,製作bootm引導的核心映像檔案工具mkimage原始碼就在此
makefile
makeall
config.mk
rules.mk
mkconfig
控制整個編譯過程的主makefile檔案和規則檔案
changelog
changelog-before-u-boot-1.1.5
copying
credits
maintainers
readme
一些介紹性的文件、版權說明
備註:在第一階段進行的硬體初始化一般包括:關閉 watchdog、關中斷、設定 cpu的速度和時鐘頻率、 ram 初始化等。
output_format("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
output_arch(arm)
entry(_start)
sections
......
通過u-boot.lds,該檔案鏈結到第一階段的入口entry(_start):
_start 入口函式在start.s檔案中(arch目錄是arm公司設計的核心**,即cpu部分的**。)
u-boot/arch/arm/cpu/armv7目錄下start.s檔案是整個u-boot的入口。也就是說,整個u-boot執行的第一句**就是從start.s的第一句開始的。
start.s的詳細分析可參考
a. uboot啟動後自動執行列印出很多資訊(這些資訊就是uboot在第一和第二階段不斷進行初始化時,列印出來的資訊)。然後uboot進入了倒數bootdelay秒然後執行bootcmd對應的啟動命令。
b. 如果使用者沒有干涉則會執行bootcmd進入自動啟動核心流程(uboot就死掉了);此時使用者可以按下回車鍵打斷uboot的自動啟動進入uboot的命令列下。然後uboot就一直工作在命令列下。
c. uboot的命令列就是乙個死迴圈,迴圈體內不斷重複:接收命令、解析命令、執行命令。
uboot啟動流程概述 uboot啟動流程
u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...
u boot啟動流程
uboot啟動流程分析 華清遠見嵌入式學院講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections ali...
uboot啟動流程
華清遠見嵌入式學院 講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections align 4 rodata...