Other Parts Discussed in Thread: TMS320F280049C
器件型号: TMS320F280049C
主题中讨论的其他器件: CODECOMPOSER
工具/软件:
在 TMS320F280049C 上、我们的工程中有两个不同函数中的这段代码。 一个置于 GSRAM 中(让我们将其称为 funcRAM)、另一个置于闪存中 (funcFLASH)。 funcFlash 正确执行(PTR->x 已更新)、但另一个不执行。 以下是片段:
if (rxCAN.msg <= 8u){
ptr->x= rxcan.msg;
}其他{
PTR->x= 8u;
}
flag = true;
要添加更多详细信息:
代码使用 CPU 执行、而不是使用 CLA。
其中一个函数在接收到消息 A 时执行、另一个函数在接收到消息 B 时执行。 标志将触发一个答案、因此我们知道每一个都是在正确的时间执行的、并且代码通过了 ptr->x 被更新的行。 我想说的是、其余代码不应该是问题所在、这里已进行了本地化。
此外、ptr 指向位于 GSRAM(结构 0xd180 的地址)中的结构、但指针本身位于闪存(地址 0x912be)中。 funcRAM 从地址 0x12000 运行。 此函数还使用本身在 RAM(地址 0xc004)中的另一个指针访问 0xd180 结构的特定部分。 该其他不使用闪存指针的代码同时在 funcRAM 和 funcFLASH 上运行。
我们不再需要从 RAM 执行 funcRAM、因此我们有一种权变措施。 另一方面、我们需要了解为什么会发生这种情况、以发现任何可能由同一根本原因引起的错误。 过去、我们观察到某些代码上的行为也不同、具体取决于它是放在 LSRAM 还是 GSRAM 上(使用 CPU 执行、而不是 CLA)。 我不把细节放在首位;如果需要、我必须将其挖掘出来。 我想知道这种行为是相关的还是不同的。
顺便说一下、代码是使用 Simulink 生成的、不过我认为该代码与此相关。
这取自我们的 Makefile:
C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/cl2000 --define=model=FW_EPC_50A_NI --define=NUMST=2 --define=NCSTATES=0 --define=HAVESTDIO --define=model_has_drive_sfCNS=0 --define=classical_interface=0 ---define=ALLOCATIONS=0 preproc_dependency=@:%.obj=%.dep)-preproc_with_compile --large_memory_model -silicon_version=28 -define=large_model -i -i/include -i -for_speed=5 /ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/lib /ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include warn_sections --heap_size=1024 --reread_libs --rom_model --priority -mfw_project.map -o “FW_project.out"$“$(ordered_OBJS)
提前感谢您。





