最近这两周的空余时间一直在研究uboot,移植过程中也遇到了很多问题,开贴说一下自己的理解。
uboot代码我是下载的206年7月分的版本(u-boot-2016.07.tar.bz2),下载地址:ftp://ftp.denx.de/pub/u-boot/
目标开发板:AQ2440,CPU为三星s3c2440。
第一步:在uboot代码中添加对开发板的支持
uboot虽然已经支持了很多处理器平台,但是也没有做到将市面上的所有CPU都进行适配。所以我们在移植时可以选择一个已经适配了的CPU型号进行移植。uboot已经对s3c2410这一款CPU进行了适配,而s3c2440与s3c2410相近,所以我选择了在s3c2410的代码上进行修改,所以我直接将S3C2410的单板相关文件都复制为S3C2440的。
假设我们已经到了源码的根目录,执行以下操作:
a.在board中创建单板目录
[Bash shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode cd board/samsung/
cp smdk2410 -r smdk2440
然后修改Kconfig文件内容,将所有的”2410“替换为”2440“,替换后文件如下:
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode if TARGET_SMDK2440
修改MAINTAINERS文件,修改后如下:
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode SMDK2440 BOARD
M: David Müller <[email]d.mueller@elsoft.ch[/email]>
S: Maintained
F: board/samsung/smdk2440/
F: include/configs/smdk2440.h
F: configs/smdk2440_defconfig
修改Makefile,
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode obj-y := smdk2440.o
obj-y += lowlevel_init.o
最后将smdk2410.c改名为smdk2440.c
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode mv smdk2410.c smdk2440.c
创建单板相关头文件
同样,我们将include/configs/目录下的smdk2410.h文件复制为smdk2440.h
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode cd include/config
cp smdk2410.h smdk2440.h
然后修改两个宏定义,
修改前:#define CONFIG_S3C2410 /* specifically a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 /* on a SAMSUNG SMDK2410 Board */
修改后:
#define CONFIG_S3C2440 /* specifically a SAMSUNG S3C2440 SoC */
#define CONFIG_SMDK2440 /* on a SAMSUNG SMDK2440 Board */
c.创建defconfig文件
同样直接拷贝:
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode cd configs/
cp smdk2410_defconfig smdk2440_defconfig
拷贝过来以后,修改smdk2440_defconfig文件:
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode CONFIG_ARM=y
CONFIG_TARGET_SMDK2440=y
CONFIG_BOOTDELAY=5
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="SMDK2440 # "
CONFIG_CMD_USB=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
CONFIG_CMD_CACHE=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
d.修改arch/arm/Kconfig文件
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode vi arch/arm/Kconfig
添加如下内容:
[AppleScript] syntaxhighlighter_viewsource syntaxhighlighter_copycode config TARGET_SMDK2440
bool "Support smdk2440"
select CPU_ARM920T
source "board/samsung/smdk2440/Kconfig"
在上述操作完成后,尝试编译:
[Shell] syntaxhighlighter_viewsource syntaxhighlighter_copycode make smdk2440_config
make |