This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Compiler/TDA3:在M4上使用ARM内在过程时出现问题

Guru**** 2589245 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/606542/compiler-tda3-issue-using-arm-intrinsic-on-m4

部件号:TDA3

工具/软件:TI C/C++编译器

根据德州仪器(TI)的“ARM Optimizing C/C++ Compiler v 5.1 ”pdf,Cortex-M4上提供了一些ARM内在函数(第5.12 节-第103页)。

我们的一位客户 尝试使用其中的一些内在函数来使用ti_arm编译器构建二进制文件,但这些函数无法识别,在头文件的任何位置都不可用。  他们尝试直接添加它们(没有头文件),但无法识别它们。

能否举例说明如何使用这些内在函数?

 

请检查 “ARM_Optimizing_C_CPP_Compiler_v5.1__Users_Guide.pdf”文件,5.12 部分–第103页。

 

此致

Yashwant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我实际上设法添加了一些装配体函数(例如 SADD16),并将__asm关键字添加到C++代码中

     

    例如:

    _ASM (“SADD16”);

     

    此代码编译正常。

    但此函数要求两个输入参数并返回一个结果,这可以在汇编中完成,但恐怕我没有完成此操作所需的技能组。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yashwant Dutt 说:
    请举例说明如何使用这些内在函数吗?[/QUOT]

    此C代码...

    int fxn (int arg1,int arg2)
    {
    返回_sadd16 (arg1,arg2);
    } 

    生成此汇编代码输出...

    fxn:
    SADD16 A1,A1,A2 ;[DPU_LIN_pipe]|3|
    bx 左 ;[DPU_3_pipe] 

    请注意它如何使用指令SADD16,而不调用名为_sadd16的函数。  

    另一种判断方法是查看链接程序映射文件中的符号列表。  因为没有调用名为_sadd16的函数,所以不会看到名为_sadd16的任何符号。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,George,

    我尝试在我的C++代码中引入此代码:"_sadd16 (arg1,arg2);",但未编译。 我收到未定义__sadd16的错误。

    我尝试搜索定义了__sadd16函数的头文件,但在ti_arm编译器中没有找到任何文件。

    请您指导我如何使用__sadd16函数编译代码C/C++代码?

    谢谢,顺祝商祺!

    弗洛林。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    I曾尝试在我的C++代码中引入此代码:"_sadd16 (arg1,arg2);",但未编译。 我在Build -> ARM编译器->处理器选项下的CCS项目属性中收到未定义__sadd16的错误

    “目标处理器版本(--silic_version-,-mv)”选项设置为什么?

    当我在CCS 7.2 .0.0.0013万 中为TDA3x中的Cortex M内核创建一个示例项目时,目标处理器版本被设置为4,用于ARM7处理器。  目标处理器版本设置为4时,TI v 17.6 0编译器无法识别 _sadd16内在过程;因为_sadd16内在过程对ARM7处理器无效。

    当目标处理器版本更改为7M4 (用于Cortex-M4处理器  )时,编译器会识别_sadd16内在过程,并生成SADD16指令。

    这看起来像是CCS 7.2 提供的TDA3x的设备XML文件中的一个错误。在 创建新项目时,将在编译器选项中为Cortex-M4处理器指定不正确的目标处理器版本。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chester Gillon 说:
    这看起来像是CCS 7.2 提供的TDA3x的设备XML文件中的一个错误指定 Cortex-M4处理器的错误目标处理器版本

    我同意。  我计划提交缺陷报告以解决此问题。  但是,我不熟悉CCS这一部分的缺陷归档的详细信息。  所以我正在学习如何做到这一点。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用user="George mock"] 我计划提交缺陷报告以解决此问题。  但是,我不熟悉CCS这一部分的缺陷归档的详细信息。  所以我正在学习如何做到这一点。[/QUOT]

    很抱歉耽误你的时间。  SDOWP系统未用于此问题。  我在 另一个系统中提交了TDA3S-TRMINC0.0322万。  我认为外部客户无法访问它。  但是,将客户线程与相关条目关联起来总是很好的,以备将来参考。

    谢谢,此致,

    -George