微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C44B0X的Bootloader设计与实现

基于S3C44B0X的Bootloader设计与实现

时间:04-16 来源:互联网 点击:

可读性和可移植性。

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部分主要内容及其代码实现:

/*中断向量表用于处理异常情况,当发生异常情况时,首先要保存当前程序的返回地址和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 :
LDR a1,=Image_RW_Base ;RW段运行时的起始地址
LDR a2,=Image_RO_Limit ;RO段运行时的存储区域界限
LDR a3,=Image_ZI_Base ;ZI段运行时的起始地址
CMP a1,a3
BEQ goto_main ;跳转到C入口函数
move_loop : ;将RO段复制到RW段
LDR a4,[a2],#4
STR a4,[a1],#4
CMP a1,a3
BNE move_loop

在Bootloader stage1部分的最后是堆栈的设置,由于ARM有5种异常模式,每一种模式的堆栈指针寄存器(SP)都是独立的,因此,对程序中需要用到的每一种模式都要给SP定义一个堆栈地址。以中止模式SP堆栈地址的定义为例:
ORR r1,r0,#ABORTMODE|NOINT
MSR cpsr_cxsf,r1
LDR sp,=AbortStack

至此,汇编语言程序段的任务基本完成,执行命令BL Main 转到由C语言编写的核心程序,操作系统的内核就可通过该C程序加载到RAM,获得对系统的控制权。

Bootloader的Stage2部分主要用于导入操作系统内核,一般通过串口建立连接,以获取命令、打印与用户的交流信息等,这里限于篇幅不再加以详述。

5.结束语

作为嵌入式系统软件的最底层,Bootloader是系统上电后启动运行的第一个程序,类似于PC机上的BIOS,主要负责整个硬件系统的初始化和软件系统启动的准备工作。Bootloader是嵌入式系统开发的重点和难点,也是系统运行的一个基本前提条件。设计和实现一个好的Bootloader,可以大大增强系统的稳定性,提高系统的实时性。

本论文创新观点是:设计了具有较高性价比的ARM7核心板,结合实际应用详细分析了S3C44B0X的存储空间映射,设计实现的基于S3C44B0X的 Bootloader具有典型代表性、良好的健壮性和可移植性,只须有针对性的稍加修改,就可应用到各种类似的嵌入式平台中,对进一步开发复杂系统的 Bootloader具有很好的借鉴和启发作用。

本项目经济效益(30万元),包括Internet接入设备研制、GPRS网络接入设备研制和GPRS-Internet网关软件研制三部分。 Internet接入设备由数据前端采集盒和嵌入式ARM系统构成,嵌入式ARM系统通过串口接收单片机发来的数据并将这些数据利用TCP/IP协议通过网线发送到噪声数据中心。

参考文献:
[1]白伟平等.基于ARM的嵌入式Bootloader浅析[J].微计算机信息,2006,4-2:99-100
[2]夏靖波等.嵌入式系统原理与开发[M].西安电子科技大学出版社.2006
[3]Samsung Limited. S3C44BOX RISC Microprocessor Datasheet[EB/OL]. 2001
[4]孙天泽等.嵌入式设计与Linux驱动开发指南-基于ARM9处理器[M].电子工业出版社.2006

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top