<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ARM編譯器介紹

          作者: 時(shí)間:2012-03-04 來(lái)源:網(wǎng)絡(luò) 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/149526.htm

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

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

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

          u-boot的源碼頂層目錄說(shuō)明

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

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

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

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

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

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

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

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

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

          編譯

          以smdk_2410板為例,編譯的過(guò)程分兩部:

          # make smdk2410_config
          # make

          頂層Makefile分析

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

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

          1) Makefile中定義了源碼及生成的目標(biāo)文件存放的目錄,目標(biāo)文件存放目錄BUILD_DIR可以通過(guò)make O=dir 指定。如果沒有指定,則設(shè)定為源碼頂層目錄。一般編譯的時(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:這個(gè)變量指向一個(gè)腳本,即頂層目錄的mkconfig。

          MKCONFIG:= $(SRCTREE)/mkconfig
          export MKCONFIG

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

          # make smdk2410_config

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

          然后才執(zhí)行命令

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

          對(duì)于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)容很簡(jiǎn)單,定義了四個(gè)變量:

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

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

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

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: 介紹 編譯器 ARM

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();