大家好,小弟新接触嵌入式开发,目前正在学习u-boot的移植。我的开发板是ok6410板子,但是最新的u-boot2012.10上面没有针对该核心的CPU,有smdk6400的,于是我从网上搜索了一下一致的步骤,做了以下修改:
#############################################################################
1)Borads.cfg 中第56行 加入“zcg6410 arm arm1176 ok6410 samsung s3c6410”;
#cd u-boot-2011.06/board/samsung/ //进入目录
#mkdir zcg6410 //创建zcg6410文件夹
2) 因6410和6400的资源差不多,所以就以6400项目的代码作为模板,以后再修改
#cp -ar smdk6400/* zcg6410/ //将6400下所有的代码复制到6410下
#cd zcg6410 //进入zcg6410目录
#mv smdk6400.c zcg6410.c //将zcg6410下的smdk6400.c改名为zcg6410.c
#cd ../../../ //回到u-boot根目录
#cp include/configs/smdk6400.h include/configs/zcg6410.h //建立6410配置头文件
注:把新建zcg6410下smdk6400_nand_spl.c更名位zcg6410_nand_spl.c,并且把zcg6410_nand_spl.c和makefile文件中的6400改为6410。其他文件不需要改动。
3)修改u-boot跟目录下的Makefile文件。查找到smdk6400_config的地方,在他下面按照smdk6400_config的格式建立zcg6410_config的编译选项,另外还要指定交叉编译器
#vim Makefile
CROSS_COMPILE ?= arm-linux- //指定交叉编译器为arm-linux-gcc
zcg6410_noUSB_config \
zcg6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/zcg6410 // 注意@前不是空格,是Tab键
@mkdir -p $(obj)nand_spl/board/samsung/zcg6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@if [ -z "$(findstring zcg6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/zcg6410/config.tmp;\ //前面两个Tab键
$(MKCONFIG) $(@:_config=) arm arm1176 zcg6410 samsung s3c6410; \
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/zcg6410/config.tmp;\
$(MKCONFIG) $(@:_noUSB_config=) arm arm1176 zcg6410 samsung s3c6410; \
fi
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
*说明:arm :CPU的架构(ARCH)
arm1176:CPU的类型
zcg6410 :对应在board目录下建立新的开发板项目的目录
samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL
s3c64xx:CPU型号
*注意:编译选项格式的第二行要用Tab键开始,否则编译会出错
4)进入顶层目录nand_spl/board/samsung目录新建目录zcg6410,并将smdk6400下的文件复制到刚刚新建的zcg6410下
#cd nand_spl/board/samsung //
#cp –ar smdk6400/* zcg6410/
注:修改目此6410目录下的makefile文件,把里面的6400改为6410
5)测试编译新建的zcg6410开发板项目
#make zcg6410_config //如果出现Configuring for zcg6410 board...则表示设置正确
#make //编译后在根目录下会出现u-boot.bin和u-boot-nand.bin文件,则u-boot移植的第一步就算完成了
##################################################################################
上面的步骤1-4都完成了之后,make的时候出错了。。。。。。错误如下:
这个原因,好像是“‘>=’缺少了左操作符”,因此我又看了一下zcg6410.h的文档的第57行,如下图:
‘>=’的左操作符是“CONFIG_SYS_TEXT_BASE”。于是我认为是可能没有定义这个宏,但是我根据原来的u-boot make了一下smdk6400,完全可以。证明“CONFIG_SYS_TEXT_BASE”是定义过的。
我的问题是:
1.“CONFIG_SYS_TEXT_BASE”定义的位置在哪里?
2.如果确实定义了,那么为什么我会make失败呢?