本次移植是将uboot-1.1.6移植到s3c2410开发板上
一、创建开发板目录,修改相应的makefile及相关文件
创建开发板目录board/s3c2410, 找到相似的开发板board/smdk2410,将此目录中文件全部copy到s3c2410目录中。
由于我的开发板用的flash是intel的E28F128J3A,所以要寻找这个flash的驱动。将board/cmi中的flash.c文件copy到s3c2410目录下,并改名为flash_e28_cmi.c 。
修改board/s3c2410/Makefile中的
COBJS := smdk2410.o flash.o 为
COBJS := smdk2410.o flash_e28_cmi.o
将include/configs/目录下的smdk2410.h在本目录中复制并改名为s3c2410.h。这个是开发板的配置头文件。
修改顶层Makefile,在
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
下添加
s3c2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t s3c2410 NULL s3c24x0
修改board/s3c2410/config.mk,将
TEXT_BASE = 0x33F80000
改为
TEXT_BASE = 0x33E80000。
这个为什么这样改,我还没弄清楚,只是我看到有移植好的定的就是这个值。有知道的希望留个言,在此先谢过。
在这里说说TEXT_BESE这个变量在编译和链接时怎么传递的。在顶层目录下的config.mk中,有这么一行代码
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk
先将上述变量所在的文件包含,然后有两个定义
CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS) /
-D__KERNEL__ -DTEXT_BASE=$( TEXT_BASE) /
CFLAGS := $( CPPFLAGS) -Wall -Wstrict-prototypes
这是在编译时用到的选项。这样在编译时通过-DTEXT_BASE=$( TEXT_BASE)定义,就把TEXT_BASE的值传递到各使用到该变量的源文件,如cpu/arm920t.S 中就用到这个变量。
还有一个变量的定义
LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
这个是在链接时用的到选项,根据-Ttext选项的指示,链接脚本链接时就可以使用TEXT_BASE的值了。
到此,开发板的一系列目录、文件及编译链接相关的事项都已完成,下面就是要修改相就文件的代码以及开发板配置头文件的配置选项,以适合我的开发板上的芯片特性。