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.
我应用的是dsp f28035.我现在定义了变量CputoClaAAA、CputoClaBBB和VoltFilt
#pragma DATA_SECTION(CputoClaAAA,"CpuToCla1MsgRAM");
#pragma DATA_SECTION(CputoClaBBB,"CpuToCla1MsgRAM");
Uint16 CputoClaAAA,CputoClaBBB;
#pragma DATA_SECTION(VoltFilt, "Cla1ToCpuMsgRAM");
Uint16 VoltFilt;
在main中初始化
CputoClaBBB=1258;
CputoClaAAA=2536;
MMOVZ16 MR0,@_CputoClaAAA
MMOV16 @_CputoClaBBB,MR0
MNOP ;3 Wait till I8 to read result
MNOP ;4 Wait till I8 to read result
MNOP ;5 Wait till I8 to read result
MNOP ;6 Wait till I8 to read result
MNOP
问题:运行后CputoClaBBB=1258为何还是不能更新为CputoClaAAA的值2536呢,如何让_CputoClaBBB跟随_CputoClaAAA变化呢?
补充:类似的情况
问题:_VoltFilt的值能够跟随A4改变,而CputoClaBBB不能,就是因为_A4 和CputoClaBBB是同一区间,_A4 和_VoltFilt不在同一区间的缘故吗
在这定义
#pragma DATA_SECTION(A, "CpuToCla1MsgRAM");
#pragma DATA_SECTION(CputoClaBBB,"CpuToCla1MsgRAM");
而#pragma DATA_SECTION(VoltFilt, "Cla1ToCpuMsgRAM");
#if LOWPASS
float32 A [FILTER_LEN] = {625, 100, 200, 300, 2000};
#elif HIGHPASS
float32 A [FILTER_LEN] = {625, 100, 200, 300, 2000};//T{0.0625L, 0.25L, 0.375L, 0.25L, 0.0625L}
#endif
MMOV32 MR0,@_A4
MF32TOUI16 MR1,MR0
; MMOVZ16 MR0,@_CputoClaAAA
MMOV16 @_CputoClaBBB,MR1
MMOV16 @_VoltFilt, MR1
请求帮助!
我无法看到MR0的值,也不知道怎么看,你能否给指导下。但肯定是执行了这一步:MMOVZ16 MR0,@_CputoClaAAA,因为我可以将MR0中的值再接着能够赋值给_VoltFilt,但是不能赋值给MMOV16 @_CputoClaBBB,MR0。
表面的现象是因为_CputoClaBBB和_CputoClaAAA是都在CpuToCla1MsgRAM空间内:
#pragma DATA_SECTION(CputoClaAAA,"CpuToCla1MsgRAM");
#pragma DATA_SECTION(CputoClaBBB,"CpuToCla1MsgRAM");
Uint16 CputoClaAAA,CputoClaBBB;
而_VoltFilt在Cla1ToCpuMsgRAM空间内:
#pragma DATA_SECTION(VoltFilt, "Cla1ToCpuMsgRAM");
Uint16 VoltFilt;
首先谢谢您来给我解答这个问题,困扰我很久了,一直找不到答案。
那是不是意味着我以上的程序运行结果确实是正常的。
A4 和CputoClaBBB在CLA中只能作为源操作数,而_A4 和CputoClaBBB作为源操作数不能够在CLA内相互更新,cla之外的cpu空间可以,我这样理解可以吧,我仿真结果看,实际情况也是这样的。就是找不到支持的理论,所以在这想得到权威的确定。
有问题共同探讨吧,我的理解是:A4 和CputoClaBBB是存放在cpu-to-cla ram空间的,是由CPU赋值,然后传递给CLA。而_VoltFilt是存放在cla-to-cpu ram空间的,是由cla赋值传递给CPU的。也就是说cpu-to-cla ram空间的变量只能被CPU修改,不能被CLA修改,反之,cla-to-cpu ram空间的变量只能被CLA修改,不能被CPU修改。
那就听你的了。毕竟您是ti工程师,非常感激,这个问题我在线询问好长时间了,谢谢您的帮助。
A4 和CputoClaBBB存放在cpu-to-cla ram空间,在cpu直接赋值就行了,而转到CLA中再相互赋值显得有点多此一举,我为何在cla在调试中相互赋值,也是偶尔调试才发现的这个问题。所以一直比较困惑,找不到答案。和您之间的交流,让我确信,以后不这么干了,直接在cpu内赋值就行了。谢谢
我刚才在css中看到MR0的值了,验证了_CputoClaAAA能够赋值给MR0,而MR0不能赋值给_CputoClaBBB,那原因就按您的解释来了。“也就是说cpu-to-cla ram空间的变量只能被CPU修改,不能被CLA修改,反之,cla-to-cpu ram空间的变量只能被CLA修改,不能被CPU修改。”
谢谢!