STM32文档说I-CODE和D-CODE总线连接到内部闪存。 I-CODE总线用于获取指令,D-CODE总线用于代码存储区(字面负载)中的数据访问。
问题是为什么要使用两辆独立的公交车?它们能否同时提供对闪存的独立访问?
答案 0 :(得分:3)
从stm32 RM0090 Reference manual(第73页)可以看出,I-CODE和D-CODE总线无法独立访问闪存,但它们可以独立访问闪存接口:
至于为什么有两个:它们有单独的字符串,I-CODE总线也实现了预取,这对于数据提取是没用的。参考手册的相关部分(第84页):
数据管理
通过Flash内存提取文字池 CPU流水线执行阶段的D代码总线。该 因此,CPU管道将停止,直到请求的文字池 提供。限制文字池,访问所造成的时间损失 通过AHB数据总线D-Code优先于通过访问 AHB指令总线I-Code。如果经常有一些文字池 使用时,可以通过设置数据缓存来启用数据缓存 FLASH_ACR寄存器中的使能(DCEN)位。这个功能就像 指令高速缓冲存储器,但保留的数据大小是有限的 到8行128位。