【问题标题】:STM32 I-CODE and D-CODE busesSTM32 I-CODE 和 D-CODE 总线
【发布时间】:2015-08-30 03:31:26
【问题描述】:

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

问题是为什么要使用两条独立的总线?它们能否提供对闪存的同时且绝对独立的访问?

【问题讨论】:

    标签: arm stm32 cortex-m


    【解决方案1】:

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

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

    数据管理

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多