首先引用wiki上的簡介:
u-boot 是一個主要用于嵌入式系統的引導加載程序,可以支持多種不同的計算機系統結構。
u-boot最先是由德國DENX軟件中心團隊開發,后續眾多有志于開放源碼bootloader移植工作的嵌入式開發人員將各個不同系列嵌入式處理器的移植工作不斷展開和深入,
以支持了更多的嵌入式操作系統的裝載與引導。
選擇u-boot的理由:
? 開放源碼;
? 支持多種嵌入式操作系統內核的引導,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;支持多個處理器系列,如PowerPC、ARM、x86、MIPS;
? 較高的可靠性和穩定性;高度靈活的功能設置,適合U-Boot調試、操作系統不同引導要求、產品發布等;
? 豐富的設備驅動源碼,如串口、以太網、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;
? 較為豐富的開發調試文檔與強大的網絡技術支持;
? 基于以上理由本篇文章對現在主流的armv8架構的u-boot啟動流程進行詳細分析,以便所有人快速學習和理解u-boot的工作流程。
u-boot源碼結構
這里只對一些常用的目錄進行說明:
? arch:各種架構的啟動初始化流程代碼,鏈接腳本等均在此目錄對應的架構中存放;
? board:包含了大部分廠商的board初始化代碼,基本平臺化相關的代碼都在對應的board目錄中,早期的一些board代碼在arch/xxx/xxx-+ mach中,現在基本不會放在arch目錄下面了;
? cmd:包含了大量實用的u-boot命令的實現,比如md,cp,cmp,tftp,fastboot,ext4load等命令的實現,我們也可以在此處添加自己實現的命令;
? common:包含了u-boot的核心初始化代碼,包括board_f,board_r,spl等一系列代碼;
? configs:包含了所有board的配置文件,可直接使用;
? drivers:大量驅動代碼的存放處;
? dts:編譯生成dtb,內嵌dtb到u-boot的編譯規則定義目錄;
? env:環境變量功能實現代碼;
? fs:文件系統讀寫功能的實現,里面包含了各類文件系統的實現;
? include:所有公用頭文件的存放路徑;
? lib:大量通用功能實現,提供給各個模塊使用;
? net:網絡相關功能的實現;
? scripts:編譯,配置文件的腳本文件存放處;
? tools:測試和實用工具的實現,比如mkimage的實現代碼在此處;
-
ARM
+關注
關注
134文章
9169瀏覽量
369222 -
嵌入式系統
+關注
關注
41文章
3625瀏覽量
129756 -
計算機
+關注
關注
19文章
7539瀏覽量
88643 -
Uboot
+關注
關注
4文章
125瀏覽量
28350
發布評論請先 登錄
相關推薦
嵌入式學習-ElfBoard ELF 1板卡- Uboot目錄結構介紹
I.MX6ULL-ElfBoard ELF1板卡- Uboot目錄結構介紹
uboot源碼沒有文件該怎么打補丁?
嵌入式學習丨4412開發板-uboot源碼-匯編-源碼分析(一)
使用yocto生成的uboot和工具,將uboot源碼拷貝出來編譯沒有uboot.imx文件是為什么?
基于Algorand源碼中agreement的模塊結構介紹
![基于Algorand<b class='flag-5'>源碼</b>中agreement的模塊<b class='flag-5'>結構</b><b class='flag-5'>介紹</b>](https://file.elecfans.com/web1/M00/A5/6A/o4YBAF1wgEiAelMsAABZCLFQS6c246.png)
評論