久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 嵌(qian)入式(shi)開(kai)發:Uboot配置文件mkconfig

嵌(qian)入(ru)式開發:Uboot配置文(wen)件mkconfig 時間:2019-03-27 ;     來源:華(hua)清(qing)遠(yuan)見(jian)

在主Makefile中定義mkconfig:

嵌入式開發,Uboot配置文件mkconfig

在(zai)主Makefile中使用mkconfig:

嵌入式開發,Uboot配置文件mkconfig

在(zai)第2行使用了mkconfig ,在(zai)這里(li)使用了Makefile中(zhong)的(de)(de)替(ti)(ti)(ti)換引用規則:類(lei)似常看到(dao)的(de)(de)例子obj=$(srcfile:%.c=%.o) ,將(jiang)所(suo)有的(de)(de).c文件(jian)替(ti)(ti)(ti)換成.o(這里(li)只是替(ti)(ti)(ti)換名字,不涉(she)及其他)。這里(li)的(de)(de)$(@:_config=)是一(yi)樣的(de)(de): @表示(shi)目標x210_sd_config,那么 $(@:_config=) 就(jiu)是將(jiang)x210_sd_config中(zhong)的(de)(de)_config替(ti)(ti)(ti)換為空,得到(dao)x210_sd。

經過以上分析可知第(di)2行的轉(zhuan)換結果為:mkconfig x210_sd arm s5pc11x x210 samsung s5pc110,該句話(hua)的意思(si)是執行mkconfig腳本文(wen)件,并被(bei)這個腳本文(wen)件傳遞6個參(can)數。參(can)數解析如(ru)下:

嵌入式開發,Uboot配置文件mkconfig

1. 參數檢查

代(dai)碼:11 ~ 12行

嵌入式開發,Uboot配置文件mkconfig

APPEND 表示是否要創建include/config.h文件(jian),在最后(hou)有了解。

BOARD_NAME為空(kong)。

代碼:14 ~ 21行

嵌入式開發,Uboot配置文件mkconfig

進入while循環(huan),先(xian)判(pan)斷(duan)條件是否(fou)滿足,即$#是否(fou)大于0,這里$#為6,滿足條件,因此進入循環(huan);然后在循環(huan)內(nei)$1作為switch的條件選擇執行,這里$1=x210_sd,因此匹(pi)配到 * ,所(suo)以執行break語(yu)句,直接跳出while循環(huan)。

代碼:23行

嵌入式開發,Uboot配置文件mkconfig

如果 BOARD_NAME 為真,則(ze)(ze)后面的不執(zhi)行,為假,則(ze)(ze)執(zhi)行 BOARD_NAME="$1",即此時 BOARD_NAME= x210_sd

代碼:25 ~ 26行

嵌入式開發,Uboot配置文件mkconfig

如果 $# 小于 4 ,則 exit 1 ( mkconfig 腳本返回 1 ),即退出。

如果 $# 大于 6 ,則(ze)也(ye)返回 1 。

所(suo)以:mkconfig 腳本傳(chuan)參只能是 4、5、6 ,如果大于 6 或(huo)者小(xiao)于 4 都不行。

2. 創建符號鏈接

代(dai)碼(ma):30 ~ 118行(xing)

嵌入式開發,Uboot配置文件mkconfig
嵌入式開發,Uboot配置文件mkconfig
嵌入式開發,Uboot配置文件mkconfig

為(wei)什么要(yao)創建符(fu)號鏈(lian)接?這些符(fu)號鏈(lian)接文(wen)(wen)件的(de)存在就是(shi)整個配(pei)置過程(cheng)的(de)核(he)心,這些符(fu)號鏈(lian)接文(wen)(wen)件(文(wen)(wen)件夾)的(de)主要(yao)作用(yong)是(shi)給(gei)頭文(wen)(wen)件包含(han)等過程(cheng)提供(gong)指向性(xing)連接。根本目的(de)是(shi)讓 uboot 具有可移植性(xing)。

uboot 可(ke)移植(zhi)性的(de)(de)(de)實現原(yuan)理:在 uboot 中有(you)很多彼此平行的(de)(de)(de)代(dai)碼,各(ge)(ge)自屬于各(ge)(ge)自不(bu)同的(de)(de)(de)架構/ CPU /開發板,我們在具體(ti)到(dao)一(yi)個開發板的(de)(de)(de)編(bian)譯(yi)時用符號連接的(de)(de)(de)方式提供(gong)一(yi)個具體(ti)的(de)(de)(de)名字的(de)(de)(de)文件夾(jia)供(gong)編(bian)譯(yi)時使用。這樣就可(ke)以在配置的(de)(de)(de)過程(cheng)中通過不(bu)同的(de)(de)(de)配置使用不(bu)同的(de)(de)(de)文件,就可(ke)以正(zheng)確的(de)(de)(de)包含(han)正(zheng)確的(de)(de)(de)文件。

代碼過程

(1)首先(xian)判斷源碼目(mu)錄(lu)和(he)輸出目(mu)錄(lu)是(shi)否(fou)是(shi)一(yi)致的。若一(yi)致,則(ze)(ze)執行 then 后的語句(ju);否(fou)則(ze)(ze),則(ze)(ze)執行 else 后的語句(ju)。在這里,不分析 then 后的語句(ju),分析 else 后的語句(ju)。創(chuang)建 include/asm 文(wen)件,并鏈接到(dao) include/asm-arm 文(wen)件。

(2)刪除(chu) include/asm-arm/arch 文件

(3)執(zhi)行第二個(ge) if 語句(ju),判斷條件是若 $6 字(zi)符串的長度為 0 或者 $6 為 NULL,則執(zhi)行 then 后的語句(ju),創建(jian)include/asm-arm/arch 文(wen)件,并鏈接到 include/asm-arm/arch-s5pc11x;否則,將執(zhi)行 else 后的語句(ju),創建(jian) include/asm-arm/arch 文(wen)件,并鏈接到 include/asm-arm/arch-s5pc110 。

(4)執(zhi)(zhi)行第三個 if 語句,在(zai)這里我(wo)們只看 "$3" = "s5pc11x" 的選項,其他(ta)的類(lei)似。判斷條件是 $3 為 s5pc11x 的話,則(ze)執(zhi)(zhi)行——創建(jian) include/regs.h 文件,并(bing)鏈接到 include/s5pc110.h 文件,刪除 include/asm-arm/arch ,然(ran)后(hou)再創建(jian) include/asm-arm/arch,并(bing)鏈接到 include/arch-s5pc11x 。 

總結:一共創(chuang)建了 4 個(ge)符號(hao)鏈接(jie)。這 4 個(ge)符號(hao)鏈接(jie)將來在寫代碼過(guo)程中,頭(tou)文(wen)件包含時非常有用。譬如一個(ge)頭(tou)文(wen)件包含可能是:#include <asm/xx.h> 。

3. 創建 include/config.mk 文件

代碼:120 ~ 130行

嵌入式開發,Uboot配置文件mkconfig

創建 include/config.mk 文件:將 ARCH=arm、CPU=s5pc11x、BOARD=x210、VENDOR=samsung、SOC=s5pc110 寫入到(dao) include/config.mk 文件中(zhong)。

創建的(de) include/config.mk 文(wen)件是為了讓主 Makefile 在 133 行去包含的(de)。

4. 創(chuang)建 include/config.h 頭文(wen)件

代(dai)碼:131 ~ 最后

嵌入式開發,Uboot配置文件mkconfig

若 APPEND 為 yes,則將(jiang)新內容(rong)追(zhui)加到 config.h 中(zhong),否則創建一個新的 config.h 文(wen)件,最后打(da)印兩(liang)行(xing)內容(rong),追(zhui)加到 config.h 中(zhong),執行(xing)成功后則退出。

include/config.h 文件(jian)(jian)(jian)里面的(de)(de)內(nei)容就(jiu)一行(xing) #include<configs/x210_sd.h>,這個頭文件(jian)(jian)(jian)是我們移植 x210 開發(fa)板時(shi),對開發(fa)板的(de)(de)宏定義配(pei)置文件(jian)(jian)(jian),這個文件(jian)(jian)(jian)是移植 x210_sd 時(shi)最主(zhu)要的(de)(de)文件(jian)(jian)(jian)。

x210_sd.h 文(wen)(wen)(wen)件(jian)會被(bei)用來(lai)生成一個(ge) autoconfig.mk 文(wen)(wen)(wen)件(jian),這(zhe)個(ge)文(wen)(wen)(wen)件(jian)會被(bei)主(zhu) Makefile 引入(ru),指導整個(ge)編譯過程。這(zhe)里面的(de)這(zhe)些宏定義會影響我(wo)們 uboot 中(zhong)大部分的(de) .c 文(wen)(wen)(wen)件(jian)中(zhong)一些條件(jian)編譯的(de)選擇,從而最(zui)終實(shi)現可移植性(xing)。

上一篇:C++整數溢出

下一篇:嵌入式學習:開源與閉源

熱點文章推薦
華清學員(yuan)就(jiu)業榜(bang)單
高薪學(xue)員經驗分(fen)享
熱點新(xin)聞推薦
前(qian)臺專線(xian):010-82525158 企業培訓洽談專線(xian):010-82525379 院校合作洽談專線(xian):010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部