0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

uboot源碼結(jié)構(gòu)介紹

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:內(nèi)核新視界 ? 2023-12-07 11:16 ? 次閱讀

首先引用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、NetBSDVxWorks, 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)代碼在此處;

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    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
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    iTOP-3588開發(fā)板Android12源碼定制開發(fā)uboot開發(fā)

    iTOP-3588開發(fā)板Android12源碼定制開發(fā)uboot開發(fā)
    的頭像 發(fā)表于 06-06 11:46 ?1452次閱讀
    iTOP-3588開發(fā)板Android12<b class='flag-5'>源碼</b>定制開發(fā)<b class='flag-5'>uboot</b>開發(fā)

    嵌入式學(xué)習(xí)-ElfBoard ELF 1板卡- Uboot目錄結(jié)構(gòu)介紹

    我們將ELF1開發(fā)板資料包\\\\02-Linux 源代碼\\\\出廠內(nèi)核和uboot源碼\\\\uboot源碼\\\\uboot-imx-
    發(fā)表于 01-26 15:24

    I.MX6ULL-ElfBoard ELF1板卡- Uboot目錄結(jié)構(gòu)介紹

    我們將ELF1開發(fā)板資料包\\\\02-Linux 源代碼\\\\出廠內(nèi)核和uboot源碼\\\\uboot源碼\\\\uboot-imx-
    發(fā)表于 01-26 15:27

    uboot源碼怎么查看spiflash分區(qū)表

    請(qǐng)問 uboot 源碼怎么查看 spiflash 分區(qū)表在那個(gè)工程文件里面?因?yàn)槲覔Q了 spiflash
    發(fā)表于 06-21 07:27

    uboot源碼沒有文件該怎么打補(bǔ)丁?

    韋東山的執(zhí)行打補(bǔ)丁命令部分是打到u-boot-1.1.6/board/100ask24x0/100ask24x0.c文件上,但uboot源碼好像沒有這個(gè)文件,這時(shí)怎么打補(bǔ)丁的?
    發(fā)表于 08-08 05:45

    嵌入式學(xué)習(xí)丨4412開發(fā)板-uboot源碼-匯編-源碼分析(一)

    在第一章中,介紹了迅為4412 的 iROM、啟動(dòng)方式、源碼組成等;在第二章中,介紹uboot 編譯等。通過前面對(duì)編譯的詳細(xì)分析,了解到 uboot
    發(fā)表于 07-28 10:40

    請(qǐng)問uboot源碼什么時(shí)候釋放?

    版主好,我們買了兩塊imx8mm, 請(qǐng)問uboot源碼什么時(shí)候釋放,我們想研究一下ATF和TEE。感覺開放的資料教程很少,
    發(fā)表于 12-31 07:08

    使用yocto生成的uboot和工具,將uboot源碼拷貝出來編譯沒有uboot.imx文件是為什么?

    使用yocto生成的uboot和工具。將uboot源碼拷貝出來編譯,沒有uboot.imx文件,只有uboot.bin文件。
    發(fā)表于 01-07 08:05

    uboot源碼分析,思路還算清晰

    uboot源碼分析,思路還算清晰
    發(fā)表于 10-24 15:25 ?19次下載
    <b class='flag-5'>uboot</b><b class='flag-5'>源碼</b>分析,思路還算清晰

    uboot移植詳細(xì)解釋

    uboot移植詳細(xì)解釋
    發(fā)表于 10-26 10:08 ?29次下載
    <b class='flag-5'>uboot</b>移植詳細(xì)解釋

    Uboot中start.S源碼的指令級(jí)的詳盡解析

    Uboot中start.S源碼的指令級(jí)的詳盡解析
    發(fā)表于 10-30 08:47 ?28次下載
    <b class='flag-5'>Uboot</b>中start.S<b class='flag-5'>源碼</b>的指令級(jí)的詳盡解析

    基于Algorand源碼中agreement的模塊結(jié)構(gòu)介紹

    本篇主要介紹Algorand源碼中關(guān)于agreement的模塊結(jié)構(gòu)及業(yè)務(wù)邏輯架構(gòu),也是源碼中比較難以理解的地方,其它諸如節(jié)點(diǎn)、區(qū)塊、密碼、P2P網(wǎng)絡(luò)的
    發(fā)表于 09-05 11:25 ?874次閱讀
    基于Algorand<b class='flag-5'>源碼</b>中agreement的模塊<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>介紹</b>

    嵌入式Linux開發(fā)-uboot常用命令介紹(下篇)

    這篇文章是UBOOT命令介紹的下篇,接著上篇文章介紹剩下的幾個(gè)命令用法。
    的頭像 發(fā)表于 08-14 08:55 ?2101次閱讀

    怎么使用uboot引導(dǎo)應(yīng)用程序?

    uboot默認(rèn)是支持執(zhí)行應(yīng)用程序的,就像引導(dǎo)內(nèi)核一樣,我們也可以自己寫一個(gè)應(yīng)用程序,讓uboot啟動(dòng)時(shí)引導(dǎo)。
    的頭像 發(fā)表于 02-17 16:01 ?1454次閱讀
    怎么使用<b class='flag-5'>uboot</b>引導(dǎo)應(yīng)用程序?

    uboot的啟動(dòng)BL1和BL2兩個(gè)階段介紹

    之前對(duì)這個(gè)uboot源碼了解有些許遺忘。最近做AVB校驗(yàn),需要uboot到kernel的這個(gè)過程。這里再復(fù)習(xí)一下。 與大多數(shù)BootLoader一樣,uboot的啟動(dòng)過程分為BL1和
    的頭像 發(fā)表于 12-04 17:53 ?2786次閱讀