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.

[参考译文] MSP430FR5994:MSP430 GCC 编译器生成的工程构建错误

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1496345/msp430fr5994-project-build-error-with-msp430-gcc-compiler

器件型号:MSP430FR5994

工具/软件:

我想为工程使用 C++17、因此在 CCS Theia 中添加了 MSP430-gcc 编译器。 我使用带有默认编译器(TI v21.6.1.LTS)的"msp430fr599x_1.c Blink LED"示例创建了一个新工程、并构建了没有任何错误的工程。

但是、当我将编译器更改为 GNU v9.3.1.11 (来自 Mitto System Limited)时、我遇到了编译错误。 有人能帮助我了解这些链接器错误吗? 我使用 CCS Theia v 20.1.1

[2]构建目标:"msp430fr599x_1.c.out "
[3]调用: GNU 链接器
[4]"C:/ti/msp430-gcc/bin/msp430-elf-gcc-9.3.1.exe "-mhwmult=f5series -og -g -gdwarf-3 -wall -mcode-region=none -mlarge -wl 、-Map、"msp430fr599x_1.map"-wl、--gc-sections -l"C:/ti/ccs2011/ccs/ccs_base/msp430/include_gcc -mmcu-region=none -mlarge-wl-wll、-msp430fr99599x.lr、-map"-msp430fr599x.stron-cl -------- fr995.link.clcx.1.
[5] makefile:138:目标'msp430fr599x_1.c.out 的配方失败
[6] c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe:../lnk_msp430fr5994.cmd:59:语法错误
[7] collect2.exe:错误: LD 返回1个退出状态
[8] gmake[1]:***[msp430fr599x_1.c.out ]错误1
[9] makefile:134:目标"全部"的配方失败
[10]gmake:***[全部]错误2.

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

    在[您的工程中]的 lnk_msp430fr5994.cmd 第59行中、您看到了什么?

    在我的(CCS v12.6)第59行中、

    Fullscreen
    1
    TINYRAM : origin = 0xA, length = 0x16
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我在这里没有看到任何明显的语法错误、但链接器可能是 finicky。

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

    至少在 MSP430的 Linux 版本中、GCC 使用后缀为".ld"的链接器脚本。 它们与.cmd 版本不同。

    Fullscreen
    1
    2
    3
    MEMORY {
    TINYRAM : ORIGIN = 0x000A, LENGTH = 0x0016 /* END=0x001F, size 22 */
    BSL : ORIGIN = 0x1000, LENGTH = 0x0800 /* END=0x17FF, size 2048 */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ld 的手册页没有说明大小写敏感性:

    "  原点是的起始地址的数字表达式
    存储器区域。  该表达式必须计算为常量、但不能计算为常量
    涉及任何符号。  ‘‘origin’(原始)可以缩写为‘org’(原始)
    或‘o’(但不‘、例如‘ORG’)。"

    编辑链接器脚本以减小这些关键字的大小写会导致语法错误。 因此、故障是不使用 GCC 特定的链接器脚本。

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

    您好 Bruce、感谢您的答复。 在 Mine (CCS v20.1.1)的第59行中也显示相同:

    Fullscreen
    1
    TINYRAM : origin = 0xA, length = 0x16
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    我使用 GNU v9.3.1.11、使用 CCS v12.7.0创建了一个空工程。 它会生成 David 提到的特定于 GCC 的链接器脚本(".ld")、而不是默认的".cmd"文件、并且编译时不会出错。

    Theia 会出现问题。 在 Theia 中、我只能根据提供的示例创建新工程、这些示例使用默认 TI 编译器进行设置。 我无法直接将编译器更改为 GCC。 工程是使用".cmd"文件创建的、当之后切换到 GCC 编译器时、会遇到前面提到的构建错误。

    当我使用".ld"链接器脚本从 CCS v12.7.0导入工程到 Theia 时、该工程将无法识别、也无法正常工作。 是否有办法使用 CCS Theia 中的 GCC 编译器通过 MSP430FR5994创建空工程?

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

    尊敬的 Hassan:

    感谢您的反馈。 我认为问题位于:"在 CCS V20中更改工程编译器时、 不会生成相应的 cmd 文件"。 我将向 CCS 编译器团队报告、以查看任何建议。

    ===============================

    更新了: 请参阅下面的主题、它考虑在未来的版本中重新添加此功能。

    https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1494802/tmdscncd28p55x-can-t-create-example-project 

    ===============================

    顺便说一下、如果您手动将.ID 从 CCS 复制到 CCS Theia、它是否正常工作?

    B.R.

    Sal

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

    尊敬的 Sal:

    感谢您的答复。

    您在链接中提到的线程讨论的是一些示例工程未创建或连接问题。 "你是不是也在逗我?"

    是的、当我 从 CCS 中将 CCS Theia 中的 lnk_msp430fr5994.cmd 手动替换为 msp430fr5994.ld 时。 编译正常。 不再有链接器问题。

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

    尊敬的 Hassan:

    抱歉、链接错误、这是正确的链接:https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1475504/codecomposer-can-t-create-empty-projects-with-ccs-20-0-2-5/5717740#5717740 

    我主要想更新 CCS 团队考虑重新添加功能(单独创建新工程)。

    还要将线程转发给 CCS 编译器团队以了解。

    B.R.

    Sal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想更新一下、CCS 团队考虑重新添加该功能(单独创建新项目)。

    是的、这是我们计划在未来的 CCS 版本中解决的一个已知问题。 当前解决方法是从命令行创建一个解决方法:

    https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs/ccs_faqs.html#how-do-i-create-a-new-project-from-scratch

    谢谢

    Ki