0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于uboot的功能分析透徹方案

電子設(shè)計(jì) ? 2018-07-31 09:37 ? 次閱讀

如果我們想快速的移植uboot,那么我們就要先將我們用到的uboot的功能分析透徹,uboot最終目的就是**引導(dǎo)內(nèi)核**,但是在實(shí)際開(kāi)發(fā)中為了方便開(kāi)發(fā)調(diào)試,我們將uboot加入了很多功能,比如tftp下載,nfs啟動(dòng),串口打印等功能;那么我們先按著執(zhí)行的順序來(lái)分析代碼。

uboot并沒(méi)有對(duì)2440進(jìn)行支持,所以我們分析階段先分析smdk2410的相關(guān)代碼,分析完成以后我們?cè)诟鶕?jù)s3c2440的技術(shù)手冊(cè)在2410的基礎(chǔ)上進(jìn)行移植。

Makefile分析

首先我們根據(jù)編譯過(guò)程進(jìn)行分析,編譯需要執(zhí)行命令:

make smdk2410_config

我們查看根目錄下Makefile文件,搜索smdk2410_config得到如下代碼:

smdk2410_config : unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0在Makefile中;

@表示不打印后面的命令。

$(MKCONFIG)我們通過(guò)搜索MKCONFIG得到其定義如下:

MKCONFIG := $(SRCTREE)/mkconfig

SRCTREE定義如下:
SRCTREE := $(CURDIR)
CURDIR在Makefile中為內(nèi)嵌變量,自動(dòng)設(shè)置為當(dāng)前的目錄。所以$(MKCONFIG)就等于當(dāng)前目錄下的mkconfig文件;$(@:_config=)表示將目標(biāo)文件的_config變?yōu)榭?,也就是取消目?biāo)文件的_config。

所以命令解析如下

smdk2410_config : unconfig
@mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
所以當(dāng)我們執(zhí)行make smdk2410_config的時(shí)候?qū)嶋H是執(zhí)行的是:
./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0
$1 $2 $3 $4 $5 $6

分析根目錄下mkconfig
while [ $# -gt 0 ] ; do
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
*) break ;;
esac
done

$#表示了傳遞進(jìn)來(lái)的參數(shù)的個(gè)數(shù);

-gt表示大于(>)的含義;

首先如果傳遞的參數(shù)個(gè)數(shù)大于0,則執(zhí)行,然后在判斷$1是不是--、-a、-n、*等符號(hào),如果是則執(zhí)行相應(yīng)的分支,否則繼續(xù)向下執(zhí)行。

[ "${BOARD_NAME}" ] || BOARD_NAME="$1"

如果沒(méi)有定義BOARD_NAME,則讓BOARD_NAME=$1在這里就是BOARD_NAME=$1=smdk2410

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

-lt是小于(<)的含義;

也就是判斷傳遞進(jìn)來(lái)的個(gè)數(shù)是否是小于4個(gè)或者是大于6個(gè),如果小于4個(gè)或者大于6個(gè)則退出。

echo "Configuring for ${BOARD_NAME} board..."

打印信息Configuring for smdk2410 board...

if [ "$SRCTREE" != "$OBJTREE" ] ; then
mkdir -p ${OBJTREE}/include
mkdir -p ${OBJTREE}/include2
cd ${OBJTREE}/include2
rm -f asm
ln -s ${SRCTREE}/include/asm-$2 asm
LNPREFIX="../../include2/asm/"
cd ../include
rm -rf asm-$2
rm -f asm
mkdir asm-$2
ln -s asm-$2 asm
else
cd ./include
rm -f asm
ln -s asm-$2 asm
fi

上面代碼if [ "$SRCTREE" != "$OBJTREE" ] ; 是判斷SRCTREE 是否等于OBJTREE?

如果不等,則執(zhí)行if 分支,如果相等等執(zhí)行else分支,在頂層makefile 下查找可知SRCTREE 和OBJTREE 定義如下:

OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
SRCTREE := $(CURDIR)
所以:

OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))

含義:如果定義BUILD_DIR 則OBJTREE=BUILD_DIR 否則OBJTREE=CURDIR搜索mkconfig 可知:BUILD_DIR 沒(méi)有定義,即OBJTREE=CURDIR所以:SRCTREE := $(CURDIR)即SRCTREE=CURDIR,BJTREE=CURDIR 并且SRCTREE=CURDIR 所以SRCTREE=OBJTREE所以執(zhí)行else 分支;

else 分支作用如下:

執(zhí)行上面面三句,就相當(dāng)于建立一個(gè)鏈接文件asm,它指向$2(即arm)。

這樣做的原因?

當(dāng)我們?cè)谠创a中包含#include的時(shí)候不需要改動(dòng),如果是i386 呢?Avr32
呢?所以建立這個(gè)鏈接是為了不需要我們總是修改代碼,則直接寫#include即可。

rm -f asm-$2/arch

刪除asm-arm/arch文件。

if [ -z "$6" -o "$6" = "NULL" ] ; then
ln -s ${LNPREFIX}arch-$3 asm-$2/arch
else
ln -s ${LNPREFIX}arch-$6 asm-$2/arch
fi

如果$6 為空或者為NULL 則執(zhí)行l(wèi)n -s ${LNPREFIX}arch-$3 asm-$2/arch而$6=s3c6410 所以if 分支忽略即執(zhí)行else 分支ln -s ${LNPREFIX}arch-$6 asm-$2/arch

分析ln -s ${LNPREFIX}arch-$6 asm-$2/arch執(zhí)行上面語(yǔ)句相當(dāng)于在asm-arm($2)目錄下面建立一個(gè)鏈接文件arch而鏈接文件arch 的指向是arch-s3c6410($6)。

if [ "$2" = "arm" ] ; then
rm -f asm-$2/proc
ln -s ${LNPREFIX}proc-armv asm-$2/proc
fi
通過(guò)對(duì)$2的判斷發(fā)現(xiàn)執(zhí)行此分支。

echo "ARCH = $2" > config.mk
echo "CPU = $3" >> config.mk
echo "BOARD = $4" >> config.mk

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

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

“>”表示新建文件并將內(nèi)容添加進(jìn)文件。

“>>”表示只在文件中添加內(nèi)容。

所以上述的代碼含義就是新建config.mk文件并且將下面內(nèi)容添加進(jìn)config.mk文件:

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

if [ "$APPEND" = "yes" ] # Append to existing config file
then
echo >> config.h
else
> config.h # Create new config file
fi
判斷APPEND定義是否等于yes開(kāi)頭定義APPEND等于no,所以執(zhí)行else分支,新建config.h文件

echo "/* Automatically generated - do not edit */" >>config.h
echo "#include " >>config.h

在config.h里面追加內(nèi)容:

/* Automatically generated - do not edit */
#include

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • S3C2440
    +關(guān)注

    關(guān)注

    4

    文章

    132

    瀏覽量

    39381
  • Configured
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    8041
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    126

    瀏覽量

    28806
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    用是德示波器DSOX1204G精準(zhǔn)波形分析

    在現(xiàn)代電子測(cè)試領(lǐng)域,示波器作為信號(hào)觀測(cè)與分析的核心工具,其性能直接決定著測(cè)試結(jié)果的可靠性與效率。是德科技(Keysight)推出的DSOX1204G示波器憑借其高性能硬件、多功能分析與直觀操作界面
    的頭像 發(fā)表于 04-09 18:14 ?266次閱讀
    用是德示波器DSOX1204G精準(zhǔn)波形<b class='flag-5'>分析</b>

    Raspberry4-32工程里的uboot網(wǎng)盤鏈接失效,無(wú)法獲取uboot鏡像怎么解決?

    Raspberry4-32工程里的uboot網(wǎng)盤鏈接失效,無(wú)法獲取uboot鏡像
    發(fā)表于 04-01 08:25

    是德示波器功率分析功能的應(yīng)用

    內(nèi)的重要測(cè)試測(cè)量?jī)x器,憑借其強(qiáng)大的功率分析功能,為工程師和科研人員提供了深入了解功率特性的有效手段。 是德示波器功率分析功能概述 ? 基本測(cè)量參數(shù)獲取 是德示波器能夠精準(zhǔn)測(cè)量功率
    的頭像 發(fā)表于 03-13 16:09 ?204次閱讀
    是德示波器功率<b class='flag-5'>分析</b><b class='flag-5'>功能</b>的應(yīng)用

    【解決方案】電能質(zhì)量監(jiān)測(cè)與分析系統(tǒng)

    【解決方案】電能質(zhì)量監(jiān)測(cè)與分析系統(tǒng)
    的頭像 發(fā)表于 01-08 09:06 ?287次閱讀
    【解決<b class='flag-5'>方案</b>】電能質(zhì)量監(jiān)測(cè)與<b class='flag-5'>分析</b>系統(tǒng)

    網(wǎng)絡(luò)網(wǎng)關(guān)的主要功能分析

    在現(xiàn)代網(wǎng)絡(luò)架構(gòu)中,網(wǎng)絡(luò)網(wǎng)關(guān)扮演著至關(guān)重要的角色。它們不僅連接不同的網(wǎng)絡(luò),還確保數(shù)據(jù)在這些網(wǎng)絡(luò)間有效、安全地傳輸。 1. 數(shù)據(jù)轉(zhuǎn)發(fā) 網(wǎng)絡(luò)網(wǎng)關(guān)最基本的功能是數(shù)據(jù)轉(zhuǎn)發(fā)。它接收來(lái)自一個(gè)網(wǎng)絡(luò)的數(shù)據(jù)包,并將
    的頭像 發(fā)表于 01-02 16:04 ?545次閱讀

    Web緩存的類型及功能分析

    速度,降低了延遲,并提高了網(wǎng)站的可用性。 Web緩存的類型 Web緩存主要分為以下幾種類型: 瀏覽器緩存(Browser Cache) 功能 :瀏覽器緩存是用戶計(jì)算機(jī)上的緩存,它存儲(chǔ)了用戶訪問(wèn)過(guò)的網(wǎng)頁(yè)內(nèi)容。當(dāng)用戶再次訪問(wèn)同一網(wǎng)頁(yè)時(shí),瀏覽器會(huì)首先檢
    的頭像 發(fā)表于 12-18 09:35 ?629次閱讀

    AUTOSAR通信組件介紹 AUTOSAR通信層功能分析

    AUTOSAR通信組件介紹 AUTOSAR(AUTomotive Open System ARchitecture)是一個(gè)全球性的汽車軟件架構(gòu)合作伙伴計(jì)劃,旨在創(chuàng)建和建立一個(gè)開(kāi)放的標(biāo)準(zhǔn)化軟件架構(gòu),以實(shí)現(xiàn)汽車電子控制單元(ECU)的軟件設(shè)計(jì)和開(kāi)發(fā)。這個(gè)架構(gòu)包括多個(gè)層,其中通信層是AUTOSAR架構(gòu)中的關(guān)鍵組成部分之一。 1. 通信組件概述 AUTOSAR通信組件主要負(fù)責(zé)ECU之間的通信。它為不同的ECU提供了一種標(biāo)準(zhǔn)化的方式來(lái)交換信息,確保數(shù)據(jù)的一致性和可靠性。通信組件包括以下幾個(gè)關(guān)鍵部分: COM(通信管理
    的頭像 發(fā)表于 12-17 14:55 ?1187次閱讀

    奇妙的Air780E之UDP應(yīng)用示例大賞!

    關(guān)于UDP是一種無(wú)連接的、不可靠的傳輸層協(xié)議,主要用于實(shí)現(xiàn)網(wǎng)絡(luò)中的快速通訊,我們今天將把Air780E的UDP應(yīng)用分析透徹。
    的頭像 發(fā)表于 11-04 09:25 ?618次閱讀
    奇妙的Air780E之UDP應(yīng)用示例大賞!

    LIMS系統(tǒng)的功能與特點(diǎn)分析

    、材料、方法、項(xiàng)目、樣品、數(shù)據(jù)和結(jié)果,以實(shí)現(xiàn)實(shí)驗(yàn)室的自動(dòng)化、信息化和網(wǎng)絡(luò)化管理。 1. 功能分析 1.1 樣品管理 樣品登記 :記錄樣品的基本信息,如樣品編號(hào)、來(lái)源、類型、接收時(shí)間等。 樣品追蹤 :追蹤樣品在實(shí)驗(yàn)室中的流轉(zhuǎn)過(guò)程,包括樣品的接收、處理、分析和存儲(chǔ)等。 樣品存
    的頭像 發(fā)表于 10-28 17:02 ?1261次閱讀

    電源穩(wěn)壓器和電源濾波器哪個(gè)重要

    電源穩(wěn)壓器和電源濾波器在電子設(shè)備中都具有重要的作用,它們各自承擔(dān)著不同的功能,因此難以直接比較哪個(gè)更重要。以下是它們各自的重要性和功能分析
    的頭像 發(fā)表于 10-03 15:25 ?897次閱讀

    間隔棒及輸電線路狀態(tài)實(shí)時(shí)監(jiān)測(cè)裝置:功能分析、技術(shù)優(yōu)勢(shì)科普

    間隔棒及輸電線路狀態(tài)實(shí)時(shí)監(jiān)測(cè)裝置:功能分析、技術(shù)優(yōu)勢(shì)科普 間隔棒及輸電線路狀態(tài)實(shí)時(shí)監(jiān)測(cè)裝置是專為輸電線路設(shè)計(jì)的智能化監(jiān)測(cè)設(shè)備,旨在提高輸電線路的穩(wěn)定性和安全性。以下是深圳鼎信智慧科技對(duì)該裝
    的頭像 發(fā)表于 09-04 16:31 ?840次閱讀

    道路積水在線監(jiān)測(cè)預(yù)警系統(tǒng)的功能分析

    ,監(jiān)測(cè)道路積水情況,解決道路積水問(wèn)題。 ? 道路積水在線監(jiān)測(cè)預(yù)警系統(tǒng)依托物聯(lián)網(wǎng)、傳感器技術(shù)和大數(shù)據(jù)分析等先進(jìn)科技手段,實(shí)現(xiàn)了對(duì)道路積水情況的實(shí)時(shí)監(jiān)測(cè)和預(yù)警。通過(guò)在關(guān)鍵路段和易積水區(qū)域部署各種監(jiān)測(cè)設(shè)備可以采集積水
    的頭像 發(fā)表于 09-04 09:59 ?567次閱讀

    地面沉降安全預(yù)警系統(tǒng)的功能分析

    、衛(wèi)星定位,準(zhǔn)確監(jiān)測(cè) 地面沉降往往是一個(gè)緩慢而隱蔽的過(guò)程,傳統(tǒng)監(jiān)測(cè)手段難以捕捉其細(xì)微變化。而地面沉降安全預(yù)警系統(tǒng)借助衛(wèi)星定位技術(shù),能夠?qū)崿F(xiàn)對(duì)監(jiān)測(cè)區(qū)域的高精度、全天候監(jiān)測(cè)。通過(guò)對(duì)衛(wèi)星數(shù)據(jù)的持續(xù)收集與分析,系統(tǒng)能
    的頭像 發(fā)表于 08-26 14:57 ?470次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-uboot階段查看命令的使用

    | 上電后,在uboot倒計(jì)時(shí)結(jié)束前按下空格,輸入9進(jìn)入uboot命令行:進(jìn)入uboot命令行之后,可以通過(guò)輸入“?”或者h(yuǎn)elp可以查看uboot全部命令。如圖(圖未截全): 每一個(gè)
    發(fā)表于 07-13 09:37

    嵌入式學(xué)習(xí)-飛凌ElfBoard ELF 1板卡 - uboot常用命令之查看命令

    上電后,在uboot倒計(jì)時(shí)結(jié)束前按下空格,輸入9進(jìn)入uboot命令行: 進(jìn)入uboot命令行之后,可以通過(guò)輸入“?”或者h(yuǎn)elp可以查看uboot全部命令。如圖(圖未截全): 每一個(gè)命
    發(fā)表于 07-13 09:30

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品