Phimas

【原创】【翻译】从Cortex - M3过度到Cortex - M4(3)---- 编程模型

0
阅读(6043)

 由于本人文笔拙劣,可能翻译的不到位,望大家多多包涵。

原作者:罗伊.罗

下表列出的是Cortex - M3和M4之间的差异。

 

 此表显示,大多数的Cortex - M4的特点与Cortex - M3加上DSP扩展和一个可选的FPU 是没有相同显著差异的。从M3过渡到M4几乎没有必要修改任何硬件和软件,接下来的章节,将着重详细介Cortex - M4的核心对数字信号的处理能力。

 编程模型

1 操作模式

 与Cortex - M3相同,Cortex - M4的支持两种操作模式:thread模式和handler模式。处理器进入thread模式复位,或作为异常返回的结果。特权和非特权代码都可以运行在thread模式。处理器进入Handler模式作为一个例外的结果。所有代码在Handler模式都是特权的

 2 运行状态

 与Cortex - M3相同,Cortex - M4的可以工作在两种运行状态之一:Thumb状态或调试状态。Thumb状态下可正常执行运行16位和32位的半字对齐Thumb指令。调试状态是处理器停止调试的运行状态。

 3 指令集

 Cortex - M4与Cortex - M3使用相同的架构, 即ARMv7 - M架构。这些处理器的指令来自于包括16位和32位指令的Thumb - 2指令集。此外,Cortex- M4的综合了SIMD和可选的浮点数运算单元, 这将指令总数增长至291,超过了Cortex - M3的186个指令。

 
 

图表形象的展示了Cortex - M系列之间的指令关系。Cortex - M3的ISA是向上兼容Cortex - M4的ISA,Cortex - M4F(Cortex - M4处理器加FPU)是指加入FPU指令的Cortex - M4。

4 系统地址映射

 Cortex - M3和Cortex - M4的具有相同的系统地址映射。下图展示了系统的地址映射:

5 位绑定

 与Cortex - M3相同,Cortex - M4在两个1MB 的内存区域提供位访问,一个在内部SRAM区域,另外一个在周边区域。最大到32MB的地址空间因此被保留,并且在这些区域的每个字都会被映射 到 位绑定区内 对应一个特定的位上。从映射区域读取会返回一个包含相应位的值的字,在字中一位写0在映射区引起。

6 内核寄存器比较

 与Cortex - M3相同,Cortex - M4有16个通用寄存器R0 - R15,所有都是32位。R0 - R12通用于基本上所有的指令,R13可用作堆栈指针,R14可用作链接寄存器(用于子程序异常返回),R15可作为程序计数器。下图显示核心之间的寄存器的比较: