Cortex‐M3 内部有若干个总线接口,以使 CM3 能同时取址和访内(访问内存),它们是:
- 指令存储区总线(两条): 负责对代码存储区的访问,分别是 I‐Code 总线和 D‐Code 总线。前者用
于取指,后者用于查表等操作,它们按最佳执行速度进行优化。 - 系统总线: 用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,
以及系统级存储区的部分空间。 - 私有外设总线: 负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。
注:
I-Code 总线
- I‐Code 总线是一条基于 AHB‐Lite 总线协议的 32 位总线,负责在 0x0000_0000 –0x1FFF_FFFF 之间的取指操作。取指以字的长度执行,即使是对于 16 位指令也如此。因此CPU 内核可以一次取出两条 16 位 Thumb 指令。
D-Code 总线
- D‐Code 总线也是一条基于 AHB‐Lite 总线协议的 32 位总线,负责在 0x0000_0000 –0x1FFF_FFFF 之间的数据访问操作。尽管 CM3 支持非对齐访问,但你绝不会在该总线上看到任何非对齐的地址,这是因为处理器的总线接口会把非对齐的数据传送都转换成对齐的数据传送。因此,连接到 D‐Code 总线上的任何设备都只需支持 AHB‐Lite 的对齐访问,不需要支持非对齐访问。
系统总线
- 系统总线也是一条基于 AHB‐Lite 总线协议的 32 位总线,负责在 0x2000_0000 –0xDFFF_FFFF 和0xE010_0000 – 0xFFFF_FFFF 之间的所有数据传送,取指和数据访问都算上。和 D‐Code 总线一样,所有的数据传送都是对齐的。
外部私有外设总线
- 这是一条基于 APB 总线协议的 32 位总线。此总线来负责 0xE004_0000 – 0xE00F_FFFF 之间的私有外设访问。但是,由于此 APB 存储空间的一部分已经被 TPIU、ETM 以及 ROM 表用掉了,就只留下了 0xE004_2000‐E00F_F000 这个区间用于配接附加的(私有)外设。
Cortex-M3 的其它接口
- 除了总线接口之外,CM3 还有若干个用于其它目的的接口,这些接口的信号都不大可能会引出到引脚上,而只用于连接 SoC 不同的部分,或者干脆就没有使用。