久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

u-boot源碼配置原理分析

 昵稱7715138 2011-09-28

u-boot源碼配置原理分析

作者:楊碩,華清遠見嵌入式學(xué)院講師,。

u-boot的源代碼默認是不針對任何目標平臺的,當(dāng)我們要移植u-boot到一個特定的目標平臺時,,需要生成針對目標平臺的配置文件,。u-boot目前已經(jīng)支持的芯片可以在include/configs/下面找到。比如我們要編譯針對s3c2410芯片的u-boot.bin,,那么我們就需要在u-boot源碼根路徑下執(zhí)行:

make smdk2410_config

這樣我們的u-boot源碼就是針對smdk2410平臺了,。(注:smdk2410是三星專門為 其arm9芯片s3c2410做的reference board,即參考板,,國內(nèi)大部分基于s3c2410的開發(fā)板都是參考smdk2410來做的)

那么,,make smdk2410_config背后到底了做了什么工作呢?u-boot是如何生成針對smdk2410平臺的配置的,?下面我們就來分析這一過程,。由于make命令會調(diào)用Makefile,所以我們要分析這個Makefile里面相關(guān)的部分,。

smdk2410_config是u-boot源碼根路徑下的Makefile的一個目標,相關(guān)的代碼如下:

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

在執(zhí)行make smdk2410_config的時候會先執(zhí)行unconfig目標,,負責(zé)清理掉以前的配置信息,。然后就會執(zhí)行@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0,MKCONFIG是Makefile的一個變量,,定義如下:

MKCONFIG := $(SRCTREE)/mkconfig

可見,MKCONFIG就是源碼頂級目錄下的mkconfig文件,,這個文件是一個shell腳本程序,,所以在執(zhí)行make smdk2410_config的時候,系統(tǒng)就會執(zhí)行mkconfig這個腳本,,arm arm920t smdk2410 NULL s3c24x0則是傳遞個這個腳本的五個參數(shù)。

mkconfig這個腳本程序?qū)嶋H上就為我們生成了兩個文件,,一個是include/config.h,,另一個是include/config.mk。我們可以在make smdk2410_config之前看一下include下面是沒有這兩個文件的,。config.h里面只有一句話:

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

其實就是為我們包含了目標平臺的配置頭文件。另一個文件config.mk里面則有如下內(nèi)容:

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

其實這里面定義了四個變量,,分別是體系結(jié)構(gòu)(arm),、處理器核(arm920t),、目標板(smdk2410),、片上系統(tǒng)(s3c24x0),。

上面的這個include/config.mk文件會在Makefile里面被包含,對應(yīng)的代碼如下:

ifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))

# load ARCH, BOARD, and CPU configuration
        include $(OBJTREE)/include/config.mk
        export ARCH CPU BOARD VENDOR SOC

也就是說,,Makefile會判斷include下面有沒有config.mk這個文件,,如果有就包含這個文件,,這就相當(dāng)于在Makefile里面定義了ARCH,、CPU,、BOARD和SOC這四個變量,。這樣u-boot就知道自己是針對哪個目標平臺的了。

在u-boot頂層目錄下面也有一個config.mk文件,,這個文件里面主要定義了交叉編譯器選項及編譯規(guī)則:

# load other configuration
        include $(TOPDIR)/config.mk

那么這個config.mk和include下的config.mk就包含了我們編譯u-boot時的所有信息,。其實關(guān)鍵就是include下的config.mk文件,,Makefile包含這個文件以后就知道目標平臺的信息了,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多