片上总线标准繁多,而由ARM公司推出的AMBA片上总线受到广大开发商和SoC片上系统集成商的喜爱,已成为一种主流的工业片上结构。AMBA规范主要包括AHB(Advanced High performance Bus)和APB(Advanced Peripheral Bus),二者分别适用于高速和相对低速设备的连接。
CM3是32位MCU,即它的数据总线宽度是32位。CM3内部结构及总线连接示意图如图2-8所示。
由图2-8可以看出,CM3包含5根总线,即I-Code总线、D-Code总线、系统总线、外部专用外设总线和内部专用外设总线。
I-Code总线是32位的AHB,从程序存储器空间(0x00000000~0x1FFFFFFF)取指令和取向量在此总线上完成。所有取指令都是按字来操作的,每个字的取指令数目取决于运行的代码和存储器中代码的对齐情况。
D-Code总线是32位的AHB,从程序存储器空间(0x00000000~0x1FFFFFFF)取数据和调试访问在此总线上完成。数据访问的优先级比调试访问的优先级高,因此当总线上同时出现内核访问和调试访问时,必须在内核访问结束后才开始调试访问。
系统总线是32位的AHB,对系统存储空间(0x20000000~0xDFFFFFFF,0xE0100000~0xFFFFFFFF)的取指令、取向量及数据和调试访问在此总线上完成。系统总线用于访问内存和外设,覆盖的区域包括SRAM、片上外设、片外RAM、片外扩展设备及系统级存储区的部分空间,详见2.5.3节。系统总线包含处理不对齐访问、FP B重新映射访问、位绑定(Bit-Band)访问及流水线取指令的控制逻辑。
外部专用外设总线是APB,对CM3处理器外部外设存储空间(0xE0040000~0xE00FFFFF)的取数据和调试访问在此总线上完成。该总线用于CM3外部的APB设备、嵌入式跟踪宏单元(ETM)、跟踪端口接口单元(TPIU)和ROM表,也用于片外外设。
内部专用外设总线是AHB,对CM3处理器内部外设存储空间(0xE0000000~0xE003FFFF)的取数据和调试访问在此总线上完成。该总线用于访问嵌套向量中断控制器NVIC、数据观察和触发(DWT)、Flash修补和断点(FPB)、指令跟踪宏单元(ITM)及存储器保护单元(MPU)。
图2-8 CM3内部结构及总线连接示意图
CM3处理器5类总线的总结如表2-7所示。
表2-7 CM3处理器5类总线的总结