移植uboot-2015.10.rc1

移植uboot-2015.10.rc1(一)


开发板:    friendly arm 2440 

工具:      Win7 + VMware + ubuntu 

U-boot版本: u-boot-2015.10.rc1 

GCC版本:    gcc version 4.3.3


随着uboot版本的不断更新,现在的版本和以前的相比有不少的变化,在代码结构上更像Linux的风格,现在文件解压以后目录结构是下面这样的:

我们所熟悉的在u-boot-2014中的boards.cfg和mkconfig没有了,而同时又在u-boot-2015.10的顶层目录下多出了一个configs目录,还有一个Kconfig文件(这不是Linux内核所特有的吗?),可以看到u-boot一直在学习Linux内核的配置和编译方法。

configs目录下有很多文件,每一个文件都对应着不同型号的芯片,从数量上来看,如今uboot所支持的芯片还是相当丰富的:


当选定我们需要的配置文件以后,就可以参考编译Linux内核的方法make xxx_defconfig 来生成我们需要的.config文件,这个命令会使用工具从顶层的Kconfig开始往下读取对应的Kconfig配置选项,生成.config文件。当然,生产.config文件以后,我们也可以使用make menuconfig来根据需要对配置文件进行修改。

下面演示一下smdk2410的编译过程:

1. make smdk2410_defconfig

2. make

这时编译会出错,出错并不可怕,一个一个解决就是了,先来看一下出错提示:

从中可以看出,在编译asm-offsets.s时出错了,因为-march的值不对,现在需要编译的是arm架构上的代码,实际上用的是本机默认的GCC,所以应该是没有指定架构和交叉编译器,我们只需要在顶层目录Makefile中指定一下就好了:

然后我们再make一下,就能顺利编译通过了(如果交叉编译器没有问题的话)!

上面的过程是在uboot已经支持某个架构的情况下编译的,修改的不多,但实际上未必是这样的,如果uboot不支持自己需要的架构,那要怎么修改uboot,让它能够在板子上运行呢?下面就以s3c2440为例进行移植.


1. 清理一下前面的编译

 make distclean 

2. 拷贝

(1) cp configs/smdk2410_defconfig configs/arm2440_defconfig

这里拷贝一份smdk2410的配置文件,并将CONFIG_TARGET_SMDK2410=y 修改为 CONFIG_TARGET_ARM2440=y, 这个值会指明编译的是哪个开发板


 (2).  cp -arf board/samsung/smdk2410/   board/friendly/arm2440

我们知道,board目录下放的是已经支持的开发板相关的文件,其中包含SDRAM初始化代码(lowerlevel_init.S),板级初始化文件(smdk2410.c)等,由于这个版本的uboot不支持我们的arm2440,所以需要自己创建一个,然而arm2440和smdk2410很相似,差异只是下面一些,所以只要以smdk2410作为副本来修改就好了,然后调整一下差异的代码。

这一步拷贝了一份smdk2410文件夹,friendly是vendor的名称,arm2440是板子的名称,这两个值指明了开发板相关的文件路径,所以要修改board/friendly/Kconfig,使make arm2440_defconfig 时能够获取正确的路径,修改如下:

line1:configs/arm2440_defconfig中定义的目标

line6:发行商的名称

line3:板子的名称

line9:芯片的名称

line12:配置文件名称

这几个值务必要正确,不然会直接影响到编译时能不能找到正确的目标文件路径,同时也可以查看.config文件是否有这些值。


(3) mv board/friendly/smdk2410.c  borad/friendly/arm2440.c

这里不用修改值,后面再修改

(4) cp include/configs/smdk2410.h include/configs/arm2440.h 

 这里值先不用修改,后面再修改

 (5) 修改arch/arm/Kconfig, 添加smdk2440的配置项 



  修改arch/arm/Kconfig, 加载board/arm2440/Kconfig



(6) make


以上修改的是arch、board、configs、include/configs 下面的文件,多与平台相关


到这里,就能够编译出以arm2440为样本的image了,但是代码里面的内容都还是属于smdk2410的,接下来需要修改一些参数,让image能够在arm2440板子上正常的运行,请查看下一篇文章。移植uboot-2015-10(一) - 奔跑的路 - 博客频道 - CSDN.NET 

注:转载http://blog.csdn.net/lee244868149/article/details/48824879#t0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值