2015-06-14 1066 views
3

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

问题是为什么使用两条独立的公共汽车?他们可以提供同时和绝对独立的闪存访问吗?

回答

3

你可以从STM32 RM0090 Reference manual(第73页)看,I-CODE和d-CODE总线不能独立访问闪存,它们不过访问独立于闪存接口:

enter image description here

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

数据管理

文字池期间CPU流水线的执行阶段是从闪存存储器中取出通过 的d-代码总线。因此,CPU管线将暂停,直到提供请求的文字池 。为了限制由文字池引起的时间损失,通过AHB数据总线访问 D代码优先于通过 访问AHB指令总线I代码。如果某些文字池频繁使用 ,则可以通过将FLASH_ACR寄存器中的数据高速缓存 使能位(DCEN)置1来启用数据高速缓存存储器。该功能与指令高速缓存存储器的 一样工作,但保留的数据大小限制为 至128位的8行。