Uboot學習筆記(三)Uboot編譯過程分析

2021-09-28 18:17:42 字數 1772 閱讀 8586

mkconfig分析

makefile分析

通過閱讀訊為提供的使用手冊,我們可以知道三星exynos4412的uboot的編譯是通過呼叫build_uboot.sh來實現的,這個指令碼檔案通過傳入引數的不同來生成不同記憶體大小、emmc大小的核心板的uboot.bin二進位制檔案,例如:scp封裝2gddr記憶體的核心板的編譯命令為

./build_uboot.sh scp_2gddr
這個uboot編譯指令碼是三星4412特有的,它其實是三星中國研究所為自己的4412開發板tc4寫的,在tc4的uboot資料夾中可以找到,訊為對它進行了修改,適配了自己的開發板,這個指令碼完成了uboot的配置、編譯、清理和二進位制檔案打包的工作,可以讓我們方便的生成.bin檔案

對它的分析我以流程圖的形式給出:

所以總結來說,build_uboot.sh這個指令碼主要做了三個工作:

在上面的build_uboot.sh指令碼中執行了如下的指令

make itop_4412_android_config_scp_2gddr
我們先檢視下makefile可以找到如下的語句

itop_4412_android_config_scp_2gddr:		unconfig

@$(mkconfig) $(@:_config=) arm arm_cortexa9 smdkc210 samsung s5pc210 scp_2gddr

unconfig的規則是刪除了許多的配置檔案

unconfig:

@rm -f $(obj)include/config.h $(obj)include/config.mk \

$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \

$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep

$(mkconfig)是執行mkconfig,mkconfig被定義為當前資料夾下的mkconfig檔案

srctree		:= $(curdir)

mkconfig := $(srctree)/mkconfig

(@:_config=)等於把目標檔名稱_config替換成「」,即itop_4412_android_config_scp_2gddr

通過上述對build_uboot.sh中make config的分析我們可以得出最後呼叫mkconfig的語句為

mkconfig  itop_4412_android arm arm_cortexa9 smdkc210 samsung s5pc210
對mkconfig的分析見如下的流程圖:

uboot原本的makefile的**是相當多的(有3800多行),但是其中大部分的**是與我們的4412使用的uboot無關的,比如給各種架構的晶元的配置之類的,所以我分析的是訊為經過裁剪的刪掉沒用的部分的makefile,有600行左右

分析流程圖如下:

u boot學習 一 u boot概述

我們知道對於pc機,使用電腦時我們首先按下開機按鍵,然後等待電腦的啟動,開機完成後,我們會進行各種需要的操作,如qq聊天 寫csdn部落格等。其實這個過程是 啟動bios程式,由bios程式引導windows作業系統,再由作業系統識別c盤d盤等硬碟,最後執行應用程式qq csdn等。對嵌入式系統來說...

uboot移植筆記

uboot的作用 1,初始化必要的硬體 如cpu,記憶體,flash,網絡卡,串列埠等 這一部分通常即為移植的重點。2,引導作業系統,即核心。通常在部分1中設定好以後,核心引導就可交給uboot進行。沒有核心的話uboot啟動將會停在某一位置。處於等待使用者輸入命令狀態。配置和編譯uboot 2,修...

ZC706學習筆記 三) 編譯U boot

2.解壓unzip root unzip u boot xlnx master.zip 3.uboot編譯 1 編譯過程中遇到的問題有 your gcc is older than 6.0 and is not supported原因 交叉編譯器有點old,解決方法有 checkgcc6 if te...