### 关于ARM的21个常用概念 2
#### 11. ARM体系结构所支持的异常类型
ARM体系结构支持多种类型的异常处理机制,这些异常类型及其含义如下:
- **复位**(优先级①):当处理器检测到有效的复位信号时触发此异常。复位异常会引导处理器跳转到复置异常处理程序开始执行(异常向量:0x0000,0000)。
- **未定义指令**(优先级⑥):处理器遇到无法识别或处理的指令时触发。通常用于软件仿真的实现(异常向量:0x0000,0004)。
- **软件中断(SWI)**(优先级⑥):由执行SWI指令引起,主要用于用户模式下的程序调用特权操作指令(如系统调用)。这种异常机制有助于实现高级系统功能(异常向量:0x0000,0008)。
- **指令预取中止**(优先级⑤):当处理器尝试预取不存在或不可访问地址上的指令时触发。这通常是因为地址非法或者权限不足导致(异常向量:0x0000,000C)。
- **数据中止**(优先级②):当处理器尝试访问不存在或不可访问的数据地址时触发。类似于指令预取中止,但针对数据访问(异常向量:0x0000,0010)。
- **IRQ(外部中断请求)**(优先级④):当外部中断请求有效并且处理器处于允许中断的状态(即CPSR中的I位为0)时触发。这种异常通常用于处理来自外设的中断请求(异常向量:0x0000,0018)。
- **FIQ(快速中断请求)**(优先级③):类似于IRQ,但具有更高的优先级,用于处理更紧急的中断请求(异常向量:0x0000,001C)。
#### 12. ARM体系结构的存储器格式
ARM体系结构支持两种主要的存储器格式:
- **大端格式**:在这种格式下,一个字数据的高字节存储在较低的地址位置,而低字节存储在较高的地址位置。这种格式在某些嵌入式系统中非常常见。
- **小端格式**:与大端格式相反,在小端格式中,高地址存放数据的高字节,而低地址存放数据的低字节。现代大多数通用计算机采用这种格式。
#### 13. ARM寄存器总结
ARM架构中包含以下类型的寄存器:
- **通用寄存器**(r0-r15):共有16个32位寄存器,其中:
- **r15**(程序计数器PC):当前指令的地址。
- **r14**(链接寄存器LR):通常用于保存子程序的返回地址。
- **r13**(堆栈指针SP):指向当前堆栈的顶部。
- **当前程序状态寄存器**(CPSR):用于存储当前处理器的状态信息,包括条件码标志和其他控制位。
- **特定模式寄存器**:例如,在发生异常时,r13和r14会产生新的实例,如r13_IRQ和r14_IRQ,用于不同的处理器模式。
#### 14. 存储器重映射(Remap)的原因
存储器重映射在ARM体系结构中有几个重要的应用:
- **解决FIQ处理程序中的存储器边界问题**:通过重映射可以使FIQ处理程序不再受到Flash存储器边界的影响。
- **减少SRAM和BootBlock向量的使用**:通过重映射减少了对SRAM和BootBlock向量段的依赖。
- **提供额外的空间来处理超出单字转移指令范围的跳转**:重映射允许程序在更大的地址空间内执行跳转。
#### 15. 使用LDR而非B指令跳转至异常向量表的原因
LDR指令相比B指令更适合用于跳转至异常向量表:
- **全地址范围跳转能力**:LDR指令不受地址范围限制,可以跳转到任何地址,而B指令只能在前后32MB范围内跳转。
- **解决Remap问题**:在具有Remap功能的芯片上,使用B指令可能无法正确跳转到异常向量表的实际位置。
#### 16. 锁相环(PLL)的关键要点
锁相环(PLL)是用于调节处理器时钟频率的重要组件:
- **初始化状态**:PLL在复位或进入掉电模式时会被关闭,并在唤醒后不会自动恢复设置。
- **软件使能**:PLL只能通过软件命令启用。
- **等待锁定**:PLL启动后需要等待锁定信号,之后才能将其输出连接到处理器时钟。
- **设置不当的风险**:不正确的PLL配置可能导致系统故障。
#### 17. ARM7与ARM9的主要区别
- **流水线结构**:ARM7采用了三级流水线结构,而ARM9采用了五级流水线结构。
- **内存管理单元**(MMU):ARM7不具备MMU,而ARM9具有MMU,这使得ARM9能够支持操作系统级别的内存管理和虚拟化。
- **性能比较**:ARM9提供了更高的时钟频率和更强的性能,采用哈佛结构分别处理指令和数据。
- **功耗优化**:ARM7TDMI在功耗方面表现出色,适合于电池供电设备。
#### 18. VIC的基本操作
向量中断控制器(VIC)是用于管理中断的关键组件:
- **中断设置**:设置IRQ或FIQ中断,为IRQ中断分配优先级,并确定中断是否为向量中断。
- **中断允许**:通过设置相应的寄存器位,允许特定中断。
- **中断响应**:当发生IRQ中断时,可以通过读取向量地址寄存器来确定中断处理程序的位置,并跳转到相应的代码段。
- **退出中断**:通过向向量地址寄存器写入零值来通知VIC中断已经处理完成。
- **处理器模式切换**:发生中断时,处理器会切换到中断模式,并将相关寄存器映射到新的位置。
以上是关于ARM体系结构中一些关键概念的详细解释。这些概念对于理解ARM体系结构的基本原理和实现细节至关重要。