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.

[参考译文] 编译器/TMS320F28379D:使用#pragma DATA_SECTION =>不同的数组=>相同的全局共享 RAM

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/602469/compiler-tms320f28379d-using-pragma-data_section-different-arrays-same-global-shared-ram

器件型号:TMS320F28379D

工具/软件:TI C/C++编译器

大家好、

我想n´t、如果数组之和超过共享 RAM 的大小、是否可以使用"pragma DATA_SECTION "将不同的数组分配给同一共享 RAM。
例如、我有一个数组"uint16 myArray_0[100]"和"uint16 myArray_1[100]"、我希望这两个数组都分配给全局共享 RAM 0 -我能这么做吗

#pragma DATA_SECTION (myArray_0、"SHARERAMGS0"); 
#pragma DATA_SECTION (myArray_1、"SHARERAMGS0"); 

或者、我是否必须通过删除 SHARERAMGS0定义来编辑.cmd 文件并将 ist 替换为两个自定义 RAM 段(大小为 myArray_x)、这些边界在全局共享 RAM 0内?

´d 我不做

#pragma DATA_SECTION (myArray_0、"myArray_0_RAMSECTION"); 
#pragma DATA_SECTION (myArray_1、"myArray_1_RAMSECTION"); 

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

    实际上、将两个数组放入一个块不会出现问题。 链接器将执行其任务。 别忘了将此 pragma 插入其他内核的项目中、顺序相同。 也许您应该注意数据协调。
    我没有在 F28379D 上尝试过它、但在 Concerto (双核、Cortex M3和 C28)上、可以使用两个带有一个共享 RAM 的 pragma。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Justus、您好!

    以下是满足您要求的示例代码。 您应该将这些代码放入 c 源文件中。

    #pragma DATA_SECTION (myArray_0、"SHARERAMGS0");
    uint16 myArray_0[100];

    #pragma DATA_SECTION (myArray_1、"SHARERAMGS0");
    uint16 myArray_1[100];

    构建项目后、您可以在.map 文件中看到符号地址、并检查该地址是否为您的预期地址。

    此致、
    插孔