版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄
目錄1
u-boot介紹、編譯流程分析及簡要移植步驟2
102
1.0復(fù)習(xí)2
1.1內(nèi)容提要2
1.2uboot源碼獲得2
1.2.1uboot官方網(wǎng)站2
1.2.2已經(jīng)發(fā)發(fā)布的uboot版本列表2
1.3uboot目錄介紹7
1.4uboot配置編譯分析8
1.5uboot移植簡要步驟8
1.5.2在u-boot添加一個xyd4412開發(fā)板相關(guān)文件12
1.6板級配置文件介紹14
1.7u-boot添加命令16
1.7.1基本知識介紹16
1.7.2添加自定義命令示例:17
u?boot介紹、編譯流程分析及簡要移植步驟
10
1.0復(fù)習(xí)
1.1內(nèi)容提要
1.uboot源碼獲得
2.uboot目錄介紹
3.uboot編譯過程
4.uboot移植簡要步驟
自己增加一個xyd4412開發(fā)板
xyd4412.h文件介紹
怎么添加一個命令
1.2uboot源碼獲得
1.2.1uboot官方網(wǎng)站
uboot的官方網(wǎng)站是http:〃ww\v.denx.de/,源碼下載頁面是:
http:〃www.denx.de/wiki/U-Boot/SourceCode。
9PatentFree
U-BootSourceCode是薪派碼借用方式才訐L'.
Topics?ThecurrentsourcecodeisavailablethrougH力「gtrepository部分源碼在這里
?ReleasedVersions(andsomespecialsnapshots)areavailablefromtheAmazonQoudDriveandfromtheDEN)tFTPserverI
UBootHome
?Snapshotsareavailableusingtheclever?snapshot,'featureofthegitserver(seethe"snapshot,linkafterallcommitentries)
DocumentationZbNOTE:eventhoughthedownloadwillbeabzip2compressedtarball,andthefileonyourdiskwillbenamed
compressedatall.Thisisa"feature"ofyourwebbrowser;andwecannotdoanythingtohelpit.
SourceCode
?www.denx.dealsohoststheCustodianaittrees
ThaCuot-ndi^n^?CVSisnolongersupported.
?[TheoldprojectpageatSurceForgfiisnolongerusedanddeed.
Custodian舊源碼下載
1.2.2已經(jīng)發(fā)發(fā)布的uboot版本列表
直接下載:ftp:〃ftp.denx.de/pub/u-boot/
以下給出FTP服務(wù)器提供下載的源碼版本:
u-boot-0.2.0.tar.bz22734KB2002-12-170:00:00
u-boot-0.2.3-2003-03-14.tar.bz22847KB2003-03-140:00:00
u-boot-0.3.0.tar.bz22934KB2003-04-090:00:00
u-boot-0.3.1.tar.bz22948KB2003-04-210:00:00
u-boot-0.4.0.tar.bz23197KB2003-06-270:00:00
u-boot-0.4.Ltar.bz23189KB2003-06-290:00:00
u-boot-0.4.2.tarbz23192KB2003-07-070:00:00
u-boot-0.4.3.tar.bz23216KB2003-07-160:00:00
u-boot-0.4.4.tar.bz23222KE2003-07-170:00:00
u-boot-0.4.5.tar.bz23231KB2003-08-080:00:00
u-boot-0.4.6.tar.bz23231KE2003-08-170:00:00
u-boot-0.4.7.tar.bz23256KB2003-09-100:00:00
u-boot-0.4.8.tar.bz23545KB2003-09-110:00:00
u-boot-1.0.0.tar.bz23791KB2003-10-310:00:00
u-boot-L0.Ltar.bz24036KB2004-01-060:00:00
u-boot-1.0.2.tar.bz24093KB2004-02-120:00:00
u-boot-LL0.tar.bz24364KB2004-04-110:00:00
u-boot-l.l.Ltar.bz24413KB2004-04-250:00:00
u-boot-1.1.2.tar.bz25214KB2005-01-020:00:00
u-boot-1.1.3.tar.bz25472KB2005-08-140:00:00
u-boot-l.Ld-R7ZlBSSgd.tar.bzZ6296KE2006-08-120:00:00
u-boot-l.L4-adlOafb39.tar.bz26296KB2006-08-100:00:00
u-boot-LL4.tar.bz25806KB2005-12-170:00:00
u-boot-1.1.5.tar.bz26322KB2006-10-200:00:00
u-boot-l.16tar.bz26402KB2006-11-020:00:00
u-boot-1.2.0.tar.bz26767KB2007-01-080:00:00
u-boot-1.3.0-rcl.tar.bz26707KB2007-09-080:00:00
u-boot-1.3.0-rc2.tar.bz26715KB2007-09-200:00:00
u-boot-L3.0-rc3.tar.bz26566KB2007-10-140:00:00
u-boot-1.3.0-rc4.tar.bz26735KB2007-11-190:00:00
u-boot-1.3.0.tar.bz26737KB2007-11-190:00:00
u-boot-1.3.Ltar.bz26758KE2007-12-060:00:00
u-boot-L3.2-rcl.tar.bz27128KB2008-02-150:00:00
u-boot-L3.2-rc2.tar.bz27130KB2008-02-240:00:00
u-boot-1.3.2-rc3.tar.bz27132KB2008-03-020:00:00
u-boot-L3.2.tar.bz27134KB2008-03-090:00:00
u-boot-133-rcl.tar.bz27365KB2008-04-260:00:00
u-boot-L3.3-rc2.tar.bz27362KB2008-04-290:00:00
u-boot-1.3.3-rc3.tar.bz27368KB2008-05-040:00:00
u-boot-2010.09-rc2.tar.bz28049KB2010-09-190:00:00
u-boot-2010.09.tar.bz28041KB2010-09-280:00:00
u-boot-2010.12-rcl.tar.bz28062KB2010-10-270:00:00
u-boot-2010.12-rc2.tar.bz28044KB2010-11-280:00:00
u-boot-2010.12-rc3.tar.bz28048KB2010-12-170:00:00
u-boot-2010.12.tar.bz28046KE2010-12-220:00:00
u-boot-2011.03-rcl.tar.bz28098KB2011-02-020:00:00
u-boot-2011.03-rc2.tar.bz28151KE2011-04-010:00:00
u-boot-201L03.tar.bz28148KB2011-03-310:00:00
u-boot-201L06-rcl.tar.bz28270KB2011-05-190:00:00
u-boot-201L06-rc2.tar.bz28291KB2011-06-020:00:00
u-boot-2011.06-rc3.tar.bz28292KB2011-06-220:00:00
u-boot-201L06.tar.bz28272KB2011-06-270:00:00
u-boot-2011.09-rcl.tar.bz28239KB2011-09-110:00:00
u-boot-2011.09-rc2.tar.bz28240KB2011-09-220:00:00
u-boot-2011.09.tar.bz28233KB2011-09-290:00:00
u-boot-2011.12-rcl.tar.bz28404KB2011-12-120:00:00
u-boot-201L12-rc2.tar.bz28407KB2011-12-190:00:00
u-boot-201L12-rc3.tar.bz28405KE2011-12-210:00:00
u-boot-201L12.tar.bz28409KB2011-12-230:00:00
u-boot-2012.04-rcl.tar.bz28604KB2012-04-180:00:00
u-boot-2012.04-rc2.tar.bz28625KB2012-04-180:00:00
u-boot-2012.04-rc3.tar.bz28623KB2012-04-180:00:00
u-boot-2012.04.0Ltar.bz28640KB2012-04-250:00:00
u-boot-2012.04.tar.bz28639KB2012-04-210:00:00
u-boot-2012.07-rcl.tar.bz28946KB2012-07-100:00:00
u-boot-2012.07-rc2.tar.bz28937KB2012-07-220:00:00
u-boot-2012.07-rc3.tar.bz28936KB2012-07-270:00:00
u-boot-2012.07.tar.bz28939KE2012-07-300:00:00
u-boot-2012.10-rcl.tar.bz29174KB2012-10-040:00:00
u-boot-2012.10-rc2.tar.bz29196KB2012-10-040:00:00
u-boot-2012.10-rc3.tar.bz29237KB2012-10-080:00:00
u-boot-2012.10.tar.bz29229KB2012-10-150:00:00
u-boot-2013.01-rcl.tar.bz29218KB2013-01-160:00:00
u-boot-2013.01-rc2.tar.bz29417KB2013-01-160:00:00
u-boot-2013.01-rc3.tar.bz29488KB2013-01-160:00:00
u-boot-2013.01.01.tar.bz29482KB2013-02-010:00:00
u-boot-2013.01.tar.bz29489KB2013-01-160:00:00
u-boot-2013.04-rcl.tar.bz29463KB2013-03-050:00:00
u-boot-2013.04-rc2.tar.bz29577KB2013-04-040:00:00
u-boot-2013.04-rc3.tar.bz29613KB2013-04-160:00:00
u-boot-2013.04.tar.bz29607KE2013-04-190:00:00
u-boot-2013.07-rcl.tar.bz29662KB2013-06-140:00:00
u-boot-2013.07-rc2.tar.bz29762KE2013-07-040:00:00
u-boot-2013.07-rc3.tar.bz29828KB2013-07-180:00:00
u-boot-2013.07.tar.bz29832KB2013-07-230:00:00
u-boot-2013.10-rcl.tar.bz29724KB2013-08-210:00:00
u-boot-2013.10-rc2.tar.bz29712KB2013-09-020:00:00
u-boot-2013.10-rc3.tar.bz29762KB2013-09-170:00:00
u-boot-2013.10-rc4.tar.bz29788KB2013-10-040:00:00
u-boot-2013.10.tar.bz29793KB2013-10-160:00:00
u-boot-2014.01-rcl.tar.bz29833KB2013-11-260:00:00
u-boot-2014.01-rc2.tar.bz29906KB2013-12-170:00:00
u-boot-2014.01-rc3.tar.bz29928KE2014-01-140:00:00
u-boot-2014.0Ltar.bz29943KB2014-01-210:00:00
u-boot-2014.04-rcl.tar.bz29870KB2014-02-200:00:00
u-boot-2014.04-rc2.tar.bz29612KB2014-03-110:00:00
u-boot-2014.04-rc3.tar.bz29626KB2014-04-010:00:00
u-boot-2014.04.tar.bz29642KB2014-04-150:00:00
u-boot-2014.07-rcl.tar.bz29516KB2014-05-130:00:00
u-boot-2014.07-rc2.tar.bz29567KB2014-05-280:00:00
u-boot-2014.07-rc3.tar.bz29575KB2014-06-100:00:00
u-boot-2014.07-rc4.tar.bz29589KB2014-07-020:00:00
u-boot-2014.07.tar.bz29551KE2014-07-140:00:00
u-boot-2014.10-rcl.tar.bz29806KE2014-09-030:00:00
u-boot-2014.10-rc2.tar.bz29897KE2014-09-030:00:00
u-boot-2014.10-rc3.tar.bz29992KB2014-10-080:00:00
u-boot-2014.10.tar.bz29979KB2014-10-140:00:00
u-boot-2015.01-rcl.tar.bz29771KB2014-11-110:00:00
u-boot-2015.01-rc2.tar.bz29868KB2014-11-250:00:00
u-boot-2015.01-rc3.tar.bz29959KB2014-12-090:00:00
u-boot-2015.01.tar.bz29749KB2015-01-120:00:00
u-boot-2015.04-rcl.tar.bz28987KB2015-02-020:00:00
u-boot-2015.04-rc2.tar.bz29236KB2015-03-0412:25:00
u-boot-2015.04-rc3.tar.bz29233KB2015-03-0412:25:00
u-boot-2015.04-rc4.tar.bz29213KB2015-03-198:55:00
u-boot-2015.04-rc5.tar.bz29220KB2015-04-0123:05:00
u-boot-2015.04.tar.bz29250KE2015-04-178:43:00
u-boot-2015.07-rcl.tar.bz29477KB2015-06-099:00:00
u-boot-2015.07-rc2.tar.bz29682KE2015-06-099:01:00
u-boot-2015.07-rc3.tar.bz29691KB2015-07-0213:42:00
u-boot-2015.07.tar.bz29688KB2015-07-159:08:00
u-boot-2015.10-rcl.tar.bz29830KB2015-08-048:55:00
u-boot-latest.tar.bz22015-07-159:09:00
1.3uboot目錄介紹
uboot源碼按作用分別存放和管理不同的源程序。這些目錄中所要存放的文件有其規(guī)則,可以分為3類。
?與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān)。
?一些通用的函數(shù)或者驅(qū)動程序。
?U-Boot的應(yīng)用程序、工具或者文件。
表1.1U-Boot2010.12版本的源碼頂層目錄說明
目錄特性解釋說明
存放發(fā)板相關(guān)的目錄文件,如RPXlite(mpc8xx)、smdk2410(arm920t)
board平臺依賴
sc520_cdp(x86)等目錄
arch構(gòu)架相關(guān)存放了各種芯片構(gòu)架相關(guān)的文件
api通用存放U-Boot提供的接口函數(shù)
common通用通用的代碼,涵蓋各個方面,以命令行處理為主
disk通用磁盤分區(qū)相關(guān)代碼
lib通用存放u-boot源碼中使用到的庫函數(shù)
nand_spl通用NAND存儲器啟動相關(guān)代碼
include通用頭文件和開發(fā)板配置文件,所有開發(fā)板的配置文件都在configs目錄下
common通用通用的多功能函數(shù)實(shí)現(xiàn)
net通用存放網(wǎng)絡(luò)相關(guān)程序
fs通用存放文件系統(tǒng)相關(guān)程序
post通用存放上電自檢程序
drivers通用通用的設(shè)備驅(qū)動程序,主要有以太網(wǎng)接口的驅(qū)動
disk通用硬盤接口程序
examples應(yīng)用例程一些獨(dú)立運(yùn)行的應(yīng)用程序的例子,如he11oworld
tools工具存放制作S-Record或者U-Boot格式的鏡像等工具,如mkimage
doc文檔開發(fā)使用文檔
uboot可以支持很多CPU.
每種架構(gòu)下會有了構(gòu)架(arm7/9/ll.A8/9(armv7)等),每種構(gòu)架下會很多公司做芯片,-務(wù)公司使用?種
構(gòu)架乂會有很多個子類芯片(如三星A9構(gòu)架生產(chǎn)了EXYNOS4412,EXYNOS4212等),具體一個型號的芯片乂可
以做成不同的產(chǎn)品,不同開發(fā)板,不同開發(fā)板,板上外設(shè)硬件可能不一樣,這樣就會有底代碼不同。所以,u-boot
支持很多板子,就必須要分別為每一型號開發(fā)板編寫特定的板級代碼。
一個u-boot.bin一般支持一個板。
重點(diǎn)關(guān)注的文件:
arch/arm/arch/arm/cpu/芯片子構(gòu)架/這個目錄頂層的文件文件,匯編文件是構(gòu)架級相關(guān)文件。
arch/arm/arch/arm/cpu/芯片子構(gòu)架/芯片具體系列名/這個目錄存放是具體芯片型號相關(guān)的代碼。
arch/arm/include/asm/xxxxx.harm架構(gòu)公共頭文件
arch/arm/include/asm/arch-芯片構(gòu)架名/子架構(gòu)公共頭文件
arch/arm/include/asm/arch-芯片系列名/芯片系列公共頭文件
board/芯片廠家名/開發(fā)板名/板級相關(guān)的文件,每個開發(fā)板一個文件夾。
include/configs/開發(fā)板名.h板級配置頭文件,一個開發(fā)板有一個同名頭文件。
boards.cfg:這個在高版本的u-boot中用來存放各個開發(fā)板的基木配置信息,在低版本中這些配置是寫在頂
層Makefile中。
其他:
命令存放:common
外設(shè)驅(qū)動:drivers
外設(shè)驅(qū)動頭文件:include
1.4uboot配置編譯分析
JBoot的源代碼包含對幾十種處理器、數(shù)百種開發(fā)板的支持??墒菍τ谔囟ǖ拈_發(fā)板,配置編譯過程只需其
中部分程序。這里以EXYNOS4412處理解為例,具體分析EXYNOS4412處理器和開發(fā)板所依賴的程序,以及U-
Boot的通用函數(shù)和工具。
l-Boot的源碼是通過gcc和Makefile組織編譯的。頂層目錄下的Makefile可以通過包含boards.cfg來設(shè)置開
發(fā)板的定義,然后遞歸地調(diào)用各級子目錄下的Makefile,最后把編譯過的程序鏈接成U-Boot映像。
1.5uboot移植簡要步驟
工.配置u-boot支持哪個開發(fā)板
maketiny4412_config
2.編譯
配置分析:
maketiny4412_config會執(zhí)行在當(dāng)前目錄下找Makefile,在Makefile中找名為tiny4412_config的目標(biāo)。
在Makefile:中杳找tiny4412_config沒有找到,但是搜索_config可以找到以下目標(biāo):
537%_config::unconfig
538@$(MKCONFIG)-A$(@:_config=)
上面是%可以表示任意數(shù)后字符,所以maketiny4412_config會被匹配%,執(zhí)行的就這是一個目標(biāo)。
1)先完成依賴unconfig
532unconficj:
533@rm-f$(obj)include/config.h$(obj)include/config.mk\
534$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp\
535$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep
上面主要是刪除了上一次配置的信息,驗(yàn)證如下:
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/config.h
include/config.h
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/config.mk
include/config.mk
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/autoconf.mk
include/autoconf.mk
[root@localhostuboot_tiny4412-sdkl506]#makeunconfig
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/config.h
Is:無法訪問include/config.h:沒有那個文件或目錄
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/autoconf.mk
Is:無法訪問include/autoconf.mk:沒有那個文件或目錄
[root@localhostuboot_tiny4412-sdkl506]#Isinclude/autoconf.mk
Is:無法訪問include/autoconf.mk:沒有那個文件或目錄
[root@localhostuboot_tiny4412-sdkl506]#
2)執(zhí)行$(MKCONFIG)-A$(@:_config=)
$(MKCONFIG):變量引用
112MKCONFIG:=$(SRCTREE)/mkconfig
113exportMKCONFIG
MKCONFIG其實(shí)是指向mkconfig這個shell腳本,過程請觀看網(wǎng)校視頻。
展開就是
mkconfig-A$(@:_config=)
完整語句:
%_config;:unconfig
mkconfig-A$(@:_config=)
當(dāng)mkconfig-A$(@:_config=)執(zhí)行時候$0是mkconfig,$1是-A,
找查開發(fā)板配置:
if[\($#-eq2\)-a\("$1"=H-A"\)];then
#Automaticmode
line='egrep-i"A[[:space:]]*${2}[(:space:])"boards.cfg'11{
echo"make:***Noruletomaketarget\'$2_config'.Stop.">&2
exit1
)
set${line}
#adddefaultboardnameifneeded
[$#=31&&set${line}${l}
fi
分析
if[\($#-eq2\)-a\("$l"="-A"\)]:參數(shù)是否等于2,并且$1值為-A判斷成立,則執(zhí)行then下面語句。
line='egrep-i,,A[[:space:]]*${2}[[:space:]]"boards.cfg'定義一個就變量,
然后把egrep-i"A[[:space:]]*${2}[[:space:]]"boards.cfg命令執(zhí)行的結(jié)果賦值給line.
這個命令會在boards.cfg中查找包含${2}的字符串,取出這一行內(nèi)容。
boards.cfg:這個在高版本的u-boot中用來存放各個開發(fā)板的基本配置信息,在低版本中這些配置是寫在頂
層Makefile中。
其他:
執(zhí)行結(jié)果:
a.把a(bǔ)rch/arm/include/asm目錄做一個鏈接到include/asm
b.把a(bǔ)rch/arm/include/asm/proc-armv做一個鏈接:arch/arm/include/asm/proc
c,生成成以下兩個文件:
include/config.h
include/config.mk
include/config.h內(nèi)容:
makefilegsdf.shX]同"Makefile*?但?mkconfig)|國config.hX?config.mkM
1/*Automaticallygenerated-donotedit*/
2#defineCONFIGBOARDDIRboard/samsung/tiny4412
3#include<config_defaults.h>
4#include<configs/tiny4412.h>
5#include<asm/config.h>|
上面有tiny4412.h的文件,這一個告訴我們移植uboot要有一個和開發(fā)板同名的頭文件。
include/config.mk內(nèi)容:
makefileX[\±sdf.shM曰,MakefileXmkconfigX回config.hxjconfig.mkX
1ARCH=arm
2CPU=armv7
3BOARD=tiny4412
4VENDOR=Samsung
5SOC=exynos
上面是定義了一些變量,這個文件會在頂層MakefM中引用,有來抽取和具體開發(fā)板相關(guān)的文件進(jìn)行編譯。
頂層Makefile包含了這個文件,并且把這個文件中的變量導(dǎo)成全局的:
makefile::sdf.sh"MakefileXconfig.mkMmkc
154#loadARCH,BOARD,andCPUconfiguratioi
155include$(obj)include/config.mk|
156exportARCHCPUBOARDVENDORSOC
編譯分析:make
make會查找makefile第一個目標(biāo),一般是all。
makefileX、sdf.shMakefileX||"Kconfig.mkXmkconfigXCconfig.hN
333#AlwaysappendALLsothatarchconfig.mk'scanaddcustomones
334ALL+=$(obj)u-boot.srecS(obj)u-boot.bin$(obj)System.map$(U_BOOT_NAND)S(UBOOTONENAND)
335
336)11:$(ALL)
337
先找依賴:
ALL,在Makefile中定義:
ALL+=$(obj)u-boot.srec$(obj)u-boot.bin$(obj)System.map$(U_BOOT_NAND)$(U_BOOT_ONENAND)
分解后:
all:$(obj)u-boot.srec${obj)u-boDt.bin$(obj)System.map$(U_BOOT_NAND)$(U_BOOT_ONENAND)
上面又是多個依賴,從左到右分別實(shí)現(xiàn),第1個是$(obj)u-boot.srec,先查找目錄是否有這個文件,如果
沒有編譯過,是不會有這個文件的,所以會在本Makefile查找實(shí)現(xiàn)它的規(guī)則目標(biāo)。
$(obj)u-boot.srec:$(obj)u-boot
$(OBJCOPY)-Osrec$<5@
上面的依賴$(obj)u-boot,再判斷$(obj)u-boot文件是否存在,如果沒有編譯過,是不會有這個文件的,
所以會在本Makefile查找實(shí)現(xiàn)它的規(guī)則目標(biāo)。
$(obj)u-boot:depend\
$(SUBDIRS)$(OBJS)$(LIBBOARD)$(LIBS)$(LDSCRIPT)$(obj)u-boot.lds
$(GEN_UBOOT)
上面的\表示換行,告訴編譯器,這一行沒有完,連接一下行。
實(shí)際就是:
$(obj)u-boot:depend$(SUBDIRS)$(OBJS)$(LIBBOARD)$(LIBS)$(LDSCRIPT)$(obj)u-boot.lds
$(GEN_UBOOT)
以LIBS變量為例子杳看Makefile文件,怎么給LIBS賦值的,實(shí)現(xiàn)哪些文件要編譯。
190ifdefSOC
191LIBS+=$(CPUDIR)/$(SOC)/lib$(SOC).o
192endif
193ifeq($(CPU),ixp)
194LIBS+=arch/arm/cpu/ixp/npe/libnpe.o
195endif
196LIBS+=arch/$(ARCH)/lib/lib$(ARCH).o
還有一些通用的代碼:
197LIBS+=fs/cramfs/1ibcramfs.ofs/fat/libfat.ofs/fdos/libfdos.of
198fs/reiserfs/1ibreiserfs.ofs/ext2/libext2fs.ofs/yaffs2/libyaffs2
199fs/ubifs/libubifs.o
200LIBS+=net/libnet.o
201LIBS+=disk/libdisk.o
202LIBS+=drivers/bios_emulator/libatibiosemu.o
203LIBS+=drivers/block/libblock.o
204LIBS+=drivers/dma/libdma.o
205LIBS+=drivers/fpga/libfpga.o
1.5.2在u-boot添加一個xyd4412開發(fā)板相關(guān)文件
1.添加一個xyd4412的配置信息
修改boards.cfg,仿照一款最接近的開發(fā)板添加相應(yīng)信息
文件格式說明:
#TargetARCHCPUBoardnameVendorSoCOptions
make目標(biāo)名構(gòu)架名芯片子構(gòu)架開發(fā)板名芯片廠家名芯片系列名參數(shù)(可選)
Vendor:是對應(yīng)board/下面的廠家子目錄,如Samsung
Boardname:是對應(yīng)board/廠家名/下的開發(fā)板目錄名,如board/samsung/tiny4412
tiny4412armarmv7tiny4412Samsungexynos
按照以上格式添加一個xyd4412的開發(fā)板配置:
xyd4412armarmv7xyd4412Samsungexynos
2.創(chuàng)建必須的文件:板級文件和板級配置頭文件
一般情況是復(fù)制最接近的開發(fā)板的文件,如下:
板級文件:
[root@localhostuboot_tiny4412-sdkl506]#cdboard/samsung/
[root@localhostSamsung]#cptiny4412/xyd4412-r
板級配置頭文件:
[root@localhostSamsung]#cd../../include/configs/
[root@localhostconfigs]#cptiny4412.hxyd4412.h
[root@localhostconfigs]#
3.先配置
回到源碼頂層目錄;
[root@localhostuboot_tiny4412-sdkl506]#makedistclean先清上次其他板1=1標(biāo)文件
[root@localhostuboot_tiny4412-sdkl506]#makexyd4412_config
awk'(NF&&$1!~/A#/){print$1"$1"_config;$(MAKE)"}'boards.cfg>.boards.depend
/root/test/uboot_tiny4412-sdkl506/mkconfig-Axyd4412
Configuringforxyd4412board...
[root@localhostuboot_tiny4412-sdkl506]#
4.編譯,驗(yàn)證一下文件是否齊全
[root@localhostuboot_tiny4412-sdkl506]#make
最后出錯了,并且錯誤發(fā)生鏈接階段上,而編譯階段沒有錯,說明文件是齊全的,并且沒有語法錯誤。只可
能是鏈接腳本出問題。
arm-linux-ld:cannotfindboard/samsung/tiny4412/libtiny4412.o
make:***[u-boot]錯誤1
[root@local.hostuboot_tiny4412-sdkl506]#|
在Makefile中鏈接腳本指定:
arm-linux-ld-Bstatic-Tu-boot?Ids-pie-Ttext0xc3e00000
SUNDEF_SYMarch/arm/cpu/armv7/start,o-一start-groupapi/liba
指定了u-boot.Ids,所以打開board/samsung/xyd4412/u-boot」ds:
.text:用來指定代碼存儲位置,用戶可以指定代碼存放順序,如果不指定就是隨機(jī)存放,由于u?boot前端代
碼需要實(shí)現(xiàn)片外DDR初始化,并且把整個u-boot搬運(yùn)到DDR中的功能,必須保證這部分代碼排列在最前端。
其中有使用一絕對路徑鏈接文佇,所以會報錯:
.text:
(
arch/arm/cpu/armv7/start.o(.text)
board/samsung/tiny4412/libtiny4412.o(.text)
arch/arm/cpu/armv7/exynos/libexynos.o(.text)
*(.text)
)
修改成自己的開發(fā)板路徑:
.text:
arch/arm/cpu/armv7/start.o(.text)
board/samsung/xyd4412/libxyd4412.o(.text)
arch/arm/cpu/armv7/exynos/libexynos.o(.text)
*(.text)
修改后保存重新編譯即可。下載到sd卡上測試。
說明:
按照上面的方法只是完成移植的第一階段,如果你的核心板和參照信心板器件,電路完全相同,則這樣修
改,u-boot可以啟動的。如果你的DDR換了,時序和原來的不兼容,則你還需要修改初始化DDR部分的源碼。
如果你的板子啟動時候還需要依賴其他的外設(shè),則還需要修改板級文件中的代碼,增加對外設(shè)的初始化。
修改源碼屬于移植u-boot的第二階段,難點(diǎn)就在這個階段。要知道修改哪些文件,你就必須清楚“boot啟
動流程中執(zhí)行了哪些文件,執(zhí)行順序是什么。
1.6板級配置文件介紹
我們在修改源碼,裁剪u-boot功能基本上都要修改這個文件來實(shí)現(xiàn)。
路徑:include/configs/開發(fā)板名上
如:include/configs/xyd4412.h
重要的宏配置:
ffdefineCONFIG_BOARD_NAME"XYD4412"開發(fā)板名
命令提示符:
^defineCONFIG_SYS_PROMPT"XYD4412#"
#defineCONFIG_IDENT_STRING"forTINY4412"
U-Boot2010.12(Nov272016-00:43:00)forTINY4412
#defineCONFIG_SYS_SDRAM_BASE0x40000000外擴(kuò)內(nèi)存的起始地址,根據(jù)實(shí)際修改。
4412可擴(kuò)展的內(nèi)存空間:
0x4000_00000xA000_00001.5GBMemoryofDynamicMemoryController(DMC)-O
0xA000_00000x0000_0000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考泗縣三模試卷及答案
- 高職文秘實(shí)操考試題及答案
- 2025年斗羅大陸一考試題及答案
- 朔州安全生產(chǎn)宣教手冊講解
- 2025年夏縣村官考試真題及答案
- 2025年新加坡入境測試題及答案
- 2025年煤礦維護(hù)電工試題及答案
- 2025江蘇蘇州高新區(qū)獅山街道農(nóng)村社區(qū)股份合作聯(lián)社招聘2人備考考試題庫及答案解析
- 2025云南楚雄州委招聘公益性崗位工作人員1人筆試備考重點(diǎn)試題及答案解析
- 2025湖南益陽市赫山區(qū)桃花侖街道公益性崗位工作人員招聘筆試備考重點(diǎn)題庫及答案解析
- 醫(yī)院布草洗滌服務(wù)方案(技術(shù)方案)
- 游戲:看表情符號猜成語PPT
- 手術(shù)室醫(yī)療廢物的管理
- 普通機(jī)床主傳動系統(tǒng)的設(shè)計課程設(shè)計說明書
- 班組工程進(jìn)度款申請表
- 四年級閱讀訓(xùn)練概括文章主要內(nèi)容(完美)
- JJG 1033-2007電磁流量計
- GB/T 629-1997化學(xué)試劑氫氧化鈉
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 2895-2008塑料聚酯樹脂部分酸值和總酸值的測定
- 水利工程監(jiān)理規(guī)劃78648
評論
0/150
提交評論