【问题标题】:Using DSP instructions on arm cortex-M4 (C-language extension)在 arm cortex-M4 上使用 DSP 指令(C 语言扩展)
【发布时间】:2015-08-25 14:05:54
【问题描述】:

我正在使用 CooCox CoIDE 和 GCC ARM 嵌入式 4.9q2,我使用 cmsis 库,在 ARM Cortex-M4 STM32F3 MCU 上编程。

我目前正在尝试在中断中执行一些快速饱和算术。我的印象是我可以使用 ARM C 语言扩展 (ACLE) 来避免在我的 C 代码中插入一些汇编程序。

但是,当我调用像 __qadd16(a,b) 这样的函数时,我会收到“未定义的引用”错误。

我想我还需要包含更多内容或指定编译器选项以启用 ACLE,但我不知道具体是哪个。

所以我的问题是:

有没有可能或者我误解了 ACLE 的使用??

调用这些函数的过程是什么?它们不是 GCC 的一部分吗?如果没有,我应该包括什么?

提前致谢!

【问题讨论】:

    标签: c gcc arm


    【解决方案1】:

    你应该

    #include <core_cm4_simd.h>
    

    来自 CMSIS 标头。它将指令定义为内联函数,前缀为__

    【讨论】:

    • 所以我确实包括了 但我的问题来自其他地方。
    • 所以我确实包括了 但我的问题来自其他地方:我试图按照 ACLE 文档中的定义调​​用 __qadd16(a,b) 但不起作用。现在我正在调用 __QADD16(a,b) ,它可以工作。我不确定我是否真的明白为什么,因为 core_cm4_simd.h 只是使用 #define __QADD16 __qadd16 所以我认为两者都应该工作,但我错了。
    • 您应该查看该标头的 gcc 部分。它支持各种 cimpler(参见#ifdefs)。有些提供指令作为内在函数(内置)。 gcc 需要汇编程序存根。
    • 是的,对不起,我是第一次使用。
    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2018-12-04
    • 2017-06-23
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多