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.

[参考译文] TMS320F280039C:.cmd 文件中的#ifdef 指令

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1328993/tms320f280039c-ifdef-directive-in-cmd-file

器件型号:TMS320F280039C
主题中讨论的其他器件:C2000WARE

尊敬的 Champ:

我要求为我的客户提供服务。

在.c 和.h 文件中、用户可以使用#ifdef 在代码配置之间切换。  

怎么在.cmd 文件? 我按照方法 使用#if defined ()以 EABI 格式将内容定义到不同的段中,但这样做是不能正确地工作的(它应该把.const 分配到 FLASH_BANK0_SEC10中)。

专家是否会介绍 在.cmd 文件中定义#ifdef 指令的正确方法?

谢谢。此致、

约翰尼

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

    尊敬的 Johny:

    您应该能够根据_flash 变量将.const 段映射到 sec15或 sec10。 请在 c2000_compiler 标志中定义变量。 (--define _flash)。

    您也可以使用以下格式并尝试-  

    #ifdef _flash

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

    您好、Aswin、

    一开始,我以为它应该像我们想象的那样有效。 但事实并非如此。 (使用 CCS12.5)

    请定义 c2000_compiler 标志中的变量。 (--define _flash).

    你想在这里定义变量吗?  

    我尝试从预定义符号中删除_FLASH、应该 将.const 段映射到  sec10。 然而、在重建项目之后、在内存分配中、.const 段仍然被分配到 sec15中、如下所示。   

    此外,我也尝试了如下建议的格式,它也不起作用。  

    #ifdef _flash
    .const:> FLASH_BANK0_SEC15、ALIGN (8)
    #else
    .const:> FLASH_BANK0_SEC10、ALIGN (8)
    #endif

    您是否也可以使用 CCS12.5重复此操作? 然后,指出什么是缺失在这里或什么是正确的方式 ifdef 在 cmd 中?

    谢谢。此致、

    约翰尼  

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

    尊敬的 Johney:

    我在链接器 cmd 文件中使用了相同的更改-  

    #if defined (_flash)
    .const:> FLASH_BANK0_SEC15、ALIGN (8)
    #else
    .const:> FLASH_BANK0_SEC10、ALIGN (8)
    #endif

    请查看项目属性->c2000链接器选项。 如果_flash 宏在链接器标志中定义、它将采用 SEC15、否则采用 SEC10。

    请在这些方面进行更新、看看您是否仍然面临此问题。

    谢谢

    阿斯温

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

    您好、Aswin、

    感谢您指出这个地方。 当我 在 C2000链接器中定义该变量时(高级选项--命令文件预处理--预定义预处理器 MARCO_NAME_TO_VALUE),问题就解决了。

    还有一个问题是,是否有办法同时在同一位置为.c/.h 文件和.cmd 文件定义符号? 因为我们似乎要将  c/.h 文件或.cmd 文件中的符号分开。 对于 .c/.h 文件中定义的符号、 它在 C2000编译器中定义;对于.cmd 文件中定义的符号、它 在 C2000链接器中定义。

    客户询问是否有办法只在所有文件(.c/.h/链接器文件)的一个属性中定义符号? 我没有在属性中看到此类请求的位置、或者我们正是通过这种方式将这些已定义的变量从其定义的位置分离出来。 你愿意检查这个吗?   

    谢谢。此致、

    约翰尼

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

    您好、Johnny、

    可以使用的一种方法是更新示例 projectspec。  

    在 projectspec 中、您可以定义  在 C2000Ware_5_01_00_00\driverlib\f28003x\examples\adc\ccs 文件夹中的 example.projectspec 文件中指定的 compilerBuildOptions 和 linkerBuildOptions (我选择 ADC 作为参考)。

    您可以在此处添加定义。

    谢谢

    阿斯温