ARM学习笔记(三)
2007-10-15 00:04
197 查看
异常(Exceptions)
当正常的程序执流程发生暂时的停止时,称之为异常。处理中断请求,处理前保留现场以便处理完后返回;
处理器允许多个异常同时发生,它们会按固定的优先级被处理。
ARM体系结构所支持的异常类型及其具体含义(按优先级从高到低):
1. 复位:当处理器复位电平有效时产生复位异常;2. 数据中止:当处理器指令访问的数据地址不存在或不允许该指令访问时;
3. FIQ:当处理器的快速中断请求引脚有效且CPSR中F位为0(为1时禁止FIQ)时;
4. RIQ:当处理器的外部中断请求引脚有效且CPSR中I位为0时;
5. 预取中止:当处理器预取指令的地址不存在或该地址不允许当前指令访问时;
6. 未定义指令,SWI:当ARM处理器或协处理器遇到不能处理的指令时;
7. 软件中断。
对异常的响应
从异常返回
异常处理完后ARM处理器会执行以下两个步骤从异常返回:1. 将SPSR复制到CPSR;
2. 将连接寄存器LR的值减去相应的偏移量后送到PC。
可以认为程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。
ARM存储器格式
ARM体系结构将存储器看成是从0地址开始的字节的线性组合;ARM体系结构可以用两种格式存储字节数据,分别称为大端格式(big-endian)和小端格式(little-endian)。分别如下表1和表2所示:
表1 bin-endian
31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 |
字单元A(地址为A:包括地址为A、A+1、A+2、A+3的字节单元) | |||||||
半字单元A(地址为A) | 半字单元A+2(地址为A+2) | ||||||
字节单元A(地址为A) | 字节单元A+1 | 字节单元A+2 | 字节单元A+3 |
31 | 24 | 23 | 16 | 15 | 8 | 7 | 0 |
字单元A(地址为A:包括地址为A、A+1、A+2、A+3的字节单元) | |||||||
半字单元A+2(地址为A+2) | 半字单元A (地址为A) | ||||||
字节单元A+3 | 字节单元A+2 | 字节单元A+1 | 字节单元A |
相关文章推荐
- arm学习笔记006之redhat5.0的安装定制以及tftp服务器的安装
- ARM学习笔记 定时系统
- ARM学习笔记--NorFlash控制器
- U-Boot学习笔记(二):U-Boot--arm--Start.S的分析
- smmu学习笔记之arm_smmu_init_one_queue
- ARM学习笔记(九)--指令基本格式
- arm学习笔记一(arm概述及其基本编程模型)
- ARMv8-A系列学习笔记(8)--Chapter 10 AArch64 Exception Handling
- ARM底层学习笔记-裸板实验程序解析-点亮LED
- 嵌入式学习笔记--关于ARM中SWP指令的执行顺序问题【待验证】
- ARM&LINUX学习笔记(二)
- ARM学习笔记——内核编译
- arm体系结构学习笔记 part4 -- 异常处理的返回
- 一份好的ARM体系结构学习笔记
- arm-linux内核启动学习笔记(二)(废弃)
- ARM汇编伪指令学习笔记
- 嵌入式操作系统学习笔记:02.环境搭建兼 Eclipse Jlink 2440 ARM裸机调试
- ARM学习笔记6-裸机之GPIO-LED
- ARM学习笔记_20140812
- 激光雷达学习笔记(六)ARM-Linux平台算法移植