U-boot移植记录
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 以后创建的该项,我也是按照这个操作的:
第三:建立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/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下来了,可以剩了去修改,但还是需要去学习一下这里的原理。
|
评论暂时关闭