www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]備注:分析的是OK210開(kāi)發(fā)板自帶的uboot_smdkv210,可能有些部分和其他版本不太一樣,但是原理都類(lèi)似。編譯u-boot的步驟makeforlinx_linux_configmake1212首先生成配置文件,然后編譯源碼,依次看看這些命令都干了些什

備注:分析的是OK210開(kāi)發(fā)板自帶的uboot_smdkv210,可能有些部分和其他版本不太一樣,但是原理都類(lèi)似。

編譯u-boot的步驟
makeforlinx_linux_configmake1212

首先生成配置文件,然后編譯源碼,依次看看這些命令都干了些什么事情

配置過(guò)程
#forlinxaddforlinx_linux_config:unconfig@$(MKCONFIG)$(@:_config=)arms5pc11xsmdkc110samsungs5pc110linux@echo"TEXT_BASE=0xcc800000">$(obj)board/samsung/smdkc110/config.mk12341234
清除上一次配置的文件

此目標(biāo)依賴(lài)unconfig目標(biāo),因此先調(diào)用unconfig的命令,命令如下

unconfig:@rm-f$(obj)include/config.h$(obj)include/config.mk$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep$(obj)board/$(VENDOR)/$(BOARD)/config.mk1234512345

執(zhí)行的操作主要是刪除上一次配置生成的配置文件。

開(kāi)始配置操作

在Makefile中以@開(kāi)頭的命令表示,在命令執(zhí)行的時(shí)候不在終端上打印信息。
$(MKCONFIG)變量在Makefile的101行有定義,如下:

MKCONFIG:=$(SRCTREE)/mkconfigexportMKCONFIG1212

$(@:_config=)這句話的意思是將 forlinx_linux_config的_config用空白代替只剩下forlinx_linux,
其中$(srcfiles:xxx=ccc)是Makefile的規(guī)則,用等號(hào)后邊的ccc替代srcfiles中等號(hào)前邊的xxx,
$(@) = $@代表目標(biāo),即在命令行輸入的make forlinx_linux_config中的forlinx_linux_config。
因此@$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110 linux
的意思就是調(diào)用u-boot根目錄的mkconfig腳本并將 forlinx_linux arm s5pc11x smdkc110 samsung s5pc110 linux作為參數(shù)傳遞給腳本。

mkconfig文件

在文件的頭部的注釋已經(jīng)交代了文件的作用和調(diào)用的格式

#Scripttocreateheaderfilesandlinkstoconfigure#U-Bootforaspecificboard.##Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]#1234512345

$0=mkconfig(腳本文件名)$1=Target(目標(biāo))forlinx_linux$2=Architecture(架構(gòu))arm$3=CPU(CPU型號(hào))s5pc11x$4=Board(開(kāi)發(fā)板名)smdkc110$5=VENDOR(生產(chǎn)商)samsung$6=SOC(芯片名)s5pc11012345671234567

最后一個(gè)linux是OK210的工程師自己添加的用于區(qū)別Android版本的內(nèi)核和linux的內(nèi)核,沒(méi)有什么實(shí)質(zhì)用途。(個(gè)人猜測(cè))

APPEND=no#Default:CreatenewconfigfileBOARD_NAME=""#Nametoprintinmakeoutputwhile[$#-gt0];docase"$1"in--)shift;break;;-a)shift;APPEND=yes;;-n)shift;BOARD_NAME="${1%%_config}";shift;;*)break;;esacdone12345678910111234567891011

接下來(lái)定義了兩個(gè)變量為后邊配置過(guò)程做準(zhǔn)備,用途注釋已經(jīng)寫(xiě)的很清楚,APPEND=no是表示需要重新創(chuàng)建配置文件的標(biāo)志。
再然后循環(huán):如果參數(shù)個(gè)數(shù)大于零就執(zhí)行循環(huán),然后再循環(huán)里判斷第一個(gè)參數(shù)(腳本可以有參數(shù)選項(xiàng)),很明顯都不符合,所以直接跳出循環(huán)。

["${BOARD_NAME}"]||BOARD_NAME="$1"[$#-lt4]&&exit1[$#-gt7]&&exit1echo"Configuringfor${BOARD_NAME}board..."123456123456

將BOARD_NAME賦值為forlinx_linux,然后判斷參數(shù)個(gè)數(shù),小于4大于7(一般情況為大于6應(yīng)該還是OK210的工程師修改了)就直接退出腳本,放棄執(zhí)行。

創(chuàng)建軟連接

接下來(lái)創(chuàng)建很多鏈接文件,這些操作是mkconfig腳本的主要工作,主要?jiǎng)?chuàng)建的鏈接文件如下:

if["$SRCTREE"!="$OBJTREE"];thenmkdir-p${OBJTREE}/includemkdir-p${OBJTREE}/include2cd${OBJTREE}/include2rm-fasmln-s${SRCTREE}/include/asm-$2asmLNPREFIX="../../include2/asm/"cd../includerm-rfasm-$2rm-fasmmkdirasm-$2ln-sasm-$2asmelsecd./includerm-fasmln-sasm-$2asmfi12345678910111213141516171234567891011121314151617

./include/asm --> asm-$2 (asm-arm)

#createlinkfors5pc11xSoCif["$3"="s5pc11x"];thenrm-fregs.hln-s$6.hregs.hrm-fasm-$2/archln-sarch-$3asm-$2/archfi12345671234567

regs.h --> $6.h (s5pc110.h)
asm-$2/arch --> arch-$3(arch-s5pc11x)

u-boot支持很多種開(kāi)發(fā)板,很多種類(lèi)型的CPU,所以要有一種通用得配置方式來(lái)方便移植;u-boot甚至linux內(nèi)核都采用了這種方式:針對(duì)不同的處理器或者板子都有自己的頭文件和文件夾,但是真正的編譯過(guò)程卻不直接使用,而是在配置階段創(chuàng)建這些頭文件或者文件夾的軟連接,并命名為一種通用的名字。在編譯的時(shí)候通過(guò)這些軟連接訪問(wèn)真正需要的文件。例如,在u-boot的include目錄下有一個(gè)asm的目錄,此目錄就是在配置完后生成的一個(gè)軟連接,當(dāng)配置的是arm架構(gòu)時(shí),此文件是asm-arm的軟連接。
創(chuàng)建make時(shí)用到的包含文件 config.mk
##CreateincludefileforMake#echo"ARCH=$2">config.mkecho"CPU=$3">>config.mkecho"BOARD=$4">>config.mk["$5"]&&["$5"!="NULL"]&&echo"VENDOR=$5">>config.mk["$6"]&&["$6"!="NULL"]&&echo"SOC=$6">>config.mk1234567891012345678910
創(chuàng)建開(kāi)發(fā)板特定的頭文件 config.h
##Createboardspecificheaderfile#if["$APPEND"="yes"]#Appendtoexistingconfigfilethenecho>>config.helse>config.h#Createnewconfigfilefiecho"/*Automaticallygenerated-donotedit*/">>config.h#forlinxaddif["$7"="linux"]thenecho"#defineCONFIG_LINUX_FORLINX1">>config.helseecho"#defineCONFIG_ANDROID_FORLINX1">>config.hfi#echo"#include">>config.h#forlinxchangeforlinuxandandroidecho"#include">>config.h12345678910111213141516171819202122231234567891011121314151617181920212223

因?yàn)樯线呉呀?jīng)把APPEND設(shè)置為NO,所以執(zhí)行> config.h即創(chuàng)建config.h頭文件,并向config.h中寫(xiě)入
/* Automatically generated - do not edit */
"#define CONFIG_LINUX_FORLINX 1
以及#include
同樣是OK210的工程師加入的
#include 即#include
注意:創(chuàng)建軟連接的操作全都是在u-boot根目錄的include子目錄中執(zhí)行的。

配置腳本mkconfig結(jié)束。

mkconfig腳本小結(jié)

一共創(chuàng)建了三個(gè)連接文件,
./include/asm --> asm-$2 (asm-arm)
regs.h --> $6.h (s5pc110.h)
asm-$2/arch --> arch-$3(asm-arm -> arch-s5pc11x)
以及include/config.mk和include/config.h,其中include/config.mk文件中記錄著u-boot的版本信息,include/config.h中包含了 configs/$1.h,此文件里記錄著是很多很多以CONFIG_開(kāi)頭的宏,是開(kāi)發(fā)板u-boot的主配置信息。

主Makefile版本號(hào)相關(guān)
VERSION=1PATCHLEVEL=3SUBLEVEL=4EXTRAVERSION=U_BOOT_VERSION=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_FILE=$(obj)include/version_autogenerated.h123456123456

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉