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:链接器命令文件预处理

Guru**** 2783285 points

Other Parts Discussed in Thread: MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1605988/mspm0g3519-linker-command-file-preprocessing

器件型号: MSPM0G3519

大家好、

我正在使用 mspm0g3519 控制器、我要构建两个具有不同加载地址的不同文件。 为此、我已在.cmd 文件中完成了更改。 使用#ifdef-#els-#endif、我将选择加载地址。 在.cmd 文件中使用宏在 Makefile 中设置。 但该选择不起作用、因为两个文件加载地址保持不变。 是否有任何其他方法可以在链接器文件中实现此条件代码选择。 因为这里的标准条件编译器 ( c ) 不能使用。

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

    你好 Mehul,谢谢你的问题! 您能否将.cmd 的快照发送到您要设置的位置?

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

    #ifdef __APP_MODE_BOOTLOADER__
      #define FLASH_APP_OFFSET   0x00014900    // Application starts after bootloader
      #define FLASH_APP_LEN      0x00020000    // 128 KiB for application
    #else
      #define FLASH_APP_OFFSET   0x00000000    // Standalone - starts at flash base
      #define FLASH_APP_LEN      0x00080000    // 512 KiB (full flash available)
    #endif

    10.4.3.命令文件预处理选项—TI Arm Clang 编译器工具用户指南 这是我从 TI 网站在线获得的内容。 请帮助我了解我可以在我的案例中使用的这一点的任何内容?

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

    嗨 Mehul、 是的、您可以 #ifdef  #else 在链接器脚本中使用和条件指令来构建具有不同加载地址的不同文件、但它需要在编译过程中将运行 C 预处理器 (CPP) 作为单独的步骤。    MSPM0 支持 CCS 的一种更简单的方法是使用单独的构建配置(例如,“APP_MODE_Bootloader",“,"NON_APP_MODE_Bootloader"、"NON_APP_MODE_Bootloader")“)。“。 每个配置都可以设置为使用已定义加载地址的不同、完整的链接器脚本文件。

    有很多教程介绍了如何正确执行第一个选项、但您基本上要使用上面提到的指令创建链接器脚本模板、然后需要在 makefile 中添加一个步骤来运行 C 预处理器并通过命令行标志定义正确的宏。 最后、您需要在最终链接命令中使用生成的链接器脚本。

    希望这对您有所帮助!

    -布赖恩