ARM Contex-M系列
Cortex系列处理器是基于ARMv7架构的,分为Cortex-M、Cortex-R和Cortex-A三类。
Cortex-M0
- ARMv6-M CPU内核:ARM公司于2007年推出的内核。冯·诺依曼体系结构,3级流水线,支持大部分Thumb和小部分Thumb-2指令集,所有指令一共57条。此外还内嵌32-bit返回结果的硬件乘法器。
- NVIC嵌套向量中断控制器:用于CPU在正常Run模式下中断管理。最大支持32个外部中断,外部中断可设4级抢占优先级(2bit)。
- WIC唤醒中断控制器:用于CPU在低功耗Sleep模式下中断管理。
- AHB-Lite总线:一条32bit AMBA-3标准的高性能system总线负责所有Flash、SRAM中指令和数据存取。
- 调试模块:0-4个硬件断点Breakpoint,0-2个数据监测点Watchpoint。
- DAP调试接口:通过DAP模块支持JTAG和SWD接口。
Contex-M0+
那么CM0+到底改进了什么?
- ARMv6-M CPU内核:流水线改为2级(很多8bit MCU都是2级流水线,主要用于降低功耗)
- NVIC嵌套向量中断控制器:增加了VTOR即中断重定向功能。
那么CM0+到底增加了什么?
- MPU存储器保护单元:提供硬件方式管理和保护内存,控制访问权限,最大可将内存分为8*8个region。内存越权访问,将返回MemManage Fault。
- MTB片上跟踪单元:用户体验更好的的跟踪调试,优化的异常捕获机制,可以更快地定位bug。
- Fast I/O:可单周期访问的快速I/O口,更易于Bit-banging(比如GPIO模拟SPI、IIC协议)。
Cortex-m3
那么CM3到底改进了什么?
- ARMv7-M CPU内核:ARM公司于2004年推出的内核。哈佛体系结构,3级流水线+分支预测,支持全部的Thumb和Thumb-2指令集。内嵌32-bit硬件乘法器可返回64-bit运算结果,且新增32-bit硬件除法器。
- NVIC嵌套向量中断控制器:最大支持240个外部中断,中断优先级可分组(抢占优先级、响应优先级),8bit优先级设置(最大128级抢占优先级(对应最小2级响应优先级),最大256级响应优先级(对应无抢占优先级))。
- 3x AHB-Lite总线:除了原system总线负责SRAM存取外,还新增两条ICode、DCode总线分别完成Flash上指令和数据存取。
- 调试模块:0-8个硬件断点Breakpoint,0-4个数据监测点Watchpoint。
- ITM/ETM跟踪单元:ITM更好地支持printf风格debug,ETM提供实时指令和数据跟踪。
那么CM3到底增加了什么?
CM3相比CM0+并没有增加什么独有模块,反倒是少了Fast I/O Port,实际上Fast I/O Port是CM家族里CM0+所独有的模块。
Cortex-M4
那么CM4到底改进了什么?
- ARMv7E-M CPU内核:增加了DSP相关指令支持。
那么CM4到底增加了什么?
- DSP数字信号处理单元:新增支持单周期16/32-bit MAC、dual 16-bit MAC, 8/16-bit SIMD算法的数字信号处理单元。
- FPU浮点运算单元:新增单精度(float型)兼容IEEE-754标准的浮点运算单元(VFPv4-SP)。
Cortex-M7
那么CM7到底增加了什么?
- I/D-Cache缓存区:即是我们通常理解的L1 Cache,每个Cache大小为4-64KB。
- I/D-TCM紧密耦合存储器:紧密的与处理器内核相耦合的RAM,提供与Cache相当的性能,但比Cache更具确定性,memory最大均为16MB。
- ECC特性:对L1 Cache提供错误校正和恢复功能,提高系统的可靠性。
- AXI-M总线:基于AMBA 4的64bit AXI总线,用于支持挂在系统上的L2 memory。