1.2.4 嵌套向量中断控制器(NVIC)
Cortex-M3处理器紧密结合一个可配置的中断控制器(NVIC),提供了工业领先的中断处理性能。标准的NVIC实现包括一个不可屏蔽中断(NMI),加上具有优先级的32个通用物理中断。通过简单的综合选择,控制器可以被配置为1-244个物理中断。另外,抢占式优先级的数目,可以在综合时配置到255个。
与处理器内核的紧密结合,使处理器可以更快地执行中断服务程序(ISR)。典型情况下,从中断发生到进入服务可减少70%的周期数,这是通过寄存器硬件堆栈,加上退出和重启多寄存器Load-Store操作完成的。这种实现也意味着不需要任何汇编代码来完成寄存器数据传送,大大简化了代码。
NVIC采用尾链(Tail-Chaining)技术,简化了在激活与挂起的中断之间的数据传送。它用简单的6个周期的取指,取代了传统的串行堆栈通常需要超过30个时钟周期的Push-Pop操作。
为了提高低功耗特性,NVIC设计了三种睡眠方式。其深度睡眠(Deep-Sleep)功能可以输出信号到其他系统模块,使整个器件快速关闭。
NVIC为低延迟实现异常处理提供了方便。主要有以下特征:
• 可配置1~240个外部中断。
• 可配置优先级位数3~8位。
• 支持电平和脉冲(边沿)中断。
• 可以动态重新分配中断优先级。
• 优先级分组。
• 支持尾链(tail-chaining)中断。
• 进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销。
1.2.5 总线矩阵
ARM Cortex-M3处理器集成了一个AMBA AHB-Lite总线来连接系统外设,并降低系统集成的复杂性。总线矩阵支持不对齐的数据访问,使不同的数据类型可以在存储器中紧密衔接(不因为数据需要对齐而留出空隙),可显著降低SRAM的需求和系统成本。
总线矩阵将处理器、调试接口连接到外部总线。总线矩阵连接到以下外部总线:
• ICode总线。这是一条32位的AHB-Lite总线,主要用于从指令空间中取指和取向量。
• DCode总线。这是一条32位的AHB-Lite总线,主要用于从指令空间的数据读写和调试访问。
• 系统总线。这是一条32位的AHB-Lite总线,主要用于从系统空间中取指、取向量、读写数据和调试访问。
• PPB。这是一条32位的APB (v2.0)总线,主要用于从PPB空间读写数据和调试访问。
总线矩阵还控制:
• 不对齐访问。总线矩阵把不对齐的处理器访问转化成对齐的访问。
• 位绑定(bit banding)。 总线矩阵把位绑定的别名(alias)访问转换成位绑定的区域访问。完成如下操作:
— 对位绑定的装载,提取位域 。
— 对位绑定的存储,读-修改-写变成原子操作。
• 写缓冲。总线矩阵有一个写缓冲器,使总线等待脱离处理器内核。
1.2.6 集成调试
ARM Cortex-M3实现了一个完整的硬件调试解决方案,通过一个传统的JTAG口或一个适合小封装器件的2线串行调试口(SWD),可以获得很高的处理器系统可视度。
对于系统跟踪,处理器在数据观察点基础上集成了一个可选的ETM(嵌入式跟踪宏单元),它可以被配置为特定的系统事件触发。为了简化这些系统事件的处理,一个串行观测器(Serial Wire Viewer,SWV)可以通过一个引脚输出标准的ASCII数据流。
Flash修补技术,使器件和系统开发者在调试或运行过程中,可以修补从ROM到SRAM或Flash的代码错误,可避免昂贵的重定制。
Cortex-M3有关系统调试的几个组件:FPB、DWT和ITM。
FPB
FPB单元实现了硬件断点和从代码空间到系统空间的修正存取。FPB有八个比较器:
• 6个指令比较器,可以各自被配置成实现把取指从指令空间重映射到系统空间,或者实现一个硬件断点。
• 2个文字(literal)比较器。可以把文字存取从指令空间重映射到系统空间。
DWT
DWT单元含有以下的调试功能:
• 它有四个比较器,每个都能设置成一个硬件观察点、一个ETM触发器、一个PC采样事件触发器,或者一个数据地址采样事件触发器。
• 性能分析用的几个计数器或数据匹配事件触发器。
• 可设置成在特定间隔发射一个PC采样值或中断事件信息。
ITM
ITM是一个应用驱动的跟踪源,它支持应用程序事件跟踪和printf风格的调试。
ITM提供以下跟踪信息的来源:
• 软件跟踪。 软件可以直接操作ITM有关寄存器,引发信息包发出。
• 硬件跟踪。 信息包由DWT产生,然后由ITM发出。
• 时间戳(time stamping)。与信息包相关的时间戳的发射。
1.2.7 可选组件
ARM Cortex-M3有二个可选组件:存储器保护单元(MPU)、嵌入式跟踪宏单元(ETM)。
细粒度的MPU设计,使多任务的应用可以实现安全特权,以及分离代码、数据和堆栈。在类似汽车等许多嵌入式应用中,这类需求正变得越来越普遍。
嵌入式跟踪单元(ETM)提供了一种远小于传统跟踪单元范围的指令跟踪捕获,使许多低价器件(如MCU)可以实现跟踪调试。
1.2.8 Cortex-M3处理器应用
Cortex-M3处理器的特性,使它适合很大范围的应用,主要包括:
价格敏感的设备——通用MCU、智能玩具、个人电子设备
。小的核可以降低硅片面积
。紧密结合系统外设可缩小面积、降低开发成本
。Thumb-2代码可减小指令存储器达30%
。SWD允许使用较小的引脚数和封装
。在ISR、Boot代码中无需汇编代码
。单周期的Read/Modify/Write,更紧凑的数据打包
。确定的中断处理
。系统更新时的修补能力(ROM到Flash、SRAM)
低功耗设备——Zigbee、PAN(BlueTooth)、医疗电子设备
。低功耗内核:0.047mW/MHz(0.13um,ARM Metro Lab,50MHz)
。高级时钟选通技术降低功耗
。集成的睡眠模式
。系统部件的功耗控制
。高效率允许较低的时钟源
。快速完成任务、增加睡眠时间,降低总的功耗
高性能设备——超低价格手机、汽车应用、大容量存储设备;
。性能可达1.25 DMIPS/MHz
。执行Thumb指令时,比ARM7处理器性能高70%
。执行ARM指令时,比ARM7处理器性能高35%
。硬件除法——更好的算法实现
。快速中断处理
。可选的MPU针对特定应用
。调试与跟踪能力