2.4 存储器重映射 Cortex-M3 包含一个机制:允许将中断向量表重新映射到存储器映射空间的备用单元。这通过包含在 NVIC (嵌套向量中断控制器) 中的向量表偏移寄存器来进行控制。向量表可位于 Cortex-M3 的地址空间 1GB 范围内的任意一处。向量表必须是 128 字(512 字节)边界对齐,因为 LPC1700 系列 Cortex-M3 微控制器上的 NVIC 可分配 128 个中断。详细描述请参考《ARM® Cortex™-M3 技术参考指南》第 8 章(了解更多)。
2.5 预取指中止和数据中止异常 如果试图访问一个保留地址或未分配区域的地址,LPC1700 系列 Cortex-M3 微控制器将产生适当的总线周期中止异常。这些区域是特定的 Cortex-M3 微控制器器件所没有执行的存储器映射区域。这包括图 2.1 中所标记的为“保留”或“未使用”的地址空间。试图对这些区域进行数据访问和指令取指都将会产生异常。对映射到 AHB 或 APB 外设的地址空间进行任何取指,会产生预取指中止异常。在现有的 APB 外设地址空间内,对未定义地址空间的访问不会产生数据中止异常。每个外设内的地址译码被限定为外设内部需要判别的已定义寄存器。对地址 0x4000 D000 (UART0 空间内一个未定义的地址)的访问可能导致对定义在地址 0x4000 C000 处的寄存器进行访问。LPC1700 系列 Cortex-M3 微控制器文档并没有对外设空间内的这种地址别名定义的详细内容进行说明,且 LPC1700 系列 Cortex-M3 微控制器不支持这种地址别名特性(更详细的信息)。如果软件执行直接写 Flash 存储器,则 Flash 加速器产生数据中止异常。Flash 编程必须通过使用引导代码提供的特定 Flash 编程接口来完成。需要注意的是,只有在试图执行从非法地址中取指时,在流水线阶段,Cortex-M3 内核会保存相关预取指令 (这些指令是无意义的) 的异常标志,并且只有在试图执行从非法地址中取得的指令时,才会去处理这个预取指令终止异常。当代码在非常靠近存储器边界执行时,这种操作可防止由预取指所造成的意外中止(更多解决方案)。
暂无评论