【问题标题】:How to insert a memory barrier using IAR?如何使用 IAR 插入内存​​屏障?
【发布时间】:2015-12-06 23:48:01
【问题描述】:

如何使用适用于 ARM 的 IAR 嵌入式工作台插入编译器级别的内存屏障? GCC 中的等价物是 asm volatile ("" : : : "memory")

User Guide 中没有屏障和围栏这两个词。

【问题讨论】:

  • AFAIK,IAR 使用 GCC 编译器。
  • @BasileStarynkevitch:好一个!他们有自己的编译器!
  • C11 stdatomics 提供了一种标准方式——称为栅栏。否则使用内在函数,无论如何你必须仔细选择你需要的屏障。
  • @Olaf:我相信 IAR 还不支持 C11,只支持 C90 或 C99
  • @TomTanner, Olaf:这是一个编译器屏障,与 OP 发布的带有内存破坏器的 gcc-inline-assembly 相同。

标签: c arm embedded iar


【解决方案1】:

如果您的 IAR 工具足够新,您可以使用与 gcc 中相同的内联汇编程序。 要获得硬件效果,您可以尝试将 DMB 指令放入内联汇编程序语句中,或者直接使用 __DMB() 内部函数。

【讨论】:

    猜你喜欢
    • 2015-09-24
    • 2013-06-03
    • 2010-12-07
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多