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.

[参考译文] TMS320F28388D:共享 CLA/CPU 变量的声明

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1496950/tms320f28388d-declaration-of-shared-cla-cpu-variables

器件型号:TMS320F28388D

工具/软件:

您好、

我的习惯是在.cla 文件中声明 Cla1ToCpuMsgRAM 中的变量、在.c 文件中声明 CpuToCla1MsgRAM 中的变量。 此类变量通过.h 文件连接、该文件包含在 DE .c 和.cla 文件中。 由于.h 文件、我希望它不会对在何处声明哪个变量产生任何区别。 我不知道,我不知道该怎么办。"

在这里,我有一组这样声明的变量(例如):

Fullscreen
1
2
#pragma DATA_SECTION(BuckVoltage,"Cla1ToCpuMsgRAM");
InfLib_Mesure_t BuckVoltage;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

变量在存储器中的位置是强制的、因此我认为.c 或.cla 文件中的声明没有任何区别。

如果我在.cla 文件中声明我的所有变量,我会收到以下错误消息:

Fullscreen
1
#10462-D: Symbol, "BuckVoltage", referenced in "./sources/regulation/regulation_cpu1.obj\", assumes that data is blocked but is accessing non-blocked data in \"./sources/regulation/regulation_cla2.obj". Runtime failures may result.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

根据 这个页面、我尝试在.c 文件中声明变量、以查看错误是否消失。

当我这样做,我得到另一个错误消息:

Fullscreen
1
#10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section "Cla1ToCpuMsgRAM" size 0x92 page 0. Available memory ranges:",
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

那么...发生了什么? 在.cla 文件中声明变量时、尽管使用 pragma、变量是否不在正确的位置? 在.c 文件中声明数据时所占用的内存是否比在.cla 文件中声明更多? 编译器在.cla 文件中是否未检测到隐藏问题? 其他一些问题?

我对这种差异感到十分困惑。

提前感谢您的帮助、

此致、

Adrien

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

    尊敬的 Adrien:

    该专家目前已离职、但在她返回后、她会尽快回复您。

    此致、

    Aishwarya

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

    尊敬的 Adrien:

    很抱歉我延迟了回复。 您无法在.cla 文件中声明共享变量、请参阅编译器手册中的以下注释:

    在 C 文件中声明后收到的错误消息与链接器中的分配设置有关。 此错误消息表示  Cla1ToCpuMsgRAM 中没有足够的空间用于您尝试放置的内容。 请记住、CPU 和 CLA 之间的消息 RAM 相对较小、您可以将此变量分配给共享 LSRAM。

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您的解释。 我漏掉了文档中提到必须在.c 文件中声明共享变量的部分。 以前、我在.cla 中具有 CLA 到 CPU 变量、在.c 中具有 CPU 到 CLA 变量

    我最近才发现可以使用 LSRAM 共享数据。 我必须在某个时候尝试它。

    感谢您的解释、

    此致、

    Adrien