U-boot移植记录


今天完成了通用Uboot 移植于ARM开发板的修改 和 移植工作。我的操作环境是VMware 虚拟机 Ubuntu 10.10。ARM11开发板OK6410。 与其说是自己完成的,还不如说我是借鉴,照搬,套用,挪动...........等等等........呵呵!网上这类帖子挺多的,可以借鉴 ,等等优秀好文。我这里就仅仅总结一下自己的学习过程,以便帮助后来者,并方便自己以后查询。

虽然网络上的资源挺多的,当对一个菜鸟来说,编译起来那漫天的报错还是挺让人头疼的,如有你能找到别人已经做好了的ARM_Uboot,用他们的源码借鉴起来,就能让你学习的更快一些了,我自己就是借鉴飞凌OK6410的源码学习的。好了不罗嗦了,借鉴别人的博文来总结自己的学习过程,开始总结如下。

第一:下载通用u-boot源码。

U-Boot源代码下载地址

最好下载和你找到的ARM_u-boot 是一个版本的,这样你不会被一些版本上的差别所误导,下载完成后,解压Uboot,我的解压目录是Uboot1.1.6  ,我将它成为我们工作的根目录。

第二:修改Makefile

在根目录下: vim Makefile  然后瞎改交叉编译器环境变量,我修改的是 CROSS_COMPILE ?= /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-   在OK6410中实在endif 以后创建的该项,我也是按照这个操作的:

U-boot移植记录

第三:建立smdk6410_config 的编译选项,这个也就是你自己指定的ARM版子选项。在当前Makefile中 修改如下:先vim 命令查找:/smdk6410。修改为

smdk6410_config       :       uconfig

@$(MKCONFIG) $(@:_config=)   arm  s3c64xx smdk6410 samsung s3c6410

U-boot移植记录

在这里:

arm            :  为CPU的架构(ARCH)

s3c64xx     :  为CPU的类型(CPU), 其对应于 cpu/s3c64xx  子目录

smdk6410 : 开发板的型号(BOARD) 它对应了 ./board/samsung/smdk6410

samsung   : 开发者、或者经销商(vender)

s3c6410    :    片上系统(SOC)

我自己认为:能够充分的理解这一项是很有必要的,尤其是 s3c64xx 和 smdk6410 这两项,因为i额这里是你的开发板的Uboot 入口,在cpu/s3c64xx 和 ./board/samsung/smdk6410 下都是一些很重要的文件。

第四:创建这些依赖性文件。在根目录下执行命令

$cd board

$mkdir samsung/smdk6410

到这里就要拷贝一下板子的.c 依赖文件,网上很多资料是ARM9的 所以资料有点不一样,我拷贝的是三星

smdk6410.c 到我的板载目录./board/samsung/smdk610 下,并且名称也为smdk6410.c 这里不用担心自己

板子是OK6410,而文件名有差别,因为这里是可以通用,并能拿来移植的。

第五:在include/configs/ 中建立配置文件

和上一步的解决办法类似,直接cp  smdk6410.h 就行,如果你的configs里面已经有了这一选项,就不用了。

第六:测试编译能否成功

$ make smdk6410_config                      如果出现: Configuring  for smdk6410 board...          就证明编译正确

第七: 修改 ./cpu/samsung/smdk6410/start.S

这个函数是smdk6410系列的共有启动的汇编代码,UBOOT 执行的第一个程序, 这里我把飞凌这里的start.S 直接copy下来了,可以剩了去修改,但还是需要去学习一下这里的原理。

  • 1
  • 2
  • 下一页

相关内容