UBOOT发展到现在,架构已经发生了不少的变化。现在不少开发学习板子上都在用1.1.6版本的。不过发展到现在,UBOOT经历了不少改进,变得越来越标准

从版本发布的命名上来看,现在的UBOOT不再用以前版本号的方式进行描述。而采用日期的方式进行发布(例如这次最新版本命名为uboot-2011.03)。

第一次用UBOOT的时候是从uboot-2010.06入手的,没想到那个版本之后到现在UBOOT的架构已经发生了一个结构上的新转变主要就是Makefile的功能更加专一化了,板子的配置被移出了Makefile,放到了一个叫做boards.cfg的文件中,文件格式如下:

UBOOT 2011-3版本分析(初步感受)_职场
 

 

Target(目标)

ARCH(平台)

CPU(芯片)

Board name(板子名字)

Vendor(生产商)

SoCCPU类型)

Options(功能)

smdk2410

arm

arm920t

-

samsung

s3c24x0

 


 

和以前的老版本比,配置更加规范化了,其实这些就是相关文件分类的一个文件夹的描述。依照这个层次关系,一些S3C24x0系列的学习开发板就可以利用这个来进行配置(比如说tq2440)。

还有一个显著变化的地方就是修改增加了一些宏。该版本按照以前的方法组建smdk2410会报错,主要就是几个宏没有定义。添加的一些宏如下:

#define    CONFIG_SYS_SDRAM_BASE    0x30000000 /*SDRAM Bank #1*/

#define    CONFIG_SYS_GBL_DATA_SIZE 128
#define    CONFIG_SYS_INIT_SP_ADDR    (CONFIG_SYS_SDRAM_BASE + SZ_4K \
            - CONFIG_SYS_GBL_DATA_SIZE)

这样,编译就能通过了。出错的原因在于arm920t体系的start.Sboard.c写了,估计是已经修改了arm920t体系中的一些cpu板子。不过arm920t体系的cpuUBOOT中有多种型号,可能还没有修改到smdk2410上来。不过从宏的定义上可以看出,内存的配置和环境的配置将会更加的规范化(以CONFIG_SYS开头的都是UBOOT中规定的专用宏,意义和重用都很明确)。

上面新增的宏定义当中CONFIG_SYS_SDRAM_BASE含义是配置板子sdram内存的基地址;CONFIG_SYS_GBL_DATA_SIZE是配置全局数据的尺寸;CONFIG_SYS_INIT_SP_ADDR配置了堆栈的地址(看来堆栈的地址小于4K啊,可能后面还要根据具体情况进行优化)。这些参数都取自其他修改过的板子的大部分板子使用的配置(其他板子也多是如此定义),应该算是默认的。

smdk2410来说,现存的配置文件多多少少还是有些不规范,很多宏都没有按照规范书写,配置顺序也比较乱。不过这都不是问题,毕竟还需要时间。下一步的准备就是仿造smdk2410建立自己的bootloader工程,按照规范生成一个标准的固件。

说实话,固件程序开发其实也没啥太神秘的地方,它的主要作用就是检测调试硬件,完成这个任务后,它就只有引导系统的作用了。tq2440自己也扩展了一个bootloader,也能引导LINUX系统。不过UBOOT是个伟大的开源项目,而且已有了相当好的规范性和知名度。作为开源软件的受益者,我们应该继续帮助UBOOT不断的发展。只有UBOOT发展好了,我们的现在的学习才更有意义:)