- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
STR71XARM启动描述.PDF
杭州央海软件科技有限公司 TEL :0571 013958060204 FAX http :
STR71X ARM 启动描述
罗辉联 2006-9
ARM 启动概述
ARM 在上电之后,紧接着就从地址 0 开始取得第一条指令的代码来执行,所以在地址
0 的地方必须在上电的时候就存在可执行的正确代码,也就是 0 的地方应该是ROM(Flash)
区,至少在上电之后的一小段时间内是ROM 区。
对于ARM 而言,中断和异常的入口地址是 0~20H,每当有中断或者异常发生的时候,
PC 就会跳转到0~20 之间相应的地址去取程序代码执行。如果中断向量处于ROM 区,那么
中断执行程序的地址只能是固定在其中,而不能被程序动态的来改动;另一方面就是,ROM
通常都会比较慢一些,ARM 需要加入等待周期,所以我们希望中断向量位于RAM 区。
ARM 的ARM 提供了一个REMAP 来解决这一个问题。上电复位的时候0 地址一般被
映射在内部 Flash 物理地址 0 或者外部存储器接口 CS0 所对应的物理地址
0在STR710 ARM 中,程序上电时逻辑0 地址对应物理地址的选择是通过硬件配
置实现的, 内部RAM 映射到0处,当执行相应的REMAP 命令之后,内部的RAM
就映射到0 的位置,如果这个时候中断和异常向量表已经被复制了,那么就能够实现我们所
需要的情况:上电复位的一段时间内,ARM 可以在0 地址取到可执行的有效的指令代码,
然后在应用程序执行时,能够以更快的速度响应中断和异常,并且可以通过指令的执行动态
地进行改动。
存在于ROM 中的程序有一个重要作用就是初始化ARM 本身,并且引导其运行起来,
真正进入到应用程序的部分去。所以可以将系统初始化的阶段分为 个部分,第一部分初始
化ARM 本身,保证ARM 能够正常的运行起来, 并能顺利进入C 程序主函MAIN.,这部分
代码一般用汇编实现,第二部分对ARM 进行全面的低级初始化,一般用C 语言实现,执行
时放在main 函数的入口处。下面分别介绍 个部分的初始化过程。
1
杭州央海软件科技有限公司 TEL :0571 013958060204 FAX http :
一、 ARM 基本初始化过程
本部分的内容定义在汇编文件bootloader.s 中,启动时首先执行。
1. 定义ENTRY POINT
定义程序入口点和代码类型。
2. 设置中断\异常向量
是上电瞬间在REMAP 之前所执行的中断向量,这里假设通过硬件配置是被连接到
内部Flash 物理地址0 的地方,但是在REMAP 之前,是地址0 的地方。
3 . 等待OSC 稳定(在初始化的第一部分通常系统时钟使用默认值,所以需保证OSC 输
出稳定的时钟信号)
等待OSC 稳定通常是执行多个NOP 指令实现等待操作,这段代码放在复位异常代
码段的开始处.
4. 初始化数据访问终止模式,未定义指令终止模式,管理模式堆栈指针
在OSC 稳定后首先初始化数据访问终止模式,未定义指令终止模式堆栈指针,目
的是为对在下面的初始化工程中出现数据访问终止模式,未定义指令终止异常时能够及
时得到处理。这两种模式的堆栈指针初始化接着是初始化管理模式堆栈指针,并在此时
使ARM 保持着管理模式,因为接下来的ARM 本身初始化是运行在除7 种异常模式之外
的模式,而系统一旦进入系统模式和用户模式将无法通过软件在这两种模式下进行
ARM 模式的切换,从而就不能对ARM 的FIQ,IRQ 异常的堆栈指针进行初始化。而ARM
处于管理模式时却能实现这个功能。
5. 复位并允许所有的外部设备
由于 STR710 的内部外设与ARM 核通过 APB 桥相联系,为了使内部外设正常工
作,通常在系统初始化阶段需要对APB 桥上的外设复位。具体的操作方法是先禁止挂
文档评论(0)