u-boot 2013.04-rc1移植(2)
2017-11-11 19:00
239 查看
模板建立
原生u-boot里面支持了很多种的架构的mcu,但并没有对s3c6410进行适配,需要参考已有的s3c6400相关文件,对源码进行修改,增加对6410的支持。1、将下载好的u-boot-2013.04.tar.bz2解压,里面包含如下信息
eric@eric-PC:~/Documents/u-boot-2013.04-rc1$ ls api config.mk drivers include mkconfig rules.mk arch COPYING dts lib nand_spl snapshot.commit board CREDITS examples MAINTAINERS net spl boards.cfg disk fs MAKEALL post test common doc helper.mk Makefile README tools
2、修改顶层Makefile,将所有6400,替换成6410。
smdk6410_noUSB_config \ smdk6410_config : unconfig @mkdir -p $(obj)include $(obj)board/samsung/smdk6410 @mkdir -p $(obj)nand_spl/board/samsung/smdk6410 @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk @if [ -z "$(findstring smdk6410_noUSB_config,$@)" ]; then \ echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\ else \ echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\ fi @$(MKCONFIG) smdk6410 arm arm1176 smdk6410 samsung s3c64xx @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
3、尝试对6410进行配置
eric@eric-PC:~/Documents/u-boot-2013.04-rc1$ make smdk6410_config warning: Please migrate to boards.cfg. Failure to do so will mean removal of your board in the next release. Configuring for smdk6410 board... eric@eric-PC:~/Documents/u-boot-2013.04-rc1$
Configuring for smdk6410 board…可以成功配置6410!
4、修改相关文件6400字段为6410,包含以下两种情况
a、文件中含有6400字段替换成6410(包括头文件引用和宏判断、定义)
b、含有6400字段的文件夹,均复制出相应的6410文件夹,包含文件夹中的文件
涉及的文件如下:
1、u-boot-2013.04-rc1/arch/arm/cpu/arm1176/s3c64xx/cpu_init.S
2、u-boot-2013.04-rc1/arch/arm/cpu/arm1176/s3c64xx/Makefile
3、u-boot-2013.04-rc1/arch/arm/cpu/arm1176/s3c64xx/Reset.S
4、u-boot-2013.04-rc1/arch/arm/cpu/arm1176/s3c64xx/speed.c
4、u-boot-2013.04-rc1/arch/arm/cpu/arm1176/s3c64xx/timer.c
5、u-boot-2013.04-rc1/arch/arm/include/asm/arch-s3c64xx/s3c64x0.h
6、u-boot-2013.04-rc1/board/samsung/smdk6410 【添加smdk6410文件夹】
7、u-boot-2013.04-rc1/drivers/mtd/nand/s3c64xx.c
8、u-boot-2013.04-rc1/drivers/usb/host/s3c64xx-hcd.c
9、u-boot-2013.04-rc1/drivers/serial/s3c64xx.c
10、u-boot-2013.04-rc1/include/common.h 【defined(CONFIG_S3C6410) || \】
11、u-boot-2013.04-rc1/drivers/usb/host/ohci-hcd.c 【defined(CONFIG_S3C6410) || \】
5、公共文件夹中添加6410头文件(复制6400.h)
u-boot-2013.04-rc1/arch/arm/include/asm/arch-s3c64xx/s3c6410.h
u-boot-2013.04-rc1/include/configs/smdk6410.h
6、以上修改完成,模板基本已经添加了6410所需的支持。尝试进行编译
... /usr/local/arm/arm-linux-gcc-4.4.3/bin/.arm-none-linux-gnueabi-ld:u-boot.lds:19: syntax error Makefile:569: recipe for target 'u-boot' failed make: *** [u-boot] Error 1 eric@eric-PC:~/Documents/u-boot-2013.04-rc1$
发现第一个错误:u-boot.lds:19: syntax error
语法错误,修改u-boot-2013.04-rc1/board/samsung/smdk6410/u-boot-nand.lds 51,56行(由于文件会随时修改,具体行数会有出入)
. = align(4); —> . = ALIGN(4);
7、再次编译
make[1]: Leaving directory '/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410' Makefile:603: recipe for target 'nand_spl' failed make: *** [nand_spl] Error 2
第二个错误:Makefile:603: recipe for target ‘nand_spl’ failed
修改: /home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410/Makefile
34行,添加 crt0.o
SOBJS = start.o cpu_init.o lowlevel_init.o crt0.o ##eric++ crt0.o
71行:添加
$(obj)crt0.S: @rm -f $@ @ln -s $(TOPDIR)/arch/arm/lib/crt0.S $@
8、再次编译
...
crt0.o: In function `clbss_l':
/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410/crt0.S:153: undefined reference to `coloured_LED_init'
/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410/crt0.S:154: undefined reference to `red_led_on'
Makefile:59: recipe for target '/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/u-boot-spl' failed
make[1]: *** [/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/u-boot-spl] Error 1
make[1]: Leaving directory '/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410' Makefile:603: recipe for target 'nand_spl' failed make: *** [nand_spl] Error 2
错误,修复:/home/eric/Documents/u-boot-2013.04-rc1/nand_spl/board/samsung/smdk6410/crt0.c
153行:添加CONFIG_NAND_SPL限制
#ifndef(CONFIG_NAND_SPL) bl coloured_LED_init bl red_led_on #endif
9、再此编译
... make -C examples/api all make[1]: Entering directory '/home/eric/Documents/u-boot-2013.04-rc1/examples/api' make[1]: Nothing to be done for 'all'. make[1]: Leaving directory '/home/eric/Documents/u-boot-2013.04-rc1/examples/api' eric@eric-PC:~/Documents/u-boot-2013.04-rc1$
至此,Nothing to be done for ‘all’.所以内容全部编译通过!!!
虽然,编译已经通过,但目前还并不能成功启动开发板,因为底层驱动,如SD卡,NAND falsh等还未进行适配。
8b93
相关文章推荐
- u-boot 2013.04-rc1移植(7)
- u-boot 2013.04-rc1移植(4)
- u-boot 2013.04-rc1移植(1)
- u-boot 2013.04-rc1移植(5)
- u-boot 2013.04-rc1移植(3)
- u-boot 2013.04-rc1移植(6)
- bootloader---22.u-boot-2010.06-rc1移植之2搭建框架
- bootloader---23.u-boot-2010.06-rc1移植之3nand flash移植
- bootloader---24.u-boot-2010.06-rc1移植之4saveenv
- bootloader---25.u-boot-2010.06-rc1移植之5usb下载
- 2013.04-rc2uboot移植(建立编译模板)
- 移植u-boot-2011.09-rc1到FL2440(2)
- 移植u-boot-2011.09-rc1到FL2440(3)
- OK6410 uboot2013.04-rc1 DM9000移植及tftp配置使用
- 移植u-boot-2011.09-rc1到FL2440(1)
- bootloader---21.u-boot-2010.06-rc1移植之调试的思路
- U-BOOT源码分析及移植
- 【TINY4412】U-BOOT移植笔记:(8)SD卡驱动
- 1uboot移植要点[原创☆☆]
- 基于U-BOOT-2010.09移植OK6410开发版记录(三)