Part Number:TMS320F28377D
我测试CLA任务时发现,当我调用含参数子函数时,CLA任务无法正常运行,总是有任务溢出,相关变量只更新一次。当把子函数改为内联函数时,可以正常运行。文档说CLA 编译器支持多个嵌套级别的函数调用。CLA 编译器还支持调用具有两个以上参数的函数。只是不支持递归调用,我这个子函数不是递归调用,为何不能正常运行。
桀灵玉:
难道是嵌套不能超过3级?哪个文档有说明么
,
Yale Li:
我已经咨询了相关工程师:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1246121/tms320f28377d-cla-task-call-function-cannot-working-properly
,
桀灵玉:
问题找到了,.scratchpad放入page1 数据段就正常了
,
Yale Li:
好的,感谢分享
,
?? ?:
output attributes/section page origin length input sections——– —- ———- ———- —————-ramfuncs 0 00008000 00000000 UNINITIALIZED
.const_cla * 0 00008800 00000000 UNINITIALIZED
.scratchpad * 0 00008a78 0000011e UNINITIALIZED 00008a78 0000010a cla_task.obj (.scratchpad:Cla1Prog:_epwm_DSP_GY_TX_CLASubsystem)
是这里的Page0要改为Page1吗?
,
Yale Li:
你看的这个是.map文件吧?是在.cmd文件中将.scratchpad放入page1。
,
Jim:
请问您知道这个问题吗
float a; float b; //… and so on
interrupt void Cla1Task1 (void)
{ //do stuff with a, b, … and so on }
interrupt void Cla1Task8 (void)
{ a=0; b=0; //… and so on }
类似如此,我在.cal文件开头对变量进行定义,然后我只在task1和task8之间进行调用(task8的计算需要改变task1之间的调用)
请问我仅这样定义行吗 还需要单独对每个变量在.c文件中进行类似#pragma DATA_SECTION(IA,"Cla1ToCpuMsgRAM");)这种定义吗
,
Yale Li:
我的同事会在你的原始问题中跟进:
https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/770897/tms320f28377d-cla