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

打開APP
userphoto
未登錄

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

開通VIP
u-boot源碼配置原理分析

u-boot源碼配置原理分析

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

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

make smdk2410_config

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

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

smdk2410_config是u-boot源碼根路徑下的Makefile的一個(gè)目標(biāo),相關(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的時(shí)候會(huì)先執(zhí)行unconfig目標(biāo),負(fù)責(zé)清理掉以前的配置信息。然后就會(huì)執(zhí)行@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0,MKCONFIG是Makefile的一個(gè)變量,定義如下:

MKCONFIG := $(SRCTREE)/mkconfig

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

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

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

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

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

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

上面的這個(gè)include/config.mk文件會(huì)在Makefile里面被包含,對(duì)應(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會(huì)判斷include下面有沒有config.mk這個(gè)文件,如果有就包含這個(gè)文件,這就相當(dāng)于在Makefile里面定義了ARCH、CPU、BOARD和SOC這四個(gè)變量。這樣u-boot就知道自己是針對(duì)哪個(gè)目標(biāo)平臺(tái)的了。

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

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

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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
u-boot的Makefile分析 - 湛藍(lán)思微的blog | 嵌入式在線博客
u-boot-1.1.6源碼淺析(二)
UBOOT 移植到2440(1)
u-boot Makefile分析
(轉(zhuǎn))GNU ARM匯編--(十七)u-boot的makefile和mkconfig解讀
UBoot的配置編譯過程
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服