Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / U-boot移植记录

今天完成了通用Uboot 移植于ARM开发板的修改 和 移植工作。我的操作环境是VMware 虚拟机 Ubuntu 10.10。ARM11开发板OK6410。 与其说是自己完成的,还不如说我是借鉴,照搬,套用,挪动...........等等等........呵呵!网上这类帖子挺多的,可以借鉴http://www.linuxidc.com/Linux/2012-04/59295.htm ,等等优秀好文。我这里就仅仅总结一下自己的学习过程,以便帮助后来者,并方便自己以后查询。虽然网络上的资源挺多的,当对一个菜鸟来说,编译起来那漫天的报错还是挺让人头疼的,如有你能找到别人已经做好了的ARM_Uboot,用他们的源码借鉴起来,就能让你学习的更快一些了,我自己就是借鉴飞凌OK6410的源码学习的。好了不罗嗦了,借鉴别人的博文来总结自己的学习过程,开始总结如下。第一:下载通用u-boot源码。U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm最好下载和你找到的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 以后创建的该项,我也是按照这个操作的:
第三:建立smdk6410_config 的编译选项,这个也就是你自己指定的ARM版子选项。在当前Makefile中 修改如下:先vim 命令查找:/smdk6410。修改为smdk6410_config       :       uconfig@$(MKCONFIG) $(@:_config=)   arm  s3c64xx smdk6410 samsung s3c6410
在这里:arm            :  为CPU的架构(ARCH)s3c64xx     :  为CPU的类型(CPU), 其对应于 cpu/s3c64xx  子目录smdk6410 : 开发板的型号(BOARD) 它对应了 ./board/samsung/smdk6410samsung   : 开发者、或者经销商(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下来了,可以剩了去修改,但还是需要去学习一下这里的原理。