在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      u-boot的Makefile分析

      作者: 時間:2018-09-11 來源:網(wǎng)絡(luò) 收藏

      U-BOOT是一個LINUX下的工程,在編譯之前必須已經(jīng)安裝對應(yīng)體系結(jié)構(gòu)的交叉編譯環(huán)境,這里只針對ARM,編譯器系列軟件為arm-linux-*。

      本文引用地址:http://www.biyoush.com/article/201809/388885.htm

      U-BOOT的下載地址: http://sourceforge.net/projects/
      我下載的是1.1.6版本,一開始在FTP上下載了一個次新版,結(jié)果編譯失敗。1.1.6是沒問題的。

      源碼結(jié)構(gòu)

      解壓就可以得到全部源程序。在頂層目錄下有18個子目錄,分別存放和管理不同的源程序。這些目錄中所要存放的文件有其規(guī)則,可以分為3類。
      第1類目錄與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān);
      第2類目錄是一些通用的函數(shù)或者驅(qū)動程序;
      第3類目錄是u-boot的應(yīng)用程序、工具或者文檔。

      u-boot的源碼頂層目錄說明

      目 錄 特 性 解 釋 說 明
      board 平臺依賴 存放電路板相關(guān)的目錄文件,
      例如:RPXlite(mpc8xx)、
      smdk2410(arm920t)、
      sc520_cdp(x86) 等目錄

      cpu 平臺依賴 存放CPU相關(guān)的目錄文件
      例如:mpc8xx、ppc4xx、
      arm720t、arm920t、 xscale、i386等目錄

      lib_ppc 平臺依賴 存放對PowerPC體系結(jié)構(gòu)通用的文件,
      主要用于實現(xiàn)PowerPC平臺通用的函數(shù)

      lib_arm 平臺依賴 存放對ARM體系結(jié)構(gòu)通用的文件,
      主要用于實現(xiàn)ARM平臺通用的函數(shù)

      lib_i386 平臺依賴 存放對X86體系結(jié)構(gòu)通用的文件,
      主要用于實現(xiàn)X86平臺通用的函數(shù)

      include 通用 頭文件和開發(fā)板配置文件,
      所有開發(fā)板的配置文件都在configs目錄下

      common 通用 通用的多功能函數(shù)實現(xiàn)
      lib_generic 通用 通用庫函數(shù)的實現(xiàn)
      net  通用 存放網(wǎng)絡(luò)的程序
      fs  通用 存放文件系統(tǒng)的程序
      post  通用 存放上電自檢程序
      drivers   通用 通用的設(shè)備驅(qū)動程序,主要有以太網(wǎng)接口的驅(qū)動
      disk   通用 硬盤接口程序
      rtc   通用 RTC的驅(qū)動程序
      dtt   通用 數(shù)字溫度測量器或者傳感器的驅(qū)動
      examples 應(yīng)用例程 一些獨立運行的應(yīng)用程序的例子,例如helloworld
      tools   工具 存放制作S-Record或者u-boot格式的映像等工具,
      例如mkimage

      doc   文檔 開發(fā)使用文檔

      u-boot的源代碼包含對幾十種處理器、數(shù)百種開發(fā)板的支持。可是對于特定的開發(fā)板,配置編譯過程只需要其中部分程序。這里具體以S3C2410 arm920t處理器為例,具體S3C2410處理器和開發(fā)板所依賴的程序,以及u-boot的通用函數(shù)和工具。

      編譯

      以smdk_2410板為例,編譯的過程分兩部:

      # make smdk2410_config
      # make

      頂層

      要了解一個LINUX工程的結(jié)構(gòu)必須看懂,尤其是頂層的,沒辦法,UNIX世界就是這么無奈,什么東西都用文檔去管理、配置。首先在這方面我是個新手,時間所限只粗淺地看了一些規(guī)則。

      以smdk_2410為例,順序Makefile大致的流程及結(jié)構(gòu)如下:

      1) Makefile中定義了源碼及生成的目標(biāo)文件存放的目錄,目標(biāo)文件存放目錄BUILD_DIR可以通過make O=dir 指定。如果沒有指定,則設(shè)定為源碼頂層目錄。一般編譯的時候不指定輸出目錄,則BUILD_DIR為空。其它目錄變量定義如下:

      #OBJTREE和LNDIR為存放生成文件的目錄,TOPDIR與SRCTREE為源碼所在目錄
      OBJTREE:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
      SRCTREE:= $(CURDIR)
      TOPDIR:= $(SRCTREE)
      LNDIR:= $(OBJTREE)
      exportTOPDIR SRCTREE OBJTREE

      2)定義變量MKCONFIG:這個變量指向一個腳本,即頂層目錄的mkconfig。

      MKCONFIG:= $(SRCTREE)/mkconfig
      export MKCONFIG

      在編譯U-BOOT之前,先要執(zhí)行

      # make smdk2410_config

      smdk2410_config是Makefile的一個目標(biāo),定義如下:

      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時,先執(zhí)行unconfig目標(biāo),注意不指定輸出目標(biāo)時,obj,src變量均為空,unconfig下面的命令清理上一次執(zhí)行make *_config時生成的頭文件和makefile的包含文件。主要是include/config.h 和include/config.mk文件。

      然后才執(zhí)行命令

      @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
      MKCONFIG 是頂層目錄下的mkcofig腳本文件,后面五個是傳入的參數(shù)。

      對于smdk2410_config而言,mkconfig主要做三件事:

      在include文件夾下建立相應(yīng)的文件(夾)軟連接,

      #如果是ARM體系將執(zhí)行以下操作:
      #ln -s asm-arm asm

      #ln -s arch-s3c24x0 asm-arm/arch
      #ln -s proc-armv asm-arm/proc

      生成Makefile包含文件include/config.mk,內(nèi)容很簡單,定義了四個變量:

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

      生成include/config.h頭文件,只有一行:

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


      上一頁 1 2 3 下一頁

      關(guān)鍵詞: Makefile u-boot 分析

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉