如图3.2所示,Cortex-M3内部有若干个总线接口,以使Cortex-M3能同时取指和访内(访问内存),它们是:
①指令存储区总线(两条);
②系统总线;
③私有外设总线。
有两条代码存储区总线负责对代码存储区的访问,分别是I-Code总线和D-Code总线。前者用于取指,后者用于查表等操作,它们按最佳执行速度进行优化。
系统总线用于访问内存和外设,覆盖的区域包括SRAM、片上外设、片外RAM、片外扩展设备,以及系统级存储区的部分空间。
(1)I-Code总线
I-Code总线是一条基于AHB-Lite(Advanced High-performance Bus Lite)总线协议的32位总线,负责在0x0000_0000~0x1FFF_FFFF的取指操作。取指以字的长度执行,即使是对于16位指令也如此。因此CPU内核可以一次取出两条16位Thumb指令。
(2)D-Code总线(www.xing528.com)
D-Code总线也是一条基于AHB-Lite总线协议的32位总线,负责在0x0000_0000~0x1FFF_FFFF的数据访问操作。尽管Cortex-M3支持非对齐访问,但绝不会在该总线上看到任何非对齐的地址,这是因为处理器的总线接口会把非对齐的数据传送都转换成对齐的数据传送。因此,连接到D-Code总线上的任何设备都只需支持AHB-Lite的对齐访问,不需要支持非对齐访问。
(3)系统总线
系统总线也是一条基于AHB-Lite总线协议的32位总线,负责在0x2000_0000~0xDFFF_FFFF和0xE010_0000~0xFFFF_FFFF之间的所有数据传送,取指和数据访问都算上。和DCode总线一样,所有的数据传送都是对齐的。
(4)私有外设总线
私有外设总线是一条基于APB(Advanced Peripheral Bus)总线协议的32位总线。此总线是用来负责0xE004_0000~0xE00F_FFFF的私有外设访问。但是,此APB存储空间的一部分已经被TPIU、ETM和ROM表用掉了,就只留下了0xE004_2000~E00F_F000用于配接附加的(私有)外设。
(5)调试访问端口总线
调试访问端口总线是一条基于“增强型APB规格”的32位总线,它专用于挂接调试接口,例如SWJ-DP和SW-DP。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。