武汉理工大学 甘泉 杨健 陈永泰
ARM处理器启动代码的分析与设计
Analysis and Design of ARM Processor Bootcode
摘 要:本文以ARM7TDMI作内核的网络控制器$3C4510B为例,简要介绍了ARM体系结构及其特点,重点阐
述了ARM处理器启动程序底层的组成结构和各部分的具体内容。
关键词:ARM内核;启动代码;中断向量;堆栈
随着对高处理能力、网络通信、
实时多任务,超低功耗这些需求的
增长,传统8位处理器已经不能满
足新产品的要求了,高端嵌入式处
理器已经进入了国内开发人员的视
野,并在国内得到了普遍的重视和
应用。ARM是目前嵌入式领域应用
最广泛ff:JRISC做处理器结构,以其
低成本、低功耗、高性能等优点占
据了嵌入式系统应用领域的领先地
位。本 文应用 A R M 处理器
$3C4510B开发设计了四路E1收发
器,参考一些文献X~ARM处理器的
启动代码进行了编写,结合在实际
应用时编写调试的经验进行了总
结。
ARM体系结构
目前,ARM系列的通用32位
RISC微处理器有ARM 7、ARM 9、
ARM 9 E、ARM 1 0等多个产品,
这些处理器可以工作于 7种模式
下,如表 1所示。
除User模式以外的其它模式都
叫做特权模式,除User和System以
外的其它5种模式叫做异常模式。
大部分应用程序都在User模式下运
行,当处理器处于 User模式下时,
执行的程序无法访问一些被保护的
系统资源,以利于操作系统控制系
统资源的使用,也不能改变模式,
否 则就 会导致一次异常 。对于
System模式,任何异常都不会导致
进入这一模式,而且它使用的寄存
器和User模式下基本相同,主要是
用于有访问系统资源请求而又避免
使用额外的寄存器的操作系统任
务。在特权模式下,它们可以完全
访问系统资源,可以自由地改变模
式。在处理特定的异常时,系统进
入对应的异常模式下。这5种异常
模式都有各自额外的寄存器,用于
避免在发生异常的时候与用户模式
下的程序发生冲突。如表2所示:
在任意一种处理器模式中,都
使用同一个寄存器来标识当前处理
器的工作模式,这个寄存器叫做
CPSR(当前程序状态寄存器),它的
0~4位用来表示CPU模式,(如表2
所示)而且在每 ·种处理器异常模
式下,都有一个对应的SPSR(缓存
程序状态寄存器),用来保存进入异
lI。夸文于 0o4年7月2o日“|I= 1.甘采:硕士生;杨健:硕士生 豫j 泰:
常模式前的CPSR的值。SPSR的作
用就是当CPU从异常模式退出时,
通过一条简单的汇编指令就能够恢
复进入异常模式前的CPSR,该值
保存在当前异常模式的SPSR中。
启动代码的设计
启动代码类似于 电脯 中的
BIO S,它从系统上电开始接管
CPU,依次需要负责初始化CPU在
各种模式下的堆栈空间、设定CPU
的内存映射、对系统的各种控制寄
存器做初始化、对CPU的外部存储
器进行初始化、设定各外围设备的
基地址、创建正确的中断向量表、为
c代码执行创建ZI(零创建)区,然
后进入到c代码。在c代码中继续
对时钟、RS232端口进行初始化,然
后打开系统中断允许位。最后进入
到应用代码中执行,执行期间响应
各种不同的中断信号并调用预先设
置好的中断服务程序处理这些中断。
整个过程的流程图如图1所示。
堆栈初始化
堆栈的初始化要处理的事情是
为处理器的7个处理器模式分配堆
副攀长 手≯; .要从事无线通信研究。
J J 6 _ ⋯ . 一 ⋯ . .一
维普资讯 http://www.cqvip.com
http://www.elecfans.com ????? http://bbs.elecfans.com ??????
表1 ARM处理器工作模式
黎 鬟 魏冀霪§蠹 霭 一 麓。 。
处理器模式 描述
栈空间。以下以FIQ模式下的堆栈
设置为例说明:
0RR r1.r0.#LOCKOUT I
FIQ—MODE;把模式放在r1中,
LOCKOUT用来屏蔽中断位;
MSR cpsr,rl;改变CPU
[~4JCPSR寄存器,进入到指定的FIQ
模式;
MSR spsr,r2 ;保存前一
模式;
LDR sp,=FIQ—STACK ;
把FIQ模式下的堆栈起始值赋给当
前的SP,FIQ—STACK是分配给FIQ
模式堆栈空间(比如说 1K字节)的
起始地址。
按这种方式设置其它模式下的
堆栈。
DRAM的初始化根据系统配置
信息来决定,因为系统不一定会用
到DRAM,但是一定要做SDRAM
的初始化。主要的处理 内容是
ROM和RAM基址的设定、数据总
线的宽度、SDRAM的刷新时间等
等,这些可以参照S3C4510B芯片
的用户手册。
特殊寄存器的设置主要是针对
I/O口,比方说设定几个I/O位用做
系统状态指示灯LED。寄存器的设
定主要根据硬件的配置情况而定,
表2各模式下寄存器的分配及CPSR模式位
强 嚣 。 。 ll毳| §童甏舔塞蘸| 。 0 琵蕊0 罄
模 式 可以访问的寄存器
值得注意的是由于这段启动代码是
烧录到ROM中的,而中断向量必须
位于零地址,所以在存储单元没有
重新映射之前ROM基址的设定应
该为零地址。
拷贝(image)主要是为了提高
运行速度,编译生成的映像文件代
码从ROM内拷贝到RAM中去,而
程序的执行也就在RAM中。当然,
启动代码对运行速度的要求不是很
严格,所以这个拷贝动作可以不用
做,让代码存放在ROM中,代码的
执行也在ROM中,而运行中所需要
的数据在RAM中。
内存的初始化是为C代码的运
行开辟内存区,代码编译后会分为
三个区:只读区、可读可写区,零
初始化区。内存的初始化处理的内
容是:当只读区截止地址等于可读
可写区基址时,把零初始化区各字
节清零;当只读区截止地址不等于
可读可写区基址时,如果可读可写
区基址小于零初始化基址,就从只
读区截止地址处开始把数据拷贝到
可读可写区基址处,直到到达零初
始化基址,然后把零初始化区各字
节清零,否则也只用把零初始化区
各字节清零。
中断向量表是用于处理异常情
况的,当发生异常时,首先要保存
当前程序的返回地址和CPSR寄存
器的值,然后进入到相应的异常向
量地址,一般来说在异常向量地址
是一个跳转指令,使程序进入相应
— 1n I旦 -I一.一.o
维普资讯 http://www.cqvip.com
http://www.elecfans.com ????? http://bbs.elecfans.com ??????
的异常处理过程。由于中断向量表
要位于系统的零地址,当把启动代
码烧录到EEPROM 中运行时就需
要把ROM的地址定义到零地址,所
以程序的入口处如下:
main
ENTRY
B Reset
— Handler ;系统上
电后进入复位操作,通过这个跳转
指令进入堆栈初始化操作
B Undefined
— Handler;处理
未定义模式。
B SW I
— —
Handler
B Prefetch
—
Handler
B Abort
_
Handler
N0P :Reserved Vector
B IRQ—Handler ;处理器
IRQ中断。
B FIQ—Handler ;处理器
FIQ中断,快速响应用户中断,支
持高速数据传输这些跳转指令的地
址是 固定的,复位跳转指令在
0X0000,0000,未定义模式的跳转
是OXO000,0004,其它跳转指令地
址依次加4,而且这个顺序是不能
更改的。
系统重新映射当你为了提高运
行速度而把ROM的Image拷贝到
RAM后,中断向量表就不是在零地
址处,因此要重新映射存储单元,
把RAM的地址重新设定为零地址。
映 射 就 是 把 启 动 代 码 从
ROM(EEPROM或者Flash)拷贝到
SDRAM运行,同时再拷贝完毕以
后 进行 内存 的 重新 映射 ,把
SDRAM映射到原来的ROM地址
(OxO000)中,这样就可以用SDRAM
中的代码写Flash,使得程序代码得
以更新。但是需要注意的是,如果
程序进行了映射,这样就对在线调
试带来了困难,使得在线调试不可
以在 R A M 中进行(如果写入
EEPROM的代码是映射了的,则在
调试器启动的时候必然也会对程序
进行映射,使得程序在调试器中不
可以定位到原来的地方 ,使得调试
失败)。一个折中的方法是,不进行
映射,就是说在调试的代码中不可
以使用下载,这样就可以像普通的
代码一样进行调试了。
结语
做完这些初始化后,让CPU切
换到用户模式下,并把堆栈指针SP
指定到用户堆栈区,就可以进入到
c代码区运行。在c代码中继续对
时钟、RS232端口进行初始化,然
后打开系统中断允许位,进入到应
用代码中执行。此程序加载到处理
器$3C45lOB中经过调试,CPU可
以正常启动,能够对中断请求做出
及时的响应,上层应用的主代码可
以加载到Flash中,移植实时操作系
统RTXC后对多任务的调度控制正
常。匝
参考文献:
1.SteveFurber,‘ARM SoC体
系结构’,北京航空航天大学出版
社 .2002.
2.马忠梅,‘ARM嵌入式处理
器结构与应用基础’,北京航空航天
大学出版社,2003.
3.李驹光,‘ARM应用系统开
发详解一基于$3C45l0B的系统设
计’,清华大学出版社,2003.
ZiLOG三 十周年庆典 ,上海设计 中心开幕
9月1日,ZiLOG公司在上海为
其不断创新的30年历程举办了庆
祝活动(1 974年由Federico Faggin
创建),同时正式对外公布其设在上
海浦东张江高科技工业园内,占地
约6000平方米的设计中心的成立。
ziLOG董事长兼cE0 Jim
Thorburn说:新成立的上海设计中
心是该公司中国策略中的重要组成
部分,突出了ZiLOG对于整个中国
区的重视。而中国区在ZiLOG亚太
区的收入比重占50%。中心的成立
使ZiLOG能够为持续增长中的中
国MCU市场提供快速的机动
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
整个中国区的客户已经积极地
把ZiLOG的芯片应用到他们的设
计中,该公司正
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
扩展设计中心
的资源和能力,同时在未来的日子
里,ZiLOG将特别针对中国电子厂
家对低成本应用的需求,开发出贴
近市场的新产品。匝
● ·'^ - t 。 . ⋯ ⋯
维普资讯 http://www.cqvip.com
http://www.elecfans.com ????? http://bbs.elecfans.com ??????