<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > u-boot的Makefile分析

u-boot的Makefile分析

作者: 時(shí)間:2018-09-11 來(lái)源:網(wǎng)絡(luò ) 收藏

U-BOOT是一個(gè)LINUX下的工程,在編譯之前必須已經(jīng)安裝對應體系結構的交叉編譯環(huán)境,這里只針對ARM,編譯器系列軟件為arm-linux-*。

本文引用地址:http://dyxdggzs.com/article/201809/388885.htm

U-BOOT的下載地址: http://sourceforge.net/projects/
我下載的是1.1.6版本,一開(kāi)始在FTP上下載了一個(gè)次新版,結果編譯失敗。1.1.6是沒(méi)問(wèn)題的。

源碼結構

解壓就可以得到全部源程序。在頂層目錄下有18個(gè)子目錄,分別存放和管理不同的源程序。這些目錄中所要存放的文件有其規則,可以分為3類(lèi)。
第1類(lèi)目錄與處理器體系結構或者開(kāi)發(fā)板硬件直接相關(guān);
第2類(lèi)目錄是一些通用的函數或者驅動(dòng)程序;
第3類(lèi)目錄是u-boot的應用程序、工具或者文檔。

u-boot的源碼頂層目錄說(shuō)明

目 錄 特 性 解 釋 說(shuō) 明
board 平臺依賴(lài) 存放電路板相關(guān)的目錄文件,
例如:RPXlite(mpc8xx)、
smdk2410(arm920t)、
sc520_cdp(x86) 等目錄

cpu 平臺依賴(lài) 存放CPU相關(guān)的目錄文件
例如:mpc8xx、ppc4xx、
arm720t、arm920t、 xscale、i386等目錄

lib_ppc 平臺依賴(lài) 存放對PowerPC體系結構通用的文件,
主要用于實(shí)現PowerPC平臺通用的函數

lib_arm 平臺依賴(lài) 存放對ARM體系結構通用的文件,
主要用于實(shí)現ARM平臺通用的函數

lib_i386 平臺依賴(lài) 存放對X86體系結構通用的文件,
主要用于實(shí)現X86平臺通用的函數

include 通用 頭文件和開(kāi)發(fā)板配置文件,
所有開(kāi)發(fā)板的配置文件都在configs目錄下

common 通用 通用的多功能函數實(shí)現
lib_generic 通用 通用庫函數的實(shí)現
net  通用 存放網(wǎng)絡(luò )的程序
fs  通用 存放文件系統的程序
post  通用 存放上電自檢程序
drivers   通用 通用的設備驅動(dòng)程序,主要有以太網(wǎng)接口的驅動(dòng)
disk   通用 硬盤(pán)接口程序
rtc   通用 RTC的驅動(dòng)程序
dtt   通用 數字溫度測量器或者傳感器的驅動(dòng)
examples 應用例程 一些獨立運行的應用程序的例子,例如helloworld
tools   工具 存放制作S-Record或者u-boot格式的映像等工具,
例如mkimage

doc   文檔 開(kāi)發(fā)使用文檔

u-boot的源代碼包含對幾十種處理器、數百種開(kāi)發(fā)板的支持??墒菍τ谔囟ǖ拈_(kāi)發(fā)板,配置編譯過(guò)程只需要其中部分程序。這里具體以S3C2410 arm920t處理器為例,具體S3C2410處理器和開(kāi)發(fā)板所依賴(lài)的程序,以及u-boot的通用函數和工具。

編譯

以smdk_2410板為例,編譯的過(guò)程分兩部:

# make smdk2410_config
# make

頂層

要了解一個(gè)LINUX工程的結構必須看懂,尤其是頂層的,沒(méi)辦法,UNIX世界就是這么無(wú)奈,什么東西都用文檔去管理、配置。首先在這方面我是個(gè)新手,時(shí)間所限只粗淺地看了一些規則。

以smdk_2410為例,順序Makefile大致的流程及結構如下:

1) Makefile中定義了源碼及生成的目標文件存放的目錄,目標文件存放目錄BUILD_DIR可以通過(guò)make O=dir 指定。如果沒(méi)有指定,則設定為源碼頂層目錄。一般編譯的時(shí)候不指定輸出目錄,則BUILD_DIR為空。其它目錄變量定義如下:

#OBJTREE和LNDIR為存放生成文件的目錄,TOPDIR與SRCTREE為源碼所在目錄
OBJTREE:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
SRCTREE:= $(CURDIR)
TOPDIR:= $(SRCTREE)
LNDIR:= $(OBJTREE)
exportTOPDIR SRCTREE OBJTREE

2)定義變量MKCONFIG:這個(gè)變量指向一個(gè)腳本,即頂層目錄的mkconfig。

MKCONFIG:= $(SRCTREE)/mkconfig
export MKCONFIG

在編譯U-BOOT之前,先要執行

# make smdk2410_config

smdk2410_config是Makefile的一個(gè)目標,定義如下:

smdk2410_config:unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

unconfig::
@rm -f $(obj)include/config.h $(obj)include/config.mk
$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp

顯然,執行# make smdk2410_config時(shí),先執行unconfig目標,注意不指定輸出目標時(shí),obj,src變量均為空,unconfig下面的命令清理上一次執行make *_config時(shí)生成的頭文件和makefile的包含文件。主要是include/config.h 和include/config.mk文件。

然后才執行命令

@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
MKCONFIG 是頂層目錄下的mkcofig腳本文件,后面五個(gè)是傳入的參數。

對于smdk2410_config而言,mkconfig主要做三件事:

在include文件夾下建立相應的文件(夾)軟連接,

#如果是ARM體系將執行以下操作:
#ln -s asm-arm asm

#ln -s arch-s3c24x0 asm-arm/arch
#ln -s proc-armv asm-arm/proc

生成Makefile包含文件include/config.mk,內容很簡(jiǎn)單,定義了四個(gè)變量:

ARCH = arm
CPU = arm920t
BOARD = smdk2410
SOC = s3c24x0

生成include/config.h頭文件,只有一行:

/* Automatically generated - do not edit */
#include config/smdk2410.h


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: Makefile u-boot 分析

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>