首先引用wiki上的簡介:
u-boot 是一個(gè)主要用于嵌入式系統(tǒng)的引導(dǎo)加載程序,可以支持多種不同的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。
u-boot最先是由德國DENX軟件中心團(tuán)隊(duì)開發(fā),后續(xù)眾多有志于開放源碼bootloader移植工作的嵌入式開發(fā)人員將各個(gè)不同系列嵌入式處理器的移植工作不斷展開和深入,
以支持了更多的嵌入式操作系統(tǒng)的裝載與引導(dǎo)。
選擇u-boot的理由:
? 開放源碼;
? 支持多種嵌入式操作系統(tǒng)內(nèi)核的引導(dǎo),如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS;
? 較高的可靠性和穩(wěn)定性;高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等;
? 豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;
? 較為豐富的開發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)絡(luò)技術(shù)支持;
? 基于以上理由本篇文章對(duì)現(xiàn)在主流的armv8架構(gòu)的u-boot啟動(dòng)流程進(jìn)行詳細(xì)分析,以便所有人快速學(xué)習(xí)和理解u-boot的工作流程。
u-boot源碼結(jié)構(gòu)
這里只對(duì)一些常用的目錄進(jìn)行說明:
? arch:各種架構(gòu)的啟動(dòng)初始化流程代碼,鏈接腳本等均在此目錄對(duì)應(yīng)的架構(gòu)中存放;
? board:包含了大部分廠商的board初始化代碼,基本平臺(tái)化相關(guān)的代碼都在對(duì)應(yīng)的board目錄中,早期的一些board代碼在arch/xxx/xxx-+ mach中,現(xiàn)在基本不會(huì)放在arch目錄下面了;
? cmd:包含了大量實(shí)用的u-boot命令的實(shí)現(xiàn),比如md,cp,cmp,tftp,fastboot,ext4load等命令的實(shí)現(xiàn),我們也可以在此處添加自己實(shí)現(xiàn)的命令;
? common:包含了u-boot的核心初始化代碼,包括board_f,board_r,spl等一系列代碼;
? configs:包含了所有board的配置文件,可直接使用;
? drivers:大量驅(qū)動(dòng)代碼的存放處;
? dts:編譯生成dtb,內(nèi)嵌dtb到u-boot的編譯規(guī)則定義目錄;
? env:環(huán)境變量功能實(shí)現(xiàn)代碼;
? fs:文件系統(tǒng)讀寫功能的實(shí)現(xiàn),里面包含了各類文件系統(tǒng)的實(shí)現(xiàn);
? include:所有公用頭文件的存放路徑;
? lib:大量通用功能實(shí)現(xiàn),提供給各個(gè)模塊使用;
? net:網(wǎng)絡(luò)相關(guān)功能的實(shí)現(xiàn);
? scripts:編譯,配置文件的腳本文件存放處;
? tools:測(cè)試和實(shí)用工具的實(shí)現(xiàn),比如mkimage的實(shí)現(xiàn)代碼在此處;
-
ARM
+關(guān)注
關(guān)注
134文章
9027瀏覽量
366489 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3551瀏覽量
129106 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7360瀏覽量
87633 -
Uboot
+關(guān)注
關(guān)注
4文章
125瀏覽量
28127
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論