Cortex-M3处理器系统框图

1.详细框图

CM3处理器其实是个大礼包,里面处理处理核心外,还有了好多其它组件,已用于系统管理和调试支持。

Cortex-M3处理器系统框图_第1张图片

 注:虚线框住的MPU和ETM是可选组件,不一定会包含在每一个CM3的MCU中。

Cortex-M3处理器系统框图_第2张图片

 可见,Cortex-M3处理器是以一个“处理器子系统”呈现的,其CPU内核本身与NVIC和一系列调试模块都紧密耦合:

(1)CM3Core:Cortex-M3处理器的中央处理核心

(2)嵌套向量中断控制器NVIC:NVIC是一个在CM3中内建的中断控制器。中断的具体路数由芯片厂商定义。NVIC食欲CPU紧耦合的,它还包含了若干个系统控制寄存器。因为NVIC支持中断嵌套,使得在CM3上处理嵌套中断时清爽而强大。NVIC还采用了向量中断的机制在中断发生时,它会自动取出对应的服务例程入口地址,并且直接调用,无需软件判定中断源,为缩短中断延时做出来非常重要的贡献。

(3)存储器保护单元:MPU是一个选配的单元,有些CM3芯片可能没有配备次组件。如果有,则它可以把存储器分成一些regions,并分别予以保护。例如,它可以让某些regions在用户级下变成只读,从而阻止了一些用户程序破坏关键数据。

(4)BusMatrix:BusMatrix是CM3内部总线系统的核心。它是一个AHB互联的网络,通过它可以让数据在不同的总线之间并行传送——只要两个总线主机不试图访问同一块内存区域。BusMatrix还提供了附加的数据传送管理设施,包括一个写缓冲以及一个按位操作的逻辑(位带bit-band)

(5)ABH to APB Bridge:它是一个总线桥,用于把若干个APB设备连接到CM3处理器的私有外设总线上(内部的和外部的) 。这些APB设备常见于调试组件。CM3还允许芯片厂商把附加的APB设备挂在这条APB总线上,并通过APB接入其外部私有外设总线。

(6)SW-DP/SWJ-DP:串行线调试端口(SW-DP) /串口线 JTAG 调试端口(SWJ-DP)都与 AHB访问端口(AHB-AP)协同工作,以使外部调试器可以发起 AHB 上的数据传送,从而执行调
试活动。在处理器核心的内部没有 JTAG 扫描链,大多数调试功能都是通过在 NVIC 控制下的 AHB 访问来实现的。 SWJ-DP 支持 both 串行线协议和 JTAG 协议,而 SW-DP 只支持串行线协议。

2.Cortex-M3的总线接口

(1)I-Code总线

I-Code 总线是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000 – 0x1FFF_FFFF 之间的取指操作。取指以字的长度执行,即使是对于 16 位指令也如此。因此 CPU 内核可以一次取出两条 16 位 Thumb 指令。

(2)D-Code总线

D-Code 总线也是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000—0x1FFF_FFFF之间的数据访问操作。尽管 CM3 支持非对齐访问,但你绝不会在该总线上看到任何非对齐的地址,这是因为处理器的总线接口会把非对齐的数据传送都转换成对齐的数据传送。因此,连接到 D-Code总线上的任何设备都只需支持 AHB-Lite 的对齐访问,不需要支持非对齐访问。

(3)系统总线

系统总线也是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x2000_0000 – 0xDFFF_FFFF 和0xE010_0000 – 0xFFFF_FFFF 之间的所有数据传送,取指和数据访问都算上。和 D-Code 总线一样,所有的数据传送都是对齐的。

(4)外部私有外设总线

这是一条基于 APB 总线协议的 32 位总线。此总线来负责 0xE004_0000 – 0xE00F_FFFF 之间的私有外设访问。但是,由于此 APB 存储空间的一部分已经被 TPIU、 ETM 以及 ROM 表用掉了,就只留下了 0xE004_2000-E00F_F000 这个区间用于配接附加的(私有)外设。

(5)调试访问端口总线

调试访问端口总线接口是一条基于“增强型 APB 规格”的 32 位总线,它专用于挂接调试接口,
例如 SWJ-DP 和 SW-DP。(注:不要挪用此总线)

3.连接方式

CM3有若干个总线接口,这里给出一个样板的连接实例

Cortex-M3处理器系统框图_第3张图片

因为代码存储区既可以有指令总线(I-Code)访问(当从此区取指时),也可以被数据总线(D-Code)访问(当在此区访问数据时),需要在中间插入一个总线开关,称为“总线矩阵”;或者使用一个AHB总线复用器。如果是用来总线矩阵,则闪存和附加的SRAM可以被I-Code和D-Code访问。

当数据访问和取值同时尝试访问同一块区域是,可以赋予数据访问更高的优先级以提高性能。


 


 

你可能感兴趣的:(Cortex-M3权威指南,单片机,嵌入式硬件)