【问题标题】:Core Coupled Memory executable on STM32F4xx?STM32F4xx 上的内核耦合内存可执行文件?
【发布时间】:2018-04-11 06:39:51
【问题描述】:

尝试从 STM32F429s CCM 运行代码,但我总是在遇到 CCM 中的第一条指令时设置了 IBUSERR 标志的硬故障。

该指令有效且对齐良好。 STM32F4xx 是否可能不允许从 CCM 执行? (数据访问效果很好)。

外星人

【问题讨论】:

  • 在这部分,CCM 只有在通过避免总线争用来同时访问数据和 DMA 访问其他片上存储器时才具有性能优势。

标签: embedded stm32


【解决方案1】:

这些部分中的 CCM 只连接到数据总线。无法从该存储器中获取指令——代码只能使用闪存、SRAM1 和外部存储器。

更多信息请参考the reference manual的第2.1节(“系统架构”),也就是上图的出处。

【讨论】:

  • 谢谢!在 STM32F3 上也可以从那里运行代码。
  • 但是您可以从 SRAM 运行。将关键例程放在那里,并将堆栈和数据放在 CCM 中 - 这是处理关键例程的最有效方式。
  • @Clifford 你确定吗? I-bus 和 S-bus 的部分明确提到了获取指令;相比之下,D-bus 上的部分则没有。它说目标是“包含代码或数据的内存”,但这似乎是指 D-bus 用于文字数据加载。
  • @duskwuff:我的立场是正确的 - D-Bus 允许数据和调试访问代码空间,不允许执行infocenter.arm.com/help/index.jsp?topic=/… 对此进行了更清楚的解释,尽管 ST 使用了略有不同的命名法。
  • @PeterJ_01 :我不确定你是否反对。这就是“我站得更正”的意思 - 更改已明确标记。我删除了原始的 cmets,因为读取可能无法通过它并被误导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多