您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于S3C44B0X的Bootloader的设计与实现 正文
基于S3C44B0X的Bootloader的设计与实现

基于S3C44B0X的Bootloader的设计与实现

点击数:7917 次   录入时间:03-04 11:55:23   整理:http://www.55dianzi.com   嵌入式系统-技术

    1.引言

    Bootloader(引[1]导加载) 程序[1]是系统加电后首先运行的一段程序代码,用来初始化硬件环境、改变处理器运行模式和重组中断向量,建立内存空间的映射图(有的CPU没有内存映射功能如 S3C44B0X ),将系统的软、硬件环境带到一个由用户定制的特定状态,然后加载操作系统内核。对于不使用操作系统的嵌入式系统而言,应用程序的运行同样也需要依赖一个准备好的软、硬件环境,因此从这个意义上来讲,BootLoader对于嵌入式系统是必需的。

    Bootloader是依赖于目标硬件实现的,主要包括以下两方面[2]:

    (1)每种嵌入式微处理器体系结构都有不同的Bootloader.应用比较广泛的Bootloader有VIVI、U-Boot、Blob、RedBoot 等。有些BootLoader也可以支持多种体系结构的嵌入式微处理器。如U-Boot同时支持ARM和MIPS体系结构。

    (2)Bootloader依赖于具体的嵌入式板级硬件设备的配置。比如板卡的硬件地址配置、微处理器的类型和其他外设的类型等。也就是说,即使是基于相同嵌入式微处理器构建的不同嵌入式目标板,要想让运行在一个板子上的Bootloader程序同样运行在另一个板子上,仍需要修改Bootloader的源程序。

    作者在参与中国民用航空总局科技基金项目“机场噪声自动监测与数据传输的研究与实

    现”的研发中,设计了一款基于S3C44B0X的ARM7核心板,并实现了其引导加载程序Bootloader.

    2.ARM7核心板介绍

    2.1ARM7核心板的构成

    作者设计的ARM7 核心板主要由CPU、电源管理、存储单元、JTAG接口和串口五部分组成。图1是其结构图。CPU这里用的是Samsung的S3C44BOX微处理器[3], 它是由Samsung EleCTRonICs Co.,Ltd为手持设备设计的低功耗、高度集成的基于ARM7TDMI核的微处理器,采用精简指令系统(RISC)和三级流水线结构,且具有丰富的内置部件。电源管理部分采用开关电源将AC220V转换成DC5V,然后采用线性稳压电源LM1085将DC5V分别转换成3.3V 的I/O口电源电压和2.5V 的S3C44B0X内核逻辑电压。存储单元由Flash存储器和SDRAM存储器构成。Flash存储器用的是SST公司的 39VF3201 CMOS FLASH,容量为4MB,16位数据宽度,可以重复擦写。Flash存储器主要用来存放已经调试好的应用程序、嵌入式操作系统和需要保存的用户数据。 SDRAM存储器选用的是SAMSUNG公司的8MB K4S641632H,16位数据宽度,工作电压3.3V。由于SDRAM执行速度比较快,其通常作为系统运行时的主要区域,用来存放系统及用户数据、堆栈等。另外,除了可用于下载和通信的串口,还包括用于调试的JTAG接口。

     

    28.jpg

    2.2S3C44B0X的存储器映射

    系统复位后,S3C44B0X的存储空间映射图[3]如图2所示。ARM处理器S3C44B0X的系统存储空间分为8段(Bank0-Bank7),因此可以配置8个存储体,其中每个存储体的大小为32MB,总共可达256MB的存储空间。可以自由配置访问存储体的数据总线宽度(8位/16位/32位),在本核心板中,FLASH和SDRAM存储器的总线宽度设置为16位,在8个可配置存储体中,Bank0-Bank5可支持ROM、SRAM类型的存储器;Bank6和Bank7可支持ROM、SRAM以及FP/EDO/SDRAM等其他类型的存储器,此处Bank0接 FLASH存储器39VF3201(采用片选信号nGCS0),地址范围为:0x00000000-0x003fffff.Bank6接8MB的 SDRAM存储芯片K4S641632H(采用片选信号nGCS6),地址范围为0x00000000-0x007fffff。其他存储空间(Bank2、Bank3、Bank4、Bank5、Bank7)暂时保留。   

    29.jpg

    3.Bootloader 启动流程设计

    系统加电或复位后,CPU通常都从CPU制造商预先安排的地址上取指令。如基于ARM7TDMI

    内核的CPU在复位时都从地址0x00000000处取它的第一条指令。而嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或FLASH等)被安排在这个起始地址上。因此在系统加电或复位后,处理器将首先执行存放在起始地址处的程序。通过集成开发环境IDE可以将 BootLoader定位在起始地址开始的存储空间内。所以,BootLoader是系统加电后,操作系统内核或用户应用程序运行之前,首先必须运行的一段代码。对于ARM S3C44B0X微处理器,BootLoader是从0x00000000地址开始存放的,此地址采用了可引导的固态存储设备FLASH。

    从操作系统的角度看,BootLoader的总目标就是正确的调用内核来执行。另外由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两部分[4],依赖CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。

   



www.55dianzi.com

    BootLoader的stage1通常包括以下步骤(以执行的先后顺序):

    1)  硬件设备初始化。

    2)  为加载BootLoader的stage2准备RAM空间。

    3)  拷贝BootLoader的stage2到RAM空间

    4)  设置堆栈

    5)  跳转到stage2的C程序入口点

    BootLoader的stage2通常包括以下步骤(以执行的先后顺序):

    1)  初始化本阶段要使用到的硬件设备

    2)  检测系统内存映射

    3)  将内核映像和根文件系统映像从Flash读到RAM

    4)  为内核设置启动参数

    5)  调用内核

    4.Bootloader的代码实现

    Bootloader的Stage1初始化流程图如图3所示. Stage1部分主要内容及其代码实现:    30.jpg

    /*中断向量表用于处理异常情况,当发生异常情况时,首先要保存当前程序的返回地址和CPSR寄存器的值,然后进入到相应的异常向量地址。一般来说,在异常向量地址处放置无条件跳转指令,使程序进入相应的异常处理过程。*/
_ENTRY
B  ResetHandler        ;reset vector
    B  UndefinedHandler    ;Undefined instruction
B  SWIHandler          ;SWI
    B  PrefetchHandler    ;Prefetch abort
    B  AbortHandler        ;Data abort
    B.                    ;Address exception
    B  IRQHandler          ;IRQ
    B  FIQHandler          ;FIQ
    ……

    /*复位入口,切换到超级模式并禁止中断。在整个Boot Loader的初始化过程中我们都不必响应中断,因此首先禁止系统的中断。*/
MRS    a1,CPSR           
    BIC    a1,a1,#MODE_MASK   
    ORR    a1,a1,#SUP_MODE   
    ORR    a1,a1,#LOCKOUT      ;关闭IRQ、FIQ中断
    MSR    CPSR_cxsf,a1
    LDR    r0,=INTCON          ;设置中断模式,非向量中断模式
  LDR    r1,=0x07            ;IRQ、FIQ中断禁止
  STR    r1,[r0]
    LDR    r0,=INTMSK          ;关闭所有中断
  LDR    r1,=0x07ffffff
  STR    r1,[r0]
LDR    r0,=SYSCFG          ;使能回写buffer和Cache
LDR    r1,=0xE
    STR    r1,[r0]
……
/*当必要的硬件初始化设置完毕后,接下来为核心代码贮备RAM空间,包括RO、RW、ZI这3个段设置相应的内存映射向量,Bootloader先将ZI段请零,然后将RO段复制到RW段中。由于在我们采用的S3C44B0X微处理器里对于FLASH和RAM地址空间是使用的统一编址的,因此我们可以直接使用一个简单循环来完成拷贝。*/
move_data :                                                                 

[1] [2]  下一页


本文关键字:暂无联系方式嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术