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.

[参考译文] MSPM0G3519:GHS 编译器的费用初始化问题。

Guru**** 2893300 points

Other Parts Discussed in Thread: MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1642551/mspm0g3519-fee-initialization-issue-with-ghs-compiler

器件型号: MSPM0G3519

问题描述:

同时使用 TI 最新的 MCAL 软件包执行 Fee_Init ()。 以下是观察结果。

  • FAE 模块调用 FLS_blankVerifyFlashWord()、如下所示
    • image.png
    • 在 funcRun () 的执行过程中,会观察到 OS 异常被报告。
  • 根本原因分析:

    FLS 用户指南提到了包含链接器命令文件(CLANG 编译器)、如下所示

    • image.png
  • 当 Clang 编译器用于构建应用程序时、我们尚未观察到费用初始化问题、但在使用 GHS 编译器时、会观察到该问题。

    GHS 编译器的链接器脚本:

    • image.png
    • 生成的.map
      • image.png

是否使用 TI 的 GHS 编译器验证了 MCAL 以进行费用初始化? 和

您能否与 GHS 编译器共享用于费用初始化的链接器命令文件?

测试环境:

  • 目标:TI (MSPM0G3519)
  • 编译器: GHS MULTI (202414)
  • MCAL:MSPM0-MCAL 00_09.00.00

如果需要任何信息、请告知我。

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

    您好、

    请将以下代码添加到建议的文件中、如下所示:

    在 GHS 的链接器命令文件中、添加一个段  

        .eraseLoadSram align(16) : {
            __ghsbegin_eraseLoadSram = .;
            *(.eraseLoadSram)
            . = ALIGN(16);
            __ghsend_eraseLoadSram = .;
        } > FLASH

    在 FLS_AC.h 中、添加/选中该部分

    #elif  defined(__ghs__) || defined(GHS)
    /* GHS compiler: Use #pragma ghs section for section placement */
    #pragma ghs section text=".eraseLoadSram"
    void Fls_executeCommand(void);
    #pragma ghs section text=default

    在 fls_ac.c 中、添加/选中该部分

    #if defined(__ghs__) || defined(GHS)
    /* GHS compiler: Use #pragma ghs section to place function in .eraseLoadSram */
    #pragma ghs section text=".eraseLoadSram"
    #endif

    在 fls_ctrl.c 中、添加/选中该部分  

    #elif  defined(__ghs__) || defined(GHS)
    /* GHS compiler: Use linker-defined symbols for section info */
    /* These symbols should be defined in the linker script */
    extern uint32 __ghsbegin_eraseLoadSram[];
    extern uint32 __ghsend_eraseLoadSram[];
    #define eraseLoadFlashStart __ghsbegin_eraseLoadSram
    #define eraseLoadFlashSize ((uint32)((uint8*)__ghsend_eraseLoadSram - (uint8*)__ghsbegin_eraseLoadSram))

    这将确保 FLS_ExecuteCommand () API 从闪存正确复制到 SRAM 并从 SRAM 执行。

    谢谢、

    Sreekar

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

    通过在构建环境中进行以下更改来实现预期的功能。 另外两项更改会被选中、并且已经是 MCAL 软件包的一部分。

    *在 GHS 的链接器命令文件 — GHS 链接器文件更新和  

    * 在 fls_ac.c 中,添加 — MCAL 软件包已更新