版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录
目录1
u-boot介绍、编译流程分析及简要移植步骤2
102
1.0复习2
1.1内容提要2
1.2uboot源码获得2
1.2.1uboot官方网站2
1.2.2已经发发布的uboot版本列表2
1.3uboot目录介绍7
1.4uboot配置编译分析8
1.5uboot移植简要步骤8
1.5.2在u-boot添加一个xyd4412开发板相关文件12
1.6板级配置文件介绍14
1.7u-boot添加命令16
1.7.1基本知识介绍16
1.7.2添加自定义命令示例:17
u・boot介绍、编译流程分析及简要移植步骤
10
1.0复习
1.1内容提要
1.uboot源码获得
2.uboot目录介绍
3.uboot编译过程
4.uboot移植简要步骤
自己增加一个xyd4412开发板
xyd4412.h文件介绍
怎么添加一个命令
1.2uboot源码获得
1.2.1uboot官方网站
uboot的官方网站是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已经发发布的uboot版本列表
直接下载:ftp:〃ftp.denx.de/pub/u-boot/
以下给出FTP服务器提供下载的源码版本:
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源码按作用分别存放和管理不同的源程序。这些目录中所要存放的文件有其规则,可以分为3类。
•与处理器体系结构或者开发板硬件直接相关。
•一些通用的函数或者驱动程序。
•U-Boot的应用程序、工具或者文件。
表1.1U-Boot2010.12版本的源码顶层目录说明
目录特性解释说明
存放发板相关的目录文件,如RPXlite(mpc8xx)、smdk2410(arm920t)
board平台依赖
sc520_cdp(x86)等目录
arch构架相关存放了各种芯片构架相关的文件
api通用存放U-Boot提供的接口函数
common通用通用的代码,涵盖各个方面,以命令行处理为主
disk通用磁盘分区相关代码
lib通用存放u-boot源码中使用到的库函数
nand_spl通用NAND存储器启动相关代码
include通用头文件和开发板配置文件,所有开发板的配置文件都在configs目录下
common通用通用的多功能函数实现
net通用存放网络相关程序
fs通用存放文件系统相关程序
post通用存放上电自检程序
drivers通用通用的设备驱动程序,主要有以太网接口的驱动
disk通用硬盘接口程序
examples应用例程一些独立运行的应用程序的例子,如he11oworld
tools工具存放制作S-Record或者U-Boot格式的镜像等工具,如mkimage
doc文档开发使用文档
uboot可以支持很多CPU.
每种架构下会有了构架(arm7/9/ll.A8/9(armv7)等),每种构架下会很多公司做芯片,-务公司使用•种
构架乂会有很多个子类芯片(如三星A9构架生产了EXYNOS4412,EXYNOS4212等),具体一个型号的芯片乂可
以做成不同的产品,不同开发板,不同开发板,板上外设硬件可能不一样,这样就会有底代码不同。所以,u-boot
支持很多板子,就必须要分别为每一型号开发板编写特定的板级代码。
一个u-boot.bin一般支持一个板。
重点关注的文件:
arch/arm/arch/arm/cpu/芯片子构架/这个目录顶层的文件文件,汇编文件是构架级相关文件。
arch/arm/arch/arm/cpu/芯片子构架/芯片具体系列名/这个目录存放是具体芯片型号相关的代码。
arch/arm/include/asm/xxxxx.harm架构公共头文件
arch/arm/include/asm/arch-芯片构架名/子架构公共头文件
arch/arm/include/asm/arch-芯片系列名/芯片系列公共头文件
board/芯片厂家名/开发板名/板级相关的文件,每个开发板一个文件夹。
include/configs/开发板名.h板级配置头文件,一个开发板有一个同名头文件。
boards.cfg:这个在高版本的u-boot中用来存放各个开发板的基木配置信息,在低版本中这些配置是写在顶
层Makefile中。
其他:
命令存放:common
外设驱动:drivers
外设驱动头文件:include
1.4uboot配置编译分析
JBoot的源代码包含对几十种处理器、数百种开发板的支持。可是对于特定的开发板,配置编译过程只需其
中部分程序。这里以EXYNOS4412处理解为例,具体分析EXYNOS4412处理器和开发板所依赖的程序,以及U-
Boot的通用函数和工具。
l-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile可以通过包含boards.cfg来设置开
发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。
1.5uboot移植简要步骤
工.配置u-boot支持哪个开发板
maketiny4412_config
2.编译
配置分析:
maketiny4412_config会执行在当前目录下找Makefile,在Makefile中找名为tiny4412_config的目标。
在Makefile:中杳找tiny4412_config没有找到,但是搜索_config可以找到以下目标:
537%_config::unconfig
538@$(MKCONFIG)-A$(@:_config=)
上面是%可以表示任意数后字符,所以maketiny4412_config会被匹配%,执行的就这是一个目标。
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
上面主要是删除了上一次配置的信息,验证如下:
[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)执行$(MKCONFIG)-A$(@:_config=)
$(MKCONFIG):变量引用
112MKCONFIG:=$(SRCTREE)/mkconfig
113exportMKCONFIG
MKCONFIG其实是指向mkconfig这个shell脚本,过程请观看网校视频。
展开就是
mkconfig-A$(@:_config=)
完整语句:
%_config;:unconfig
mkconfig-A$(@:_config=)
当mkconfig-A$(@:_config=)执行时候$0是mkconfig,$1是-A,
找查开发板配置:
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"\)]:参数是否等于2,并且$1值为-A判断成立,则执行then下面语句。
line='egrep-i,,A[[:space:]]*${2}[[:space:]]"boards.cfg'定义一个就变量,
然后把egrep-i"A[[:space:]]*${2}[[:space:]]"boards.cfg命令执行的结果赋值给line.
这个命令会在boards.cfg中查找包含${2}的字符串,取出这一行内容。
boards.cfg:这个在高版本的u-boot中用来存放各个开发板的基本配置信息,在低版本中这些配置是写在顶
层Makefile中。
其他:
执行结果:
a.把arch/arm/include/asm目录做一个链接到include/asm
b.把arch/arm/include/asm/proc-armv做一个链接:arch/arm/include/asm/proc
c,生成成以下两个文件:
include/config.h
include/config.mk
include/config.h内容:
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要有一个和开发板同名的头文件。
include/config.mk内容:
makefileX[\±sdf.shM曰,MakefileXmkconfigX回config.hxjconfig.mkX
1ARCH=arm
2CPU=armv7
3BOARD=tiny4412
4VENDOR=Samsung
5SOC=exynos
上面是定义了一些变量,这个文件会在顶层MakefM中引用,有来抽取和具体开发板相关的文件进行编译。
顶层Makefile包含了这个文件,并且把这个文件中的变量导成全局的:
makefile::sdf.sh"MakefileXconfig.mkMmkc
154#loadARCH,BOARD,andCPUconfiguratioi
155include$(obj)include/config.mk|
156exportARCHCPUBOARDVENDORSOC
编译分析:make
make会查找makefile第一个目标,一般是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)
上面又是多个依赖,从左到右分别实现,第1个是$(obj)u-boot.srec,先查找目录是否有这个文件,如果
没有编译过,是不会有这个文件的,所以会在本Makefile查找实现它的规则目标。
$(obj)u-boot.srec:$(obj)u-boot
$(OBJCOPY)-Osrec$<5@
上面的依赖$(obj)u-boot,再判断$(obj)u-boot文件是否存在,如果没有编译过,是不会有这个文件的,
所以会在本Makefile查找实现它的规则目标。
$(obj)u-boot:depend\
$(SUBDIRS)$(OBJS)$(LIBBOARD)$(LIBS)$(LDSCRIPT)$(obj)u-boot.lds
$(GEN_UBOOT)
上面的\表示换行,告诉编译器,这一行没有完,连接一下行。
实际就是:
$(obj)u-boot:depend$(SUBDIRS)$(OBJS)$(LIBBOARD)$(LIBS)$(LDSCRIPT)$(obj)u-boot.lds
$(GEN_UBOOT)
以LIBS变量为例子杳看Makefile文件,怎么给LIBS赋值的,实现哪些文件要编译。
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开发板相关文件
1.添加一个xyd4412的配置信息
修改boards.cfg,仿照一款最接近的开发板添加相应信息
文件格式说明:
#TargetARCHCPUBoardnameVendorSoCOptions
make目标名构架名芯片子构架开发板名芯片厂家名芯片系列名参数(可选)
Vendor:是对应board/下面的厂家子目录,如Samsung
Boardname:是对应board/厂家名/下的开发板目录名,如board/samsung/tiny4412
tiny4412armarmv7tiny4412Samsungexynos
按照以上格式添加一个xyd4412的开发板配置:
xyd4412armarmv7xyd4412Samsungexynos
2.创建必须的文件:板级文件和板级配置头文件
一般情况是复制最接近的开发板的文件,如下:
板级文件:
[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标文件
[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.编译,验证一下文件是否齐全
[root@localhostuboot_tiny4412-sdkl506]#make
最后出错了,并且错误发生链接阶段上,而编译阶段没有错,说明文件是齐全的,并且没有语法错误。只可
能是链接脚本出问题。
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:用来指定代码存储位置,用户可以指定代码存放顺序,如果不指定就是随机存放,由于u・boot前端代
码需要实现片外DDR初始化,并且把整个u-boot搬运到DDR中的功能,必须保证这部分代码排列在最前端。
其中有使用一绝对路径链接文伫,所以会报错:
.text:
(
arch/arm/cpu/armv7/start.o(.text)
board/samsung/tiny4412/libtiny4412.o(.text)
arch/arm/cpu/armv7/exynos/libexynos.o(.text)
*(.text)
)
修改成自己的开发板路径:
.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部分的源码。
如果你的板子启动时候还需要依赖其他的外设,则还需要修改板级文件中的代码,增加对外设的初始化。
修改源码属于移植u-boot的第二阶段,难点就在这个阶段。要知道修改哪些文件,你就必须清楚“boot启
动流程中执行了哪些文件,执行顺序是什么。
1.6板级配置文件介绍
我们在修改源码,裁剪u-boot功能基本上都要修改这个文件来实现。
路径:include/configs/开发板名上
如:include/configs/xyd4412.h
重要的宏配置:
ffdefineCONFIG_BOARD_NAME"XYD4412"开发板名
命令提示符:
^defineCONFIG_SYS_PROMPT"XYD4412#"
#defineCONFIG_IDENT_STRING"forTINY4412"
U-Boot2010.12(Nov272016-00:43:00)forTINY4412
#defineCONFIG_SYS_SDRAM_BASE0x40000000外扩内存的起始地址,根据实际修改。
4412可扩展的内存空间:
0x4000_00000xA000_00001.5GBMemoryofDynamicMemoryController(DMC)-O
0xA000_00000x0000_0000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环氧乙烷灭菌管理规程
- 机械制造厂物料管理规范
- 某钢厂设备验收细则
- 电子厂产品检测细则
- 某木工厂采购管理细则
- 建筑工地安全施工制度
- 生成式大模型项目实战教案 项目1 解析生成式 AI 技术原理-DeepSeek- R1 开源大模型实战研究
- 安徽省2026八年级数学下册第17章一元二次方程及其应用17.5一元二次方程的应用2一元二次方程的应用平均变化率与数字问题上课课件新版沪科版
- AI在中医药现代化发展中的应用
- 2026年农产品质量安全试题及答案
- 2025四川遂宁产业投资集团有限公司招聘9人笔试参考题库必考题
- 实施指南(2025)《DL-T 1650-2016小水电站并网运行规范》
- 附着式升降脚手架施工方案
- 智能路灯分区节能管理方案
- 饮水工程方案投标文件(技术标)
- 海南省2024年普通高中学业水平合格性考试地理试卷(含答案)
- 安全生产论文5000字
- 2024-2025学年北师大版八年级数学(下)期末必考题型专项复习【40大考点】解析版
- 战伤救护技术课件
- 销售话术培训
- 主要施工机械设备、劳动力、设备材料投入计划及其保证措施
评论
0/150
提交评论