lvd*_*vds 6 arm stm32 cortex-m
STM32 文档说 I-CODE 和 D-CODE 总线连接到内部闪存。I-CODE 总线用于获取指令,D-CODE 总线用于代码存储区中的数据访问(文字加载)。
问题是为什么要使用两条独立的总线?它们能否提供对闪存的同时且绝对独立的访问?
小智 5
从stm32 RM0090参考手册(第73页)可以看出,I-CODE和D-CODE总线不能独立访问闪存,但是它们可以独立访问闪存接口:

至于为什么有两个:它们有独立的chaches,而且I-CODE总线实现了预取,这对于数据获取来说是无用的。参考手册的相关部分(第84页):
数据管理
在 CPU 管道的执行阶段,通过 D 代码总线从闪存中获取文字池。因此,CPU 管道会停止,直到提供所请求的文字池。为了限制由于文字池而损失的时间,通过 AHB 数据总线 D 代码的访问优先于通过 AHB 指令总线 I 代码的访问。如果某些文字池经常使用,可以通过设置FLASH_ACR寄存器中的数据缓存使能(DCEN)位来使能数据缓存。此功能的工作原理类似于指令高速缓存,但保留的数据大小仅限于 8 行 128 位。