娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

u-boot2010.03 配置編譯目標(biāo)分析

發(fā)布者:SereneMelody最新更新時(shí)間:2024-11-07 來(lái)源: cnblogs關(guān)鍵字:u-boot  配置  編譯 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

該系列教程會(huì)根據(jù)uboot的編譯過(guò)程進(jìn)程分析,如何編譯,那么將會(huì)如何分析這些流程
此處我還沒(méi)有增加6410的支持,先看6400 的過(guò)程,因?yàn)檫€沒(méi)有到增加的地方,分析完整個(gè)流程之后,會(huì)寫如何移植uboot到s3c6410的。知道了工作的流程,再去移植會(huì)事半功倍的。

拿到uboot首先會(huì)修改編譯的目標(biāo):

make smdk6400_config

對(duì)執(zhí)行如下的目標(biāo)

  1. #######################################################  

  2. ## ARM1176 Systems   

  3. #######################################################  

  4. smdk6400_noUSB_config     

  5. smdk6400_config :   unconfig  

  6.     @mkdir -p $(obj)include $(obj)board/samsung/smdk6400  

  7.     @mkdir -p $(obj)nand_spl/board/samsung/smdk6400  

  8.     @echo '#define CONFIG_NAND_U_BOOT' > $(obj)include/config.h  

  9.     @if [ -z '$(findstring smdk6400_noUSB_config,$@)' ]; then      

  10.         echo 'RAM_TEXT = 0x57e00000' >> $(obj)board/samsung/smdk6400/config.tmp;  

  11.         $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;    

  12.     else       

  13.         echo 'RAM_TEXT = 0xc7e00000' >> $(obj)board/samsung/smdk6400/config.tmp;  

  14.         $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx;     

  15.     fi  

  16.     @echo 'CONFIG_NAND_U_BOOT = y' >> $(obj)include/config.mk  


這里主要看的是如下2句

  1. echo 'RAM_TEXT = 0x57e00000' >> $(obj)board/samsung/smdk6400/config.tmp;  

  2. $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;    

首先會(huì)將RAM_TEXT = 0x57e00000 寫入到$(obj)board/samsung/smdk6400/config.tmp 這個(gè)文件內(nèi)
$(obj) 是目標(biāo)的編譯生成的路勁或者是當(dāng)前UBOOT的目錄,這就要看你有沒(méi)有指定編譯目錄了

重點(diǎn)分析$(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;
會(huì)調(diào)用$(MKCONFIG) 而 MKCONFIG := $(SRCTREE)/mkconfig
也就是說(shuō)最終會(huì)變成如下形式
mkconfig smdk6400 arm arm1176 smdk6400 samsung s3c64xx

下面就得進(jìn)入mkconfig的代碼內(nèi)進(jìn)行分析。。記錄上面的參數(shù),請(qǐng)大家打開對(duì)應(yīng)的文件,一步步的看著然后分析

  1. #!/bin/sh -e   

  2.   

  3. # Script to create header files and links to configure  

  4. # U-Boot for a specific board.   

  5. #   

  6. # Parameters: Target Architecture CPU Board [VENDOR] [SOC]  

  7. #   

  8. # (C) 2002-2006 DENX Software Engineering, Wolfgang Denk   

  9. #  

這里有一句說(shuō)明了參數(shù)的意思Parameters: Target Architecture CPU Board [VENDOR] [SOC]
對(duì)應(yīng)我們傳遞進(jìn)來(lái)的參數(shù)看到為:
Parameters:
1:Target = smdk6400
2:Architecture = arm
3:CPU = arm1176
4:Board = smdk6400
5:[VENDOR] = samsung
6:[SOC] = s3c64xx

  1. APPEND=no   # Default: Create new config file  

  2. BOARD_NAME=''   # Name to print in make output  

  3. TARGETS=''  

  4.   

  5. while [ $# -gt 0 ] ; do  

  6.     case '$1' in  

  7.         --) shift ; break ;;  

  8.         -a) shift ; APPEND=yes ;;  

  9.         -n) shift ; BOARD_NAME='${1%%_config}' ; shift ;;  

  10.         -t) shift ; TARGETS='`echo $1 | sed 's:_: :g'` ${TARGETS}' ; shift ;;  

  11.         *) break ;;  

  12.     esac  

  13. done  

這里顯示沒(méi)有沒(méi)有特殊的標(biāo)志,所以就不需要了

  1. [ '${BOARD_NAME}' ] || BOARD_NAME='$1'  

  2.   

  3. [ $# -lt 4 ] && exit 1  

  4. [ $# -gt 6 ] && exit 1  

  5.   

  6. if [ '${ARCH}' -a '${ARCH}' != '$2' ]; then  

  7.     echo 'Failed: $ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}' 1>&2  

  8.     exit 1  

  9. fi  

  10.   

  11. echo 'Configuring for ${BOARD_NAME} board...'  

  12. /*這句就是我們看到的配置信息了*/  


下面開始創(chuàng)建針對(duì)目標(biāo)平臺(tái)的連接目錄了。uboot是這么編譯的,將選中的平臺(tái)相關(guān)的文件夾,通過(guò)軟連接的方式,到一個(gè)指定的目錄
那么編譯的時(shí)候,就只要去這個(gè)統(tǒng)一的指定目錄下找,就能針對(duì)不同的平臺(tái)編譯了。具體看下下面的建立過(guò)程

  1. #   

  2. # Create link to architecture specific headers  

  3. #   

  4. /* 這里表示目標(biāo)目錄跟源碼目錄不一致,建立相應(yīng)的目錄,由于我沒(méi)有指定目標(biāo)目錄,所以執(zhí)行else部分 */  

  5. if [ '$SRCTREE' != '$OBJTREE' ] ; then  

  6.     mkdir -p ${OBJTREE}/include  

  7.     mkdir -p ${OBJTREE}/include2  

  8.     cd ${OBJTREE}/include2  

  9.     rm -f asm  

  10.     ln -s ${SRCTREE}/include/asm-$2 asm  

  11.     LNPREFIX='../../include2/asm/'  

  12.     cd ../include  

  13.     rm -rf asm-$2  

  14.     rm -f asm  

  15.     mkdir asm-$2  

  16.     ln -s asm-$2 asm  

  17. else  

  18.     cd ./include  

  19.     /* 刪除asm目錄 */  

  20.     rm -f asm  

  21.     /*  

  22.      * 建立asm指向?qū)?yīng)的目錄,根據(jù)我上面標(biāo)的,$2就是 2:Architecture = arm  

  23.      * 所以這里就是 ln -s asm-arm asm 

  24.      */  

  25.     ln -s asm-$2 asm  

  26. fi  

  27.   

  28. /* 

  29. * 這里開始建立arch目錄,有了上面的asm目錄建立,這里就簡(jiǎn)單多了 

  30. * 刪除 rm -f asm-arm/arch 

  31. */  

  32. rm -f asm-$2/arch  

  33.   

  34. if [ -z '$6' -o '$6' = 'NULL' ] ; then  

  35.     ln -s ${LNPREFIX}arch-$3 asm-$2/arch  

  36. else  

  37.     /* 

  38.      * ln -s arch-s3c64xx asm-arm/arch 

  39.      */  

  40.     ln -s ${LNPREFIX}arch-$6 asm-$2/arch  

  41. fi  

  42.   

  43. /* 如果是arm平臺(tái),需要多建立一個(gè)proc目錄 */  

  44. if [ '$2' = 'arm' ] ; then  

  45.     rm -f asm-$2/proc  

  46.     ln -s ${LNPREFIX}proc-armv asm-$2/proc  

  47. fi  

  48.   

  49. #   

  50. # Create include file for Make   

  51. #   

  52. /* 

  53. * 這里為make編譯的時(shí)候創(chuàng)建一些環(huán)境變量,寫入到config.mk文件 

  54. */  

  55. echo 'ARCH = $2' > config.mk  

  56. echo 'CPU = $3' >> config.mk  

  57. echo 'BOARD = $4' >> config.mk  

  58.   

  59. [ '$5' ] && [ '$5' != 'NULL' ] && echo 'VENDOR = $5' >> config.mk  

  60.   

  61. [ '$6' ] && [ '$6' != 'NULL' ] && echo 'SOC = $6' >> config.mk  

  62.   

  63. # Assign board directory to BOARDIR variable  

  64. if [ -z '$5' -o '$5' = 'NULL' ] ; then  

  65.     BOARDDIR=$4  

  66. else  

  67.     BOARDDIR=$5/$4  

  68. fi  

  69.   

  70. #   

  71. # Create board specific header file  

  72. #   

  73. /* 

  74. * 開始創(chuàng)建特殊的頭文件,被好多文件加載的 

  75. * APPEND = no,于是創(chuàng)建了新的config.h 

  76. */  

  77. if [ '$APPEND' = 'yes' ]    # Append to existing config file  

  78. then  

  79.     echo >> config.h  

  80. else  

  81.     > config.h    # Create new config file  

  82. fi  

  83.   

  84. /* 寫入如下信息到該新建的頭文件內(nèi) */  

  85. echo '/* Automatically generated - do not edit */' >>config.h  

  86.   

  87. for i in ${TARGETS} ; do  

  88.     echo '#define CONFIG_MK_${i} 1' >>config.h ;  

  89. done  

  90.   

  91. cat << EOF >> config.h  

  92. #define CONFIG_BOARDDIR board/$BOARDDIR  

  93. #include   

  94. /* 這里需要注意的是,$1 對(duì)應(yīng)的是smdk6400 正好指定了 include/config/smdk6400.h 配置頭文件,也就是為什么移植需要該這個(gè)頭文件,否則找不到的原因 */  

  95. #include    

  96. #include    

[1] [2]
關(guān)鍵字:u-boot  配置  編譯 引用地址:u-boot2010.03 配置編譯目標(biāo)分析

上一篇:u-boot2010.03 移植篇(三)-----進(jìn)一步修改start.S,smdk6410.h,支持nand啟動(dòng)及配置DM9000網(wǎng)卡
下一篇:uboot移植到6410開發(fā)板的過(guò)程及環(huán)境變量的修改

推薦閱讀最新更新時(shí)間:2025-04-23 17:58

u-boot移植(六)---代碼修改---串口
一、代碼流程 1.1 串口代碼   程序流程圖如下;      default_serial_console 執(zhí)行的代碼如下:         在JZ2440.H中有如下定義:      則執(zhí)行結(jié)構(gòu)體s3c24xx_serial0_device,從而執(zhí)行INIT_S3C_SERIAL_STRUCTURE(0, s3ser0 ):      _serial_setbrg 為串口時(shí)鐘設(shè)置函數(shù):      其中,調(diào)用get_PCLK()進(jìn)行串口時(shí)鐘的設(shè)置:      PCLK的計(jì)算涉及到 HCLK,在函數(shù)中調(diào)用了get_HCLK() 來(lái)獲取HCLK的值。      get HCLK的代碼就HCLK的計(jì)算,這里對(duì)應(yīng)著寄存器
[單片機(jī)]
<font color='red'>u-boot</font>移植(六)---代碼修改---串口
第六章、Tiny4412 U-BOOT移植六 Nand Flash源碼分析
一、U-Boot參考源碼 NandFlash的初始化代碼我們放在board/samsung/tiny4412/lowlevel_init.S ,這一段代碼是三星SMDK4212中沒(méi)有提供的,所以我們需要自己寫。我們?cè)诶锩嬖黾右粋€(gè)函數(shù)叫nand_asm_init。當(dāng)然,由于 Nand Flash 的操作是有一定的規(guī)律的,所以,我們可以去別的地方找一段寫好的NandFlash源碼,然后根據(jù)自己的電路原理圖進(jìn)行移植即可。 二、代碼分析 1、初始化Nand Flash 打開原理圖,參看原理圖配置各個(gè)功能引腳----狀態(tài)引腳R/nB,讀使能引用腳nRE,片選信號(hào)nCE,命令使能引腳CLE,地址使能引腳ALE,寫使能引腳nWE。
[單片機(jī)]
第六章、Tiny4412 <font color='red'>U-BOOT</font>移植六 Nand Flash源碼分析
U-Boot在基于BF561的嵌入式Linux系統(tǒng)上的移植
1 引言 ? 嵌入式Linux系統(tǒng)常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全稱Universal Boot Loader)是當(dāng)前比較流行的遵循GPL條件的開放源碼項(xiàng)目。U-Boot具有源碼公開的特點(diǎn),開發(fā)人員可根據(jù)自身需要進(jìn)行裁減;支持多種處理器和嵌入式操作系統(tǒng)內(nèi)核;具有多種設(shè)備驅(qū)動(dòng)源碼:支持多種引導(dǎo)方式;具有功能強(qiáng)大且成熟、穩(wěn)定等諸多優(yōu)點(diǎn)。在嵌入式系統(tǒng)開發(fā)過(guò)程中廣泛采用。U-Boot嚴(yán)重依賴于底層硬件,不同的CPU或嵌入式板及設(shè)備需要不同的U-Boot,因此,在嵌入式系統(tǒng)中建立通用的U-Boot是非常困難的,故U-Boot需針對(duì)開發(fā)版本量身定做。 ? 2 開
[嵌入式]
U-Boot在基于ADSP BF533的嵌入式Linux系統(tǒng)上的移植
1 引言 Boot Loader(內(nèi)核引導(dǎo)程序)是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段自舉程序,用于初始化硬件設(shè)備、改變處理器運(yùn)行模式、重組中斷向量和建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件帶到一個(gè)合適的狀態(tài)或者用戶定制的特定狀態(tài),以便為最終加載操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境 。 嵌入式Linux系統(tǒng)常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全稱Universal Boot Loader)是當(dāng)前比較流行的遵循GPL條件的開放源碼項(xiàng)目。U-Boot具有源碼公開的特點(diǎn),開發(fā)人員可根據(jù)自身需要進(jìn)行裁減;支持多種處理器和嵌入式操作系統(tǒng)內(nèi)核;具有多種設(shè)備驅(qū)動(dòng)源碼:支持種引導(dǎo)方式;具有功能強(qiáng)大
[嵌入式]
迅為-i.MX6ULL 開發(fā)板-移植OpenCv3.4.1-搭建編譯環(huán)境
我們需要準(zhǔn)備的資料: 1.開發(fā)板使用的是 i.MX6ULL 終結(jié)者,開發(fā)板里面是 Yocto 文件系統(tǒng)。 2.使用 Ubuntu 16.04 3.提供 opencv 源碼“opencv-3.4.1.zip” 4.QT 測(cè)試?yán)? 86.1 安裝交叉編譯工具 移植的 QT 系統(tǒng)需要的交叉編譯器就是我們編譯 qt 的編譯器,因?yàn)槲覀兪?Yocto 系統(tǒng),所以我們用編譯 Yocto 的編譯器來(lái)編譯 OpenCV。交叉編譯器為:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf。設(shè)置交叉編譯器請(qǐng)參考 i.MX6ULL 終結(jié)者-開發(fā)板使用手冊(cè) 4.3 章節(jié) 搭建交叉編譯環(huán)境。
[單片機(jī)]
迅為-i.MX6ULL 開發(fā)板-移植OpenCv3.4.1-搭建<font color='red'>編譯</font>環(huán)境
【MCS-51】編譯指令系統(tǒng)
51單片機(jī)是一種廣泛應(yīng)用于嵌入式系統(tǒng)中的芯片,具有極高的性價(jià)比和通用性。在51單片機(jī)開發(fā)過(guò)程中,編譯指令系統(tǒng)是非常重要的組成部分。本文將從編譯原理、匯編語(yǔ)言和編譯指令系統(tǒng)等方面對(duì)51單片機(jī)編譯指令系統(tǒng)進(jìn)行詳細(xì)介紹。 1. 編譯原理 編譯指令系統(tǒng)是一種將高級(jí)語(yǔ)言轉(zhuǎn)換為機(jī)器指令的過(guò)程。在編譯指令系統(tǒng)中,編譯器將源代碼文件轉(zhuǎn)換為目標(biāo)代碼文件,這個(gè)過(guò)程通常被稱為編譯。編譯過(guò)程主要包括以下幾個(gè)步驟: (1) 詞法分析:將源代碼分割成一個(gè)個(gè)有意義的單元,例如關(guān)鍵字、運(yùn)算符、標(biāo)識(shí)符等。 (2) 語(yǔ)法分析:將分割后的單元按照語(yǔ)法規(guī)則進(jìn)行歸類和組合,構(gòu)成語(yǔ)法樹。 (3) 語(yǔ)義分析:在語(yǔ)法樹上進(jìn)行類型檢查和語(yǔ)義分析,確定變量類型和作用域等信息。
[單片機(jī)]
【MCS-51】<font color='red'>編譯</font>指令系統(tǒng)
OK6410A 開發(fā)板 (六) 3 OK6410A linux-5.11編譯分析
訂閱專欄 linux編譯對(duì)host環(huán)境的要求 Documentation/process/changes.rst 編譯過(guò)程 1. 雜項(xiàng) SYSHDR arch/arm/include/generated/uapi/asm/unistd-common.h sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-common.h' 'common' '' '__NR_SYSC
[單片機(jī)]
第一部分:crosstool-ng 制作交叉編譯工具鏈 for s3c2440
第一部分 安裝交叉編譯工具鏈 使用crosstool-0.43制作交叉編譯工具鏈,隨著gcc版本的增高,正確的制作已不太可能,crosstool-0.43制之后不再有更新,因此這個(gè)選用的是nt-ng工具制作交叉編譯工具鏈。 1、nt-ng的安裝 Crostool很多年不在維護(hù)了,下面嘗試一下使用crosstool的下一代 crosstool-ng 具體使用說(shuō)明見: http://www.crifan.com/files/doc/docbook/crosstool_ng/release/html/crosstool_ng.html 下面寫出我編譯的過(guò)程: 首先下載源碼包:http://crosstool-ng
[單片機(jī)]
第一部分:crosstool-ng 制作交叉<font color='red'>編譯</font>工具鏈 for s3c2440
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 河北省| 瓮安县| 盖州市| 岑巩县| 白河县| 平湖市| 阳江市| 罗田县| 新田县| 余庆县| 芜湖市| 临沭县| 康平县| 永新县| 宝应县| 永修县| 沁源县| 麟游县| 星座| 通河县| 独山县| 监利县| 白沙| 江北区| 宜君县| 伊宁市| 中牟县| 老河口市| 雅江县| 吕梁市| 潼南县| 中西区| 仁化县| 贵德县| 彭水| 密云县| 宝清县| 会同县| 白朗县| 西宁市| 五莲县|