九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
u

u-boot分析 二


繼前一啟動(dòng)篇,此博文目的:

學(xué)習(xí)u-boot的目錄結(jié)構(gòu),從code架構(gòu)上對(duì)u-boot有一個(gè)整體的把握和了解。


一、學(xué)習(xí)u-boot,得問,什么是u-boot?

u-boot是一段開源的程序。

Universal Boot Loader,普遍的引導(dǎo)程序。是非常常用的一個(gè)引導(dǎo)程序,可作為主流系統(tǒng)的引導(dǎo)程序,如OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris等等,當(dāng)然同時(shí)也支持多種常見的cpu處理器,如MIPS、 x86、ARM、NIOS、XScale等。

u-boot是一種普遍用于嵌入式系統(tǒng)中的Bootloader,Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一小段程序,通過它,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射表,從而建立適當(dāng)?shù)能浻布h(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。Boot Loader的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤(e.g. NAND flash or eMMC)上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,即開始啟動(dòng)操作系統(tǒng)。系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的Boot Loader程序。


二、u-boot目錄結(jié)構(gòu)

u-boot source code,無論是從網(wǎng)絡(luò)下載(ftp://ftp.denx.de/pub/u-boot/)還是來自上一篇博客分享(http://pan.baidu.com/s/1kUhYmEj) ,第一次映入眼簾的風(fēng)景基本是這樣的:

u-boot目錄結(jié)構(gòu),從u-boot-2010.06版本開始,相比老版本

  1. cpu與lib_arch合二為一,命名arch
  2. 增加include folder
  3. 分離出通用庫(kù)文件夾lib

u-boot-2010.06及以后版本,基本目錄結(jié)構(gòu)如下表

Name Description
api 此目錄下存放u-boot向外提供的接口函數(shù)
arch 與體系結(jié)構(gòu)相關(guān)的代碼,核心folder。s5p4418是arm體系結(jié)構(gòu)。
board 此folder是根據(jù)不同的具體開發(fā)板而定制的代碼,代碼也不少
common 通用代碼,涵蓋各個(gè)方面,以命令行處理為主
disk 磁盤分區(qū)相關(guān)代碼
doc 常見功能和問題的說明文檔,一堆README開頭的文件
drivers 常用的設(shè)備驅(qū)動(dòng)程序,每個(gè)類型的設(shè)備驅(qū)動(dòng)占用一個(gè)子目錄
examples 示例程序
fs 文件系統(tǒng),支持嵌入式開發(fā)常見的fs(cramfs,ext2,ext3,jffs2,etc)
include 全局需要的頭文件定義在這兒
lib 通用庫(kù)文件
net 網(wǎng)絡(luò)相關(guān)的代碼,小型的協(xié)議棧
post Power On Self Test,開店自檢
Tools 輔助程序,用于編譯和檢查uboot目標(biāo)文件

自問,學(xué)習(xí)u-boot又是為何?
無可厚非,很大機(jī)會(huì)是為了移植u-boot到自己的開發(fā)板。
如此,我們就不得不再分析/arch,/board兩個(gè)folder

/arch

每一個(gè)folder對(duì)應(yīng)一個(gè)體系結(jié)構(gòu),如/arm便是本文涉及到的體系結(jié)構(gòu)。進(jìn)入/arch/arm


注,此圖截自博主分享的u-boot source code,該code已經(jīng)將不相干的arch folder移除,只留下了arm folder,以方便大家更好的學(xué)習(xí)。

  1. cpu子目錄對(duì)應(yīng)一種處理器的不同產(chǎn)品型號(hào)或者系列;
  2. include子目錄是處理器用到的頭文件;
  3. lib目錄對(duì)應(yīng)用到處理器公用的代碼;

繼續(xù)展開cpu文件夾,即/arch/arm/cpu/slsiap/s5p4418/

其中,start.s文件是整個(gè)u-boot代碼的入口點(diǎn)。

/board

此圖截自u(píng)-boot官網(wǎng)下載的source code,可見里面有非常多的現(xiàn)成的開發(fā)板配置,非常壯觀。而我們的示例并不包括在其內(nèi),所以,再回看博主在上一篇文章中分享的source code(http://pan.baidu.com/s/1kUhYmEj) 。為方便學(xué)習(xí),只留下了相關(guān)的文件和文件夾/u-boot/board/s5p4418/…

我們總結(jié)一下,從目錄結(jié)構(gòu)上看,u-boot包括兩個(gè)經(jīng)常需要?jiǎng)拥降?arch和/board目錄,和另外一些暫不會(huì)動(dòng)到的folders。作為初學(xué),或者還沒有涉及到u-boot裁剪的話,我們盡力搞清楚前兩個(gè)folder的code原理即可搞明白u(yù)-boot的工作流程。


最后,u-boot.lds

還有一個(gè)文件是必須要知道的,即u-boot/arch/arm/cpu/slsiap/u-boot.lds

u-boot.lds是ld程序也就是連接器的腳本文件,這個(gè)文件描述了如何連接目標(biāo)文件,ld程序會(huì)根據(jù)這個(gè)文件的指示按照需求把不同的目標(biāo)文件連接在一起生成供燒寫到開發(fā)板的image。


回溯本文,

  1. 什么是u-boot?
  2. u-boot目錄結(jié)構(gòu)?
  3. u-boot.lds是干什么的?

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
手把手教你移植U-boot系列(4)-U-boot移植方法
u-boot的Makefile分析 - 湛藍(lán)思微的blog | 嵌入式在線博客
mini6410之UBOOT移植
u-boot Makefile分析
Linux 2.6內(nèi)核Makefile分析
2.4內(nèi)核(arm版)Makefile分析
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服