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.

[FAQ] [参考译文] [FAQ] MCU-PLUS-SDK-AM263X:[FAQ]如何在 MCU_PLUS_SDK 或 MCAL 中编译汇编文件的不同扩展名?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1227669/faq-mcu-plus-sdk-am263x-faq-how-to-compile-different-extensions-of-assembly-files-in-mcu_plus_sdk-or-mcal

器件型号:MCU-PLUS-SDK-AM263X

如何在 SDK 示例中集成.asm 文件?

当被导入到 CCS 时、如何在 MCAL 示例中集成.s 和.asm 文件?

如何解决  CCS 汇编文件中的非法指令错误?

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

    此常见问题解答介绍了如何在单个项目中编译不同的汇编文件扩展名。 即使您提供了正确的汇编语法、也会生成"指定的非法助记符"和"非法指令"等编译器错误。 这是因为项目中缺少编译器标志。 这个 FAQ 中也讨论了添加这些标志的步骤。

    MCU_PLUS_SDK 对汇编文件使用.S 文件扩展名、而 MCAL 对汇编文件使用.asm 文件扩展名。

    以下是这些扩展名之间的区别:

    非常重要
    • Tiarmclang 将调用集成的 GNU 语法 Arm 汇编器、将扩展名为.s 的文件解释为 GNU 语法 Arm 汇编源。
    • 这在所有 SDK 示例中自动处理、并且无需通过 SDK 库更改编译器设置即可编译.s 文件。
    • 若要通过 MCAL 库在 CCS 中编译.s 文件、请参阅下一节。
    十分重要
    • Tiarmclang 将扩展名为.S 的文件解释为需要预处理的 GNU 语法 Arm 汇编源、首先调用预处理器、然后调用集成的 GNUSynax Arm 汇编器。
    • 这在所有 SDK 示例中自动处理、并且无需通过 SDK 库更改编译器设置即可编译.s 文件。
    • 若要在 MCAL 中编译.S 文件、请参阅下一节。
    .asm
    • 扩展名为.asm 的文件通常是使用旧版 TI 语法 Arm 汇编语言编写的汇编源文件、可由独立的旧版 TI 语法 Arm 汇编器处理。
    • 若要在 CCS 中使用.asm 文件编译 MCAL 库、我们需要在项目 Assembler 设置中添加-x ti-asm。 这使您能够在项目中编译任何.asm 应用程序文件。
    • 若要在 SDK 中编译.asm 文件、请参阅下一节。

    开发流程的编译、汇编和链接部分将如下所示:


    通过 CCS 中的 MCU_PLUS_SDK 库编译.asm 文件:

    • 将.asm 文件添加到 CCS 项目中。
    • 当直接编译该项目时、即使语法正确、也会生成"非法指令"等错误。  
    • 右键点击.asm 文件→转到 Properties→Arm Compiler→Miscellaneous。
    • 现在编辑 "其他汇编源特定标志"部分、并将标志"-x ti-asm"添加到其中。 下图中显示了这种情况。

    • 然后右键点击该工程→转到 Properties→Arm Compiler→Advanced options→Miscellaneous。
    • 并编辑 "其他汇编源特定标志"部分、并将标志"-x none"添加到其中。 下图中显示了这种情况。

    这应该会编译基于 SDK 的工程的代码而不会出现错误。

    通过 CCS 中的 MCAL 库编译.s 和.S 文件:

    • 将 MCAL 工程导入到 CCS 中时、需要将"-x ti-asm"标志添加到整个工程中以使用.asm 文件。 按照以下步骤调用 TI 语法
      来自 tiarmclang 的 ARM 汇编器:
    • 右键点击工程→转到 Properties→Arm Compiler→Advanced options→Miscellaneous。  
    • 现在编辑 "其他汇编源特定标志"部分、并将标志"-x ti-asm"添加到其中。 下图中显示了这种情况。

    • 将.s 或.S 文件添加到 MCAL 的 CCS 项目中。
    • 直接编译该工程时、即使语法正确、也会生成"指定的非法助记符"等错误。  
    • 右键点击.asm 文件→转到 Properties→Arm Compiler→Miscellaneous。
    • 现在编辑 "其他汇编源特定标志"部分、并将标志"-x none"添加到其中。 下图中显示了这种情况。

    这应该会编译基于 MCAL 的项目而不会出现错误。

    通过命令行编译汇编文件:

    使用命令行通过 tiarmclang 编译和链接文件时、指定了源文件/汇编文件(.c、.cpp、.s、.S、.asm)。 然后指定将转换这些文件的目标文件。 同一命令行中提供了编译器选项/标志和链接器选项、用于链接这些指定的文件。

    语法示例如下所示:

     

    在此命令中声明.asm 文件时、"-x ti-asm"位于文件前面、"-x none"标志位于所有.asm 文件之后。 编译端的示例语法如下所示:

    此处、"-x ti-asm"选项表示 ti-ASM-SOURCE1.asm 文件由 TI-SYNTAX ARM 汇编器处理、后续的"-x none"选项将输入文件类型重置为默认状态、这样 tiarmclang 编译器就知道将 c-Source2.c 输入文件作为 C 文件处理。

    更多有关汇编文件的其他编译器选项的信息、请参阅第 2.4.3节  :在 TI_Arm_Clang_Compiler_Tools_User_Guide 中的"tiarmclang"中调用 TI-Syntax ARM 汇编器