1. ARM 嵌入式系统初始化过程
OHY 2006-12-08
基于 ARM 内核微处理器的系统一般为复杂的片上系统,这种复杂系统的多数硬件模块
都是可配置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一
些专门的代码完成对系统的初始化。由于这类代码直接面对 ARM 处理器内核和硬件控制
器,一般都使用汇编语言完成。初始化代码完成的操作与具有的硬件平台相关,但一般包
括一下的内容:
--初始化异常向量表(中断向量表)
--初始化存储器系统
--初始化堆栈
--初始化有特殊要求的端口和设备
--初始化应用程序的运行环境
--调用主应用程序
1、初始化异常向量表(中断向量表)
ARM 微处理器结构要求中断向量表必须放置在从 0x00 地址开始的连续 8×4 字节的空
间内,每当一个中断(异常)发生以后,ARM 微处理器便强制把 PC 置为对应的中断向
量。由于每个中断只占用向量表中一个字(4 个字节)的存储空间,只能放一条 ARM 指
令,所以通常为跳转指令,使程序从向量表跳转到存储器的其他位置,执行真正的中断处
理。
具体代码实现如下:
AREA Init,CODE,READONLY
ENTRY
B Reset_Handler ;异常复位
B Undef_Handler ;未定义指令异常
B SWI_Handler ;软件中断
B PreAbort_Handler ;指令预取中止
B DataAbord_Handler ;数据中止
B . ;系统保留
B IRQ_Handler ;普通外部中断
B FIQ_Handler ;快速外部中断
..........
2、初始化存储器系统
主要是对系统存储器控制器(MMU)的初始化。由于存储器控制器并不是 ARM 架构
的一部分,不同芯片的实现方式各不相同。由于运算能力和寻址能力的强大,基于 ARM
内核的微处理器系统一般都需要外扩展各种类型的存储器。对于存储器系统的初始化一般
包括如下几个方面:
--存储器类型、时序和总线宽度的配置
--存储器地址的配置
评论3
最新资源