色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

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

嵌入式開發:Uboot配置文件mkconfig 時間:2019-03-27      來源:華清遠見

在主Makefile中定義mkconfig:

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

在主Makefile中使用mkconfig:

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

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

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

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

1. 參數檢查

代碼:11 ~ 12行

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

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

BOARD_NAME為空。

代碼:14 ~ 21行

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

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

代碼:23行

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

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

代碼:25 ~ 26行

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

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

如果 $# 大于 6 ,則也返回 1 。

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

2. 創建符號鏈接

代碼:30 ~ 118行

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

為什么要創建符號鏈接?這些符號鏈接文件的存在就是整個配置過程的核心,這些符號鏈接文件(文件夾)的主要作用是給頭文件包含等過程提供指向性連接。根本目的是讓 uboot 具有可移植性。

uboot 可移植性的實現原理:在 uboot 中有很多彼此平行的代碼,各自屬于各自不同的架構/ CPU /開發板,我們在具體到一個開發板的編譯時用符號連接的方式提供一個具體的名字的文件夾供編譯時使用。這樣就可以在配置的過程中通過不同的配置使用不同的文件,就可以正確的包含正確的文件。

代碼過程

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

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

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

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

總結:一共創建了 4 個符號鏈接。這 4 個符號鏈接將來在寫代碼過程中,頭文件包含時非常有用。譬如一個頭文件包含可能是:#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 寫入到 include/config.mk 文件中。

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

4. 創建 include/config.h 頭文件

代碼:131 ~ 最后

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

若 APPEND 為 yes,則將新內容追加到 config.h 中,否則創建一個新的 config.h 文件,最后打印兩行內容,追加到 config.h 中,執行成功后則退出。

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

x210_sd.h 文件會被用來生成一個 autoconfig.mk 文件,這個文件會被主 Makefile 引入,指導整個編譯過程。這里面的這些宏定義會影響我們 uboot 中大部分的 .c 文件中一些條件編譯的選擇,從而最終實現可移植性。

上一篇:C++整數溢出

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

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

回到頂部

主站蜘蛛池模板: 又爽又黄又无遮挡网站动态图 | 国产萌白酱喷水视频在线观看 | 国产精品va无码免费 | 奇米影视视频 | 少妇高潮水多太爽了动态图 | 免费看一区二区三区四区 | 一本一道AV无码中文字幕﹣百度 | 片毛片| 欧美成人A猛片在线观看 | 久在线中文字幕乱码免费 | 久久久亚洲欧洲日产国产成人无码 | 亚洲一区二区三区国产精华液 | 永久免费AV无码网站BT | 老妇高潮潮喷到猛进猛出 | 亚洲日韩蜜桃av在线观看 | 又大又粗又爽又黄的少妇 | 性虎精品无码AV导航 | 亚洲日韩亚洲另类激情文学一 | 中文字幕乱码一区二区免费 | 午夜中文字幕hd无码无删减 | 高黄暴H日本在线观看 | 这里只有久久精品 | 吃奶揉捏奶头高潮视频在线观看 | 天天射寡妇射 | 欧美成人精品一区二区三区色欲 | 免费看午夜无码福利专区 | 中文字幕一区二区三区免费视频 | 国产精品久久久久无码AV色戒 | 亚洲国产AV高清无码 | 精品久久久久久无码人妻A片 | WWW丫丫国产成人精品 | 色翁荡熄又大又硬又粗又视频软件 | 亚洲欧洲日产国码高潮 | 少妇被粗大的猛烈进出va视频 | 免费一对一刺激互动聊天软件 | 中文字幕一级毛片 | 国产av无码专区亚洲av紧身裤 | 白丝jk小仙女自慰喷白浆 | 波多野结衣一区二区在线 | 日本强伦片中文字幕免费看 | 人妻偷人VA精品国产旡码 |