U BOOT分析之編譯初體驗

2021-08-01 07:53:03 字數 2168 閱讀 5209

嵌入式系統:uboot->kernel->掛接根檔案系統->應用程式

1.u-boot打補丁,編譯,結合makefile進行分析

a.解壓縮u-boot壓縮包u-boot-1.1.6.tar.bz2

tar xjf u-boot-1.1.6.tar.bz2
b.進入壓縮得到的檔案

cd u-boot-1.1.6
c.打補丁

patch -p1 <../u-boot-1.1.6.patch
d.配置

make 100ask24x0_config
e.編譯,得到u-boot.bin檔案

make
uboot的最終目的是啟動核心

1.從flash讀出核心放到sdram

2.啟動核心

為達到最終的目的uboot要實現的功能:

1.能夠讀flash

2.初始化sdram,初始化時鐘(開發板上電,時鐘的執行頻率是12m,2440最大的頻率是400m)

雖然uboot的最終目的是啟動核心,但是在開發階段我們想增加更多的功能方便開發。

1.初始化串列埠

3.網絡卡,usb等等

2.u-boot功能,結構,結合makefile進行分析

1.分析配置過程make 100ask24x0_config 命令

1.在uboot頂層目錄下的makefile中搜尋100ask24x0_config 結果如下

100ask24x0_config   :   unconfig

@$(mkconfig) $(@:_config=) arm arm920t 100ask24x0 null s3c24x0

mkconfig定義為

mkconfig    := $(srctree)/mkconfig
所以輸入make 100ask24x0_config命令相當於 把100ask24x0 arm arm920t 100ask24x0 null s3c24x0 傳入mkconfig檔案,100ask24x0 是第乙個引數$1

2.ln -s asm-arm asm

3.ln -s arch-s3c24x0 asm-arm/arch

4.ln -s proc-armv asm-arm/proc

5.建立config.mk檔案 內容追加為arch=arm cpu=arm920t board=100ask24x0 soc=s3c24x0

6.建立config.h檔案 內容追加為 /automatically generated -do not edit/ #include

2.分析編譯過程

1.incldue $(objtree)/include/config.mk

2.ifeq($(arch),arm) cross_complie = arm-linux-

3.include $(topdir)/config.mk 4.

5.在執行make 的時候如果不指定目標,他就執行第乙個目標

6.不想那麼麻煩的分析makefile,可以輸入make命令後檢視最後面的列印資訊

7.通過檢視列印資訊,可以看到這樣一句話。arm-linux-ld -bstatic -t /work/sysytem/u-boot-1.1.6/board/100ask24x0/u-boot.lds -ttext 0x33f80000 $undef_sym cpu/arm920t/start.o #鏈結的時候依賴兩個東西,原材料和鏈結指令碼。鏈結指令碼指示映像檔案的組織結構。

8.分析u-boot.lds檔案(.=0x00000000 0x00000000要加上0x33f80000=uboot執行位址)一開始執行的檔案是cpu/arm920t/start.o檔案

9.鏈結位址(執行位址)由連線檔案board/100ask24x0/u-boot.lds和board/100ask24x0/config.mk text_base共同指定,text_base在頂層目錄的config.mk ldflags中被引用。

uboot 之初體驗

uboot的終極奧義就是啟動核心。官網的uboot肯定不能對應所有的板子,所有需要根據自己特定的板子打補丁,以滿足自己特定cpu的需求。在我之前的部落格中有說到高階變數引用功能。看看uboot中的某處makefile 艾特符表示的是目標檔案。現在,我們說一下打補丁的操作。打補丁通過linux的pat...

uboot編譯體驗

bootloader的最終目的就是啟動核心。u boot 1.1.6.tar.bz2 是未經修改的原始碼,u boot 1.1.6 jz2440.patch 是補丁檔案。執行以下操作即可編譯出 u boot.bin tar xjf u boot 1.1.6.tar.bz2 cd u boot 1.1...

u boot編譯分析

在頂層目錄下執行完 make smdk2410 config 命令後,就把u boot給配置好了,接著就可以在執行 make all 或者 make 命令去編譯u boot了,完成後就可以燒寫到開發板去執行了。在makefile中的all目標是第乙個目標,因為makefile將第乙個目標設為預設目標...