日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uboot源码——主Makefile分析

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uboot源码——主Makefile分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。


一、配置編譯初體驗

1、uboot來源于官方(uboot官網下載),或者SoC官方(研發s5pv210芯片的公司推出的開發板,SMDKV210),或者具體的開發板的官方(深圳市九鼎科技,X210)。

  • 這里以針對x210開發板移植好的uboot進行配置、編譯和分析。

2、步驟

  • 將源碼解壓在適當的目錄下;
  • 配置,即在uboot的根目錄下執行make ?x210_sd_config
  • 編譯,即在uboot的根目錄下執行make(或者make -j2,或者make -s,前者多線程編譯,后者靜默編譯)。


二、uboot的源目錄分析

1、包括文件、文件夾。

2、主要的文件有uboot根目錄下的mkconfig,Makefile,前者負責uboot的編譯,后者負責編譯。

3、主要的文件夾有board,cpu、common、include等。board文件夾中每個子文件夾表示一個開發板。cpu文件夾中每個子文件夾都是一個SoC系列。



三、uboot的配置分析

1、配置,即確定所使用的文件夾、文件的路徑。

2、總結

(1)在uboot的根目錄下執行make ?x210_sd_config時,x210_sd_config是目標,在主Makefile中有如下代碼:

x210_sd_config : unconfig@$(MKCONFIG) $(@:_config=) arm s5pc11x x210 samsung s5pc110@echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/x210/config.mk
  • 調用MKCONFIG所表示的腳本,即uboot根目錄下的mkconfig腳本
  • 該腳本接收6個參數,分別是x210_sd,arm,s5pc11x,x210,samsung,s5pc110;
  • $(@:_config=)表示匹配后面帶有_config的參數,并取除去_config的部分,即取x210_sd。

(2)在mkconfig腳本(見博客http://blog.csdn.net/oqqhutu12345678/article/details/73166954)

  • 創建符號鏈接;
  • 創建include/config.mk文件注意這里的config.mk不是根目錄下的config.mk文件;
  • 創建include/config.h文件

(3)創建include/config.mk文件是為了讓主Makefile在第133行包含。(見四7)

(4)include/config.h文件中,僅有一行代碼:#include<configs/x210_sd.h>

  • 這里的configs是include文件夾里的一個子文件夾;
  • configs下的每個文件對應一個開發板的頭文件,它是一些宏定義配置文件,是移植時最主要的文件。
  • 其中x210_sd.h被用來生成autoconfig.mk文件。
  • autoconfig.mk文件被主Makefile引入,指導整個編譯過程,此文件中的宏會影響uboot中的大部分.C文件中的一些條件編譯的選擇,從而實現最終的可移植性。

四、uboot的主Makefile分析

1、uboot的版本號(24~29行)

VERSION = 1 PATCHLEVEL = 3 SUBLEVEL = 4 EXTRAVERSION = U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) VERSION_FILE = $(obj)include/version_autogenerated.h

2、(1)export ? HOSTARCH ?HOSTOS,HOSTARCH 、 HOSTOS分別表示主機的CPU架構和操作系統;

? ? ? (2) ?| ?表示管道?


3、靜默編譯:make -s

  • -s表示參數,silent執行(50~54行)

4、2種編譯管理方法(78~123行)

(1)原地編譯:編譯得到的文件和源文件在同一個目錄下,簡單但是會污染源目錄;

(2)單獨文件夾輸出的編譯:設置一個輸出目錄,承載編譯輸出結果。

(3)默認原地編譯。

(4)指定具體的輸出目錄方法

  • a、編譯時,用make O=輸出目錄;
  • b、或者先export BUILD_DIR=輸出目錄,然后編譯時直接make。

5、OBJTREE,SRCTREE,TOPDIR

  • 三者分別表示編譯后,.o文件存放的目錄的根目錄( \root\uboot\ ),源碼目錄的根目錄(\root\uboot\),頂層目錄。原地編譯時,前者和中者目錄是相等的。

6、MKCONFIG(101行):是Makefile中定義的一個變量,值為源碼根目錄下的mkconfig,而mkconfig是一個腳本。


7、$(obj)include/config.mk(主Makefile中的133行)

  • include/config.mk文件是在配置階段生成的,見本文的三2(2)。 此文件的內容如下:

ARCH = arm CPU = s5pc11x BOARD = x210 VENDOR = samsung SOC = s5pc110

  • 配置值來自主Makefile第2589行的配置項里的傳參;
  • 在主Makefile中的134行將這些變量export出來作為環境變量。

8、ARCH和CROSS_COMPILE(主Makefile中的136~182行)

  • 這兩個是環境變量;
  • ARCH定義為當前編譯的目標的CPU架構,在這里是ARM;
  • CROSS_COMPILE定義交叉編譯工具的前綴;


---------------------------------------------根目錄下的config.mk文件-----------------------------------------------------------------

見博客http://blog.csdn.net/oqqhutu12345678/article/details/73167054

9、include $(TOPDIR)/config.mk(主Makefile中的185行)

  • 這是根目錄下的config.mk文件,不是include/config.mk

10、編譯工具定義(根目錄下的config.mk文件中的94~107行)

AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm LDR = $(CROSS_COMPILE)ldr STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump RANLIB = $(CROSS_COMPILE)RANLIB

11、包含開發板配置項目(根目錄下的config.mk文件中的112行)

(1)代碼為

sinclude $(OBJTREE)/include/autoconf.mk(2)autoconf.mk是在配置中自動生成的,參見三2(4),它是一些宏,指導編譯進行方向。

(3)原料是include/configs/x210_sb.h,include/configs下的每個頭文件對應一個開發板。


12、鏈接腳本(根目錄下的config.mk文件中的142~149行)

(1)如果定義了CONFIG_NAND_U_BOOT,則鏈接腳本是u-boot-nand.lds,沒有定義則鏈接腳本為u-boot.lds。

  • uboot的最終鏈接地址是在Makefile中用-Ttext xxxx的形式來指定,好像和鏈接鏈接腳本沒有多大的關聯?

(2)實際在board\samsung\x210下的u-boot.lds。見博文http://blog.csdn.net/oqqhutu12345678/article/details/73166096


13、TEXT_BASE(在根目錄下的config.mk中的156~158行):為整個uboot鏈接時指定鏈接地址。


14、自動推導規則(在根目錄下的config.mk中的239~256行)。

-------------------------------------------------------------------------------------------------------------------------------------------------


15、在主Makefile中,第291行出現了整個Makefile的第一個目標ALL,其實我們make時,就是make ALL。



綜上所述,整個配置和編譯過程涉及的文件主要有:

主目錄下的Makefile文件

根目錄下的config.mk文件(被主Makefile文件調用)

根目錄下的mkconfig文件(配置階段的配置腳本)。


總結

以上是生活随笔為你收集整理的uboot源码——主Makefile分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区二区免费视频 | 91看毛片 | 在线观看深夜视频 | 天天射狠狠干 | 免费看黄色aaaaaa 片 | 日韩久久久久久久久久 | 中文资源在线播放 | 欧美综合一区二区 | 久久久精品视频一区 | 九九热这里有精品视频 | 成人免费黄色大片v266 | 看片一区 | 精品日韩| 国产伦精品一区二区三区妓女下载 | 欧美日韩免费网站 | 色www亚洲国产张柏芝 | 久久综合91 | 国产a黄| 国产淫语对白 | 99久久久国产精品无码性 | www.999热| 色一情一交一乱一区二区三区 | 亚洲精品一区二区三区四区五区 | 婷婷伊人五月天 | 精品欧美国产 | 伊人精品久久 | 伊人久久精品一区二区三区 | 国产精品videossex久久发布 | 51啪影院 | 亚洲欧美一区二区三区四区五区 | 日本久久高清视频 | 欧美jizz欧美性大全 | 夜夜操女人 | 操mm影院| 亚洲影院一区二区三区 | 老子影院午夜伦不卡大全 | 亚洲三级a | 国产一级二级三级视频 | 欧美性猛交aaaa片黑人 | 欧美日韩伊人 | 欧美日韩成人在线观看 | 国产精品人人做人人爽人人添 | 亚洲精品无码一区二区 | 国产第一页屁屁影院 | 波多野结衣中文字幕在线 | 欧美视频h | 91免费看片 | 无遮挡黄色 | 伊人色区| 亚洲欧美国产精品久久久久久久 | 不卡的中文字幕 | 人妻互换免费中文字幕 | 999黄色片 | 欧美午夜久久 | 国产精品99久久久久久久女警 | 精品一区二区三区久久 | 国产av自拍一区 | 狠狠干男人的天堂 | 欧美熟妇7777一区二区 | 美女脱了内裤喂我喝尿视频 | 热久久91 | 女同毛片一区二区三区 | 日本不卡一区在线 | melody在线高清免费观看 | 国产丝袜精品视频 | 91久久精品国产91久久性色tv | 三级视频在线 | 麻豆疯狂做受xxxx高潮视频 | 涩色网 | 国产女主播在线 | 嫩草影院国产 | 国产欧美熟妇另类久久久 | 久久久久久无码午夜精品直播 | 国产精品嫩草69影院 | 手机看片中文字幕 | 黄色同人网站 | 亚洲激情视频网 | 蜜臀视频在线播放 | 成人在线影片 | 在线观看av的网站 | 国产伦精品一区二区三区免费视频 | 欧美网站在线 | 人妻视频一区二区 | 一区二区三区在线不卡 | 女裸全身无奶罩内裤内衣内裤 | av中文字幕免费 | 香港三级日本三级三69 | 日本免费网址 | 丁香伊人网 | 国产女人精品 | 五月婷婷综合在线 | 日韩精品一区二区三区电影 | 欧美日韩人妻精品一区 | 青青草国内自拍 | 日日摸夜夜添狠狠添欧美 | 四虎影视永久免费观看 | 亚洲第一色 | 日本精品在线看 | gai免费观看网站外网 |