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.
工具/软件:
您好、
我的习惯是在.cla 文件中声明 Cla1ToCpuMsgRAM 中的变量、在.c 文件中声明 CpuToCla1MsgRAM 中的变量。 此类变量通过.h 文件连接、该文件包含在 DE .c 和.cla 文件中。 由于.h 文件、我希望它不会对在何处声明哪个变量产生任何区别。 我不知道,我不知道该怎么办。"
在这里,我有一组这样声明的变量(例如):
#pragma DATA_SECTION(BuckVoltage,"Cla1ToCpuMsgRAM"); InfLib_Mesure_t BuckVoltage;
变量在存储器中的位置是强制的、因此我认为.c 或.cla 文件中的声明没有任何区别。
如果我在.cla 文件中声明我的所有变量,我会收到以下错误消息:
#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.
根据 这个页面、我尝试在.c 文件中声明变量、以查看错误是否消失。
当我这样做,我得到另一个错误消息:
#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:",
那么...发生了什么? 在.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