飞凌OK6410开发板之u-boot-2011.06-rc2移植之愚见(二)

2014-11-24 10:36:38 · 作者: · 浏览: 2
00/u-boot.lds,加完后保存,然后再编译一遍,这次OK。
第三步,刚刚第一步已经说了,这样编译的代码是无法加载到OK6410的板载内存里面运行的,因此需要修改相应的代码,为了避免破坏他人的劳动成果,还是另起炉灶,那就开始吧,在这之前,先介绍下几个移植需要重点关注的文件夹,一个是/u-boot-2011.06-rc2/board/文件夹,它代表板级相关代码资源,一个是/u-boot-2011.06-rc2/arch/文件夹,它代表CPU架构级资源,还有一个就是/u-boot-2011.06-rc2/nand_spl/文件夹,那就以我的OK6410为例来说明吧:
1,在/u-boot-2011.06-rc2/board/下新建文件夹:mkdir feilin/ok6410(飞凌)
2,将/u-boot-2011.06-rc2/board/samsung/smdk6400/所有文件复制到/u-boot-2011.06-rc2/board/feilin/ok6410下,cp ../../samsung/smdk6400/* ./
3,将smdk6400.c改名为ok6410.c ,mv smdk6400.c ok6410.c
将smdk6400_nand_spl.c改名为ok6410_nand_spl.c mv smdk6400_nand_spl.c ok6410_nand_spl.c 将Makefile 打开,用vi 或是gedit都行,更改COBJS-y := ok6410.o,
4,在/u-boot-2011.06-rc2/nand_spl/board/下新建文件夹:mkdir feilin/ok6410
5,将/u-boot-2011.06-rc2/nand_spl/board/samsung/smdk6400/所有文件复制到/u-boot-2011.06-rc2/nand_spl/board/feilin/ok6410/, cp ../../samsung/smdk6400/* ./ ,并更改Makefile内与板级有关的部分,截图为


6,将u-boot-2011.06-rc2/include/configs/smdk6400.h 复制一份并更名为ok6410.h,mv smdk6400.h ok6410.h这个是必需的哦,要不然无法完成编译,这上面全是板级配置资源,现在不必修改
7,将u-boot-2011.06-rc2/arch/arm/include/asm/arch-s3c64xx/s3c6400.h复制一份,并更名为s3c6410.h mv s3c6400.h s3c6410.h,可能有人会问干嘛复制这个文件呢,其实这个文件代表的就是CPU_S3C6410的资源代码,必定会与CPU_S3C6400有所不同,方便以后修改,不破坏SMDK6400的,所以在这里就需要将3条里面的ok6410.c里面用用到的头文件换成s3c6410.h,凡事遇到s3c6400.h的地方都换成s3c6410.h
8,也是这一步中的最后一个环节了,就是修改u-boot-2011.06-rc2/根目录下的Makefile文件,这个是主导make文件,资源配置都是靠它的,修改截图1


并在其后添加
CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
export CROSS_COMPILE ,也就是指定自己的交叉编译器,最后就是找到arm1176systems

smdk6400_noUSB_config /
smdk6400_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/smdk6400
@mkdir -p $(obj)nand_spl/board/samsung/smdk6400
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

@if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then /
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;/
else /
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;/
fi
@$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
修改为
ok6410_noUSB_config /
ok6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/feilin/ok6410
@mkdir -p $(obj)nand_spl/board/feilin/ok6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring ok6410_noUSB_config,$@)" ]; then /
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/feilin/ok6410/config.tmp;/
else /
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/feilin/ok6410/config.tmp;/
fi
@$(MKCONFIG) ok6410 arm arm1176 ok6410 feilin s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
以上第三步看起来步骤很多,其实则不然,归根到底就是COPY,将SMDK6400的板载资源代码复制一份到自己建的OK6410中,看是OK6410,其实用的还是SMDK6400的代码,呵呵,只不过现在改动就不要紧了,相当于是在一份副本上修改了,对吧,所以到目前为止,我们做的工作还是停留在COPY阶段,当然,这个时候最好先make ok6410_config 然后在make ,如果编译无问题,那恭喜你,已经离成功很近了,当然了,其实这个时候你编译的代码U-BOOT.BIN其实还是SMDK6400的,所以和你第二步编译的是一个代码,仍无法在OK6410上跑起来。好了,既然我们已经有了SMDK6400的副本了,就该为它做点啥子修改了,要不然可就对不住自己前面的那一番折腾啊,对吧。
第四步:先来说说我到这一步当时的想法吧,由于手头没有啥子SDRAM内程序调试工具,就只有个串口,也只能借助串口来调试了,关键是现在串口根本就没有输出,不知