STM32 I-CODE和D-CODE总线

时间:2015-06-14 16:06:52

标签: arm stm32 cortex-m

STM32文档说I-CODE和D-CODE总线连接到内部闪存。 I-CODE总线用于获取指令,D-CODE总线用于代码存储区(字面负载)中的数据访问。

问题是为什么要使用两辆独立的公交车?它们能否同时提供对闪存的独立访问?

1 个答案:

答案 0 :(得分:3)

从stm32 RM0090 Reference manual(第73页)可以看出,I-CODE和D-CODE总线无法独立访问闪存,但它们可以独立访问闪存接口:

enter image description here

至于为什么有两个:它们有单独的字符串,I-CODE总线也实现了预取,这对于数据提取是没用的。参考手册的相关部分(第84页):

  

数据管理

     

通过Flash内存提取文字池   CPU流水线执行阶段的D代码总线。该   因此,CPU管道将停止,直到请求的文字池   提供。限制文字池,访问所造成的时间损失   通过AHB数据总线D-Code优先于通过访问   AHB指令总线I-Code。如果经常有一些文字池   使用时,可以通过设置数据缓存来启用数据缓存   FLASH_ACR寄存器中的使能(DCEN)位。这个功能就像   指令高速缓冲存储器,但保留的数据大小是有限的   到8行128位。