国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

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

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

該系列教程會(huì)根據(jù)uboot的編譯過程進(jìn)程分析,如何編譯,那么將會(huì)如何分析這些流程
此處我還沒有增加6410的支持,先看6400 的過程,因?yàn)檫€沒有到增加的地方,分析完整個(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的目錄,這就要看你有沒有指定編譯目錄了

重點(diǎn)分析$(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;
會(huì)調(diào)用$(MKCONFIG) 而 MKCONFIG := $(SRCTREE)/mkconfig
也就是說最終會(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. #  

這里有一句說明了參數(shù)的意思Parameters: Target Architecture CPU Board [VENDOR] [SOC]
對(duì)應(yīng)我們傳遞進(jìn)來的參數(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  

這里顯示沒有沒有特殊的標(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)的文件夾,通過軟連接的方式,到一個(gè)指定的目錄
那么編譯的時(shí)候,就只要去這個(gè)統(tǒng)一的指定目錄下找,就能針對(duì)不同的平臺(tái)編譯了。具體看下下面的建立過程

  1. #   

  2. # Create link to architecture specific headers  

  3. #   

  4. /* 這里表示目標(biāo)目錄跟源碼目錄不一致,建立相應(yīng)的目錄,由于我沒有指定目標(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ā)板的過程及環(huán)境變量的修改

推薦閱讀最新更新時(shí)間:2025-06-18 10:47

U-boot 在 mini2440-S3C2440 上的移植(1)-開發(fā)環(huán)境搭建-交叉編譯工具鏈的安裝
編譯U-boot給mini2440時(shí),要編譯出能在ARM平臺(tái)上使用的可執(zhí)行文件-bin,首先要在ubuntu 中安裝交叉編譯工具鏈,因?yàn)槲沂褂玫氖怯焉浦鄣拈_發(fā)板,所以我使用的已經(jīng)制作好的工具鏈,當(dāng)然也可以自己制作工具鏈:如基于GCC和glibc制作工具鏈,可以使用cross tools編譯; 我使用的工具鏈的版本是arm-linux-gcc-4.3.3版本,下載地址:下載地址 1.在pc端下載好以后,將壓縮包用xftp傳輸?shù)経buntu;當(dāng)然也可以用其他軟件上傳;上傳后把它放在根目錄下的/usr/local文件夾中新建一個(gè)arm文件夾,然后把壓縮包復(fù)制到這個(gè)文件夾;注意先建好文件夾再上傳,可以減少很多工作量; 一定要上傳壓縮包,
[單片機(jī)]
<font color='red'>U-boot</font> 在 mini2440-S3C2440 上的移植(1)-開發(fā)環(huán)境搭建-交叉<font color='red'>編譯</font>工具鏈的安裝
第一章、Tiny4412 U-BOOT移植一 說明
一、移植前說明: 1、 特別聲明:此文檔是我的學(xué)習(xí)文檔,里面肯定有錯(cuò)誤地方,僅供參考! 2、移植平臺(tái):友善之臂Tiny4412SDK1306平臺(tái)。 3、移植系統(tǒng):Ubuntu12.04 4、移植原始CODE:平臺(tái)光盤中由Samsung提供的U-Boot-samsung-dev.tar.bz2。為什么用這個(gè),只能說因?yàn)槲乙膊锁B,我找了u-boot官網(wǎng)最新的代碼看了一下,我沒有在boardsamsung目錄下找到與Exynos4412芯片很相關(guān)的平臺(tái)目錄,估計(jì)是有的,只是由于我很菜,不清楚是那一個(gè),為了省自學(xué)時(shí)間,還是用三星提供的U-Boot源碼。 5、參考文檔:各相關(guān)手冊(cè),主要手冊(cè)是Exynos4412 RISC Microproc
[單片機(jī)]
第一章、Tiny4412 <font color='red'>U-BOOT</font>移植一 說明
淺談ARM下U-boot給Kernel傳參數(shù)
我們可能都知道:U-boot會(huì)給Linux Kernel傳遞很多參數(shù),如:串口波特率,RAM Size,videofb、MAC Address等,而且Linux kernel也會(huì)讀取和處理這些參數(shù)。 兩者之間通過struct tag來傳遞參數(shù)。U-boot把要傳遞給kernel的東西保存在struct tag數(shù)據(jù)結(jié)構(gòu)中,啟動(dòng)kernel時(shí),把這個(gè)結(jié)構(gòu)體的物理地址傳給kernel; Linux kernel通過這個(gè)地址,用parse_tags分析出傳遞過來的參數(shù)。 大家也知道在ARM架構(gòu)上,u-boot向Linux內(nèi)核傳遞參數(shù)利用了R0,R1和R2三個(gè)寄存器,并采用如下約定: R0 暫時(shí)不用,缺省放0 R1
[單片機(jī)]
ESP32學(xué)習(xí)筆記(1)——搭建環(huán)境、編譯燒寫(Windows+VS Code)
Espressif-IDE 環(huán)境搭建參看 ESP32學(xué)習(xí)筆記(50)——搭建環(huán)境、編譯燒寫(Windows+Espressif-IDE) 一、搭建環(huán)境 1.1 官方資料 ESP-IDF 編程指南 1.2 下載ESP-IDF工具安裝器 官網(wǎng)下載:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/windows-setup.html#esp-idf 百度網(wǎng)盤:https://pan.baidu.com/s/1j2issH8Z_grW746D0ortgA 提取碼:1nw6 打開 esp-idf-tools-setup-online-2
[單片機(jī)]
KStudio window上編譯uclinux
可能沒有幾個(gè)人能像我這樣在Windows下編譯Linux內(nèi)核,甚至于同時(shí)進(jìn)行內(nèi)核調(diào)試。這種事情我不是第一個(gè)做到的,至少我們公司的原TKStudio部門已經(jīng)做過。在TKStudio網(wǎng)站上,提供了一個(gè)Linux內(nèi)核和ucLinux內(nèi)核的編譯和調(diào)試工程可供下載。 正因?yàn)門KStudio證明這種想法是可行的,所以我才有可能嘗試去做這件事情。我做的僅僅是交叉編譯ARM平臺(tái)下的內(nèi)核,我也只對(duì)此平臺(tái)熟悉。TKStudio也只支持ARM等嵌入式平臺(tái)。 在Windows下編譯Linux內(nèi)核步驟 上周,已經(jīng)成功使用TKStudio編譯UBoot,這次將Linux內(nèi)核移植到TKStudio下也是借鑒移植UBoot的做法。 首先,先在Linu
[單片機(jī)]
編譯可加載lcd驅(qū)動(dòng)的linux uImage
pc:Centos5.4 內(nèi)核:linux 3.0.1 開發(fā)板:ok6410 交叉編譯器:arm-linux-gcc 4.4.1 LCD驅(qū)動(dòng)程序 怎么寫LCD驅(qū)動(dòng)程序? 1. 分配一個(gè)fb_info結(jié)構(gòu)體: framebuffer_alloc 2. 設(shè)置 3. 注冊(cè): register_framebuffer 4. 硬件相關(guān)的操作 測(cè)試: 1. make menuconfig去掉原來的驅(qū)動(dòng)程序 - Device Drivers - Graphics support M S3C LCD framebuffer support 2. make uImage 出現(xiàn)錯(cuò)誤:修改/drivers/media/video/samsung/t
[單片機(jī)]
Linux移植之make uImage編譯過程分析
編譯出uboot可以運(yùn)行的linux內(nèi)核代碼的命令是make uImage,下面詳細(xì)介紹下生成linux-2.6.22.6/arch/arm/boot/uImage的過程: 1、vmlinux、Image、uImage、zImage的區(qū)別 2、vmlinux生成過程簡(jiǎn)介 3、uImage生成過程簡(jiǎn)介 1、vmlinux、Image、uImage、zImage的區(qū)別,在執(zhí)行make uImage之后會(huì)在%生成如下幾個(gè)文件Image、uImage、zImage。 vmlinux是可引導(dǎo)的、壓縮的內(nèi)核?!皏m”代表“Virtual Memory”。Linux 支持虛擬內(nèi)存,不像老的操作系統(tǒng)比如DOS有640KB內(nèi)存的限制。Lin
[單片機(jī)]
Linux移植之make uImage<font color='red'>編譯</font>過程分析
英特爾定制編譯器優(yōu)化 CPU 跑分最高 9%,SPEC 宣布近 2600 項(xiàng)成績(jī)無效
2 月 19 日消息,SPEC 近日發(fā)布編譯器通知,表示近期發(fā)現(xiàn)英特爾 oneAPI DPC++ 編譯器存在特殊優(yōu)化問題,宣布 2600 多項(xiàng)英特爾 SPEC CPU 2017 基準(zhǔn)測(cè)試成績(jī)無效。 用戶在提交部分 SPEC CPU 文件時(shí)發(fā)現(xiàn)該組織更新其通知: SPEC 已經(jīng)裁定,該結(jié)果所使用的編譯器利用 SPEC 代碼和數(shù)據(jù)集的先驗(yàn)知識(shí)(priori knowledge),執(zhí)行一種適用范圍較窄的轉(zhuǎn)換,從而專門提高 523.xalancbmk_r/ 623.xalancbmk_s 基準(zhǔn)性能的編譯。 為了鼓勵(lì)具有廣泛適用性的優(yōu)化,SPEC 將不再公布使用該優(yōu)化的結(jié)果。 這一結(jié)果將保留在 SPEC 結(jié)果數(shù)據(jù)庫(kù)中,供歷史參考。
[嵌入式]
英特爾定制<font color='red'>編譯</font>器優(yōu)化 CPU 跑分最高 9%,SPEC 宣布近 2600 項(xiàng)成績(jī)無效
小廣播
設(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