U-boot移植之创建板相关文件

 

U-boot移植之创建板相关文件


简述:手上只有real6410,以之为例,以官方源码中相近的boardreal6410创建一个新的board配置

开发板real6410简要介绍

cpus3c6410 s3c64xx家族 arm1176系列 提供商samung


一、官方源码获取



  1. 官方源码码根目录Readme中“Whereto get source code”一节给出了两种获取方

这里直接通过ftp下载当前最新源码u-boot-2012.10.tar.bz2


很幸运,源码中给出了smdk6400板的配置和real6410十分相近。因此,以它的文件和配置为real6410新建一个配置。先将相应目录及文件准备好,再进行具体的修改。


二、修改根目录makefile

原本u-boot新配置方案是不用修改makefile而只需要在boards.cfg添加相应内容就好,但smdk6400并没有采用新的配置方案。所以boards.cfg对其不起作用,只能修改makefile


  1. 复制并粘贴目标smdk6400_config(即以下内容),并修改所有的64006410。这一步的目的是在运行makesmdk6410_config时能产生正确的板配置文件,这样执行make时才能生成u-boot镜像。

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



三、创建平台相关文件


  1. cpu相关源代码文件

进入arch/arm/cpu/arm1176目录,新建文件夹s3c6410s3c6400并将当前目录所有文件复制到这两个目录中。由于修改了目录结构,所以会造成库libs3c64xx.o缺失。所以在根目录下的makefile中找到

$(CPUDIR)/$(SOC)/lib$(SOC).o修改为$(CPUDIR)/$(SOC)/s3c6410/lib$(SOC).o 这个方法不好,在编译其他板的时候必需将这个修改回原状。

另外,进入s3c6410文件夹,依次打开每个文件,将6400全部替换成6410


  1. cpu相关头文件

进入arch/arm/include/asm/arch-s3c64xx目录,复制s3c6400.h并重命名为s3c6410.h放到该目录。

同样打开s4c6410.h,将6400全部替换成6410


  1. 板相关源代码文件

进入目录board/samsung/复制smdk6400夹及其内容并重命名为smdk6410

进入smdk6410将所有文件的文件名,及文件内容里的6400全部替换成6410


  1. 板相关头文件

进入目录include/configs/复制smdk6400.h并重命名为smdk6410.h

同样打开文件,替换全部的64006410


  1. nand起动step_1相关文件

这部分代码在nand起动的时候负责初始化dram并将完整的u-boot镜像拷贝到dram。然后跳转到dram中的u-boot运行。

进入目录nand_spl/board/samsung/复制smdk6400夹及其内容并重命名为smdk6410

进入smdk6410将所有文件的文件名,及文件内容里的6400全部替换成6410

另外找到/arch/arm/cpu/arm1176/s3c64xx/cpu_init.S$@修改为

/arch/arm/cpu/arm1176/s3c64xx/s3c6410/cpu_init.S$@ 这还是因为前面修改了目录结构的缘故。


  1. 修改部分板相关文件所包含的头文

这部分文件依然引用的是s3c6400.h这个头文件。所以,进入目录arch/arm/include/asm/arch-s3c64xx重命名s3c6400.h这个文件。如果不是有相近的板,这部分必需由开发者来实现。

然后在终端执行makesmdk6410_config 然后执行make命令让编译器帮我们找出来:

drivers/mtd/nand/s3c64xx.c //nand驱动

drivers/serial/s3c64xx.c //串口驱动

drivers/usb/host/s3c64xx-hcd.c //usb驱动

执行一次make命令根据错误提示可以找出一个文件,替换后再执行make命令,再根据错误提示的文件修改。是后将重命令的s3c6400.h的文件名改回来。


注意:这里我只执行make命令,是因为已经在根目录makefile中设置了make变量BUILD_DIR(即输出目录),在arch/arm/config.mk中设置了CROSS_COMPILE(arm交叉编译器前缀)。如果没有设置,请在执行makesmdk6410_configmake时,带上相应参数。


四、检测

执行makesmdk6410_config &&make命令,如果全程无错通过。那么新的一个板配置就创建好了,接下来的工作就是修改代码,及详细的配置宏等,然后编译出能够在新的开发板上运行的u-boot镜像了。



  1. 五、总结

    嗯,前面提到的很多问题的处理都很极端。破坏了u-boot原本的目录结构等,对公共文件如s3c64xx都是采用了直接修改的办法,这样的做法很不好。

    应该使用宏,make变量等让编译器及make自己根据配置来自动选择和处理。对文件,特别是公共文件及目录结构的修改更应该花些功夫来解决,让其不影响到其他开发板的编译。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值