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:从 CLA 访问共享存储器时读取零

Guru**** 2587345 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1170633/tms320f28379d-reading-zero-when-accessing-shared-memory-from-cla

器件型号:TMS320F28379D

我看到了几个示例、似乎我正在做我应该做的事情、但尽管如此、我在 LS 存储器中看到的是零、其中包含由 CPU 写入的数据。  关键代码片段如下所示。  我不怀疑我错过了什么...

从 main.c 中删除

#pragma DATA_SECTION (src、"ClaData");//将 TX 数据映射到存储器
#pragma DATA_SECTION (dst、"ClaData")
#pragma DATA_SECTION (INDEX、"ClaData");

uint16_t 索引=0;
uint16_t src[16];
uint16_t dst[16];

MemCfg_setLSRAMMasterSel (MEMCFG_Sect_LS3、MEMCFG_LSRAMMASTER_CPU_CLA1);
MemCfg_setCLAMemType (MEMCFG_Sect_LS3、MEMCFG_CLA_MEM_DATA);

CLA_mapTaskVector (CLA1_base、CLA_MVECT_2、(uint16_t)(&Cla1Task2));

CLA_enableIACK (CLA1_base);
CLA_enableTasks (CLA1_base、CLA_TASKFLAG_ALL);

CLA_forceTasks (CLA1_base、CLA_TASKFLAG_2);

文件中的内容  

extern uint16_t 索引;
extern uint16_t src[16];
extern uint16_t dst[16];

_interrupt void Cla1Task2 (void)

GpioDataRegs.GPCTOGGLE.bit.GPIO95=1;

_mdebugstop();
dst[索引]=src[索引];
索引++;
if (index >= 16){
索引= 0;

链接器文件中的内容

ClaData:> RAMLS3,align (4)

在 CPU 端的内存浏览器中、我可以看到 LS3中的数据是正确的。  当单步执行任务2时、"index"为零、不会更改。  "src"似乎指向正确的地址、但读取的数据为零、应用程序的行为就像读取零一样。

对我可能遗漏的内容有什么建议?

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

    不确定发生了什么、但稍后再回到这个问题、它似乎现在正在工作。