新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > BLOB启动流程与Bootloader程序可移植性研究

BLOB启动流程与Bootloader程序可移植性研究

作者:时间:2011-09-02来源:网络收藏
2 的可

本文引用地址:http://www.amcfsurvey.com/article/150266.htm

  大部分的总体结构与类似,一般分为两个阶段运行。其中第一阶段与CPU架构相关,不同架构CPU往往要求不同的与之对应[3],只有少数Bootloader能够适用于多种架构的CPU,如表1。

  

  2.1 相同构架下Bootloader

  对于相同的CPU构架,Bootloader工作大体上可以分为三部分。

  (1)目标板驱动部分,针对特定CPU、Flash、SDRAM等对驱动进行定制。完成处理器各个I/O口的初始化、Flash描述(包括区块大小及数量)和Flash初始化等。一个必要的工作是Flash分区表的配置,Flash的典型空间分配结构如图2所示。

  

  (2)目标板相关的头文件,文件中包含了目标板配置的宏定义,主要有系统工作频率、GPIO定义、Flash 各分块起始地址及容量、Flash 读/写命令字、SDRAM寄存器配置、SDRAM起始地址及容量、内核装载地址等。其中大部分GPIO设置的目的是在Bootloader下做板载开发,这项功能不是必需的。而CPU频率及Flash的设置则直接影响到系统能否。对于采用Ramdisk技术的系统开发,SDRAM的配置也直接关系到Kernel的加载。因此,各头文件的代码修改是移植过程的重点。

  (3)Bootloader总体配置文件修改,包括目标板声明、指定目标板头文件、定制文件关联关系等。

  图3以在PXA255[4]的目标板上移植为例表现了需要增、改的关键文件之间的内在联系。

  

BLOB在PXA255的目标板上移植

  图3中:

  (1)src/blob/PXA255.c:笔者编写的针对PXA255目标板驱动文件,这里是采用默认设置的最简情况,必要时还需对文件如Flash.c等进行修改。

  (2)include/blob/arch/PXA255.h:目标板头文件,它必须通过arch.h及config.h进行指定,最终反映在configure.in中。

  (3)configure.in:添加目标板声明,如果已有目标板类型,则无需修改该文件;如果没有,则需要根据情况添加目标板名称、CPU型号、必需的.o文件,如:

  PXA255)

  AC_MSG_RESULT(Ipaq PXA255)

  AC_DEFINE(PXA255)

  AC_DEFINE(USE_SERIAL3)

  _PLATFORM_OBJ=″PXA255.o″

  BLOB_FLASH_OBJS=″nullflash.o″

  use_cpu=″PXA255″

  use_lcd=″no″

  (4)Makefile.am:由于添加了PXA255.c和PXA255.h,所以要在它们所在目录的Makefile.am中进行登记,保证configure.in和Makefile.am在进行./configure处理时能够生成正确的Makefile文件,最终在执行Make命令后生成BLOB的可执行文件。

  需要注意的是Linux内核必须根据目标板硬件情况作相应的设置[5],这里不展开论述。

  



评论


相关推荐

技术专区

关闭