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.

[参考译文] CCS 工程中的 MSP 编译器/解析器错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1006529/msp-compiler-parser-error-in-ccs-project

主题中讨论的其他器件:MSP430F5340

您好!

客户和 TI 可能会重现可能由内部(编译器、解析器)引起的错误消息。

目标 MCU 是 MSP430F5340。

客户无法继续其项目!

升级到最新的 MSP 编译器和 CCS 无法解决该问题。

我附加了一个.pp 文件的 zip 文件(“USCI_UART.pp”FIS,这似乎 是可疑的文件)。

如有需要、请直接与我联系、为您提供完整的项目!

此外,我还附加了“console.txt”,它是生成控制台的完整输出(错误位于第20行。)  e2e.ti.com/.../7888.console.txte2e.ti.com/.../preprocess_5F00_files.zip

 

(三

>>编译失败

subdir_rules.mk:58:目标'USCI_UART.obj'的配方失败

 

内部错误:C:\ti\ccsv7\tools\compiler\ti-cgt-msp430_20.2.5.LTS \bin\acpia430.exe 遇到分段错误

                 处理函数时(未知或文件范围)文件(未知)行0

 

这是由 TI EABI C/C++解析器中的缺陷导致的。

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

    将联系您以了解完整的项目。  也将在 SW 团队中循环以获得帮助。

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

    您好、DJ-NG、

    此问题与 USCI_A0_ISR 的 switch 语句中的"__evo_in_range"内在函数的使用有关。  这解决了问题。

    错误:  switch (__evo_in_range (UCA0IV、UCA0IFG))
    正确: switch (__ever_in_range (UCA0IV、UCTXIFG))

    此外、当使用 GNU 编译器时、客户需要对其所有 ISR 使用以下代码。  这样、它们就可以在 GNU 和 MSP430编译器之间来回切换。  这清除了大量警告。

    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=USCI_A0_Vector
    _interrupt void ADC_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((中断(USCI_A0_Vector))) ADC_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    接下来、在 I2C_Functions 中、有一个可能从 MSP430FR driverlib 中剩下的调用

    错误:param.i2cClk= CS_getSMCLK();

    正确:param.i2cClk= UCS_getSMCLK();

    接下来、在构建配置"Semi-auto_GNU"中、文件"lnk_msp430f320.cmd"必须设置为"从构建中排除"

    更正完成后、我成功构建了配置"Semi-auto_GNU"和"Semi-auto"、没有错误。

    但是、在"Semi-auto_GNU"构建中、会在与 driverlib 中包含的 hw_memmap.h 文件相关的所有 driverlib 函数上生成警告:

    警告:从不同大小的整数转换为指针[-Wint-指针转换]

    可以通过修改 file->driverlib/MSP430F5xx_6xx/inc/hw_memmap.h 来纠正这一问题、如下所示:

    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #define HWREG32 (x)                                                             \
           (*((volatile uint32_t *)((uint16_t) x)))
    #define HWREG16 (x)                                                            \
           (*(volatile uint16_t *)((uint16_t) x))
    #define HWREG8 (x)                                                            \
           (*(volatile uint8_t *)((uint16_t) x))

    #Elif defined (_GNU_)
    #include
    #define HWREG32 (x)                                                             \
           (*((volatile uint32_t *)(size_t) x))
    #define HWREG16 (x)                                                            \
           (*((volatile uint16_t *)(size_t) x))
    #define HWREG8 (x)                                                            \
           (*((volatile uint8_t *)(size_t) x))

    其他
    错误编译器不受支持!
    #endif

    由于 MSP430编译器和 GNU 之间的差异、仍会出现一些警告、但客户应能够解决这些问题。

    希望这对您有所帮助。

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

    您好 Dennis!

    很棒的发现,这肯定会有帮助的!

    BR DJ

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

    尊敬的 Dennis:

    向您发送了一封私人电子邮件、其中包含一些可能特定于项目设置的构建问题。