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.

TMS320F28377D: CLA内存问题

Part Number: TMS320F28377D


我在.cla进行电机控制电流环、位置环、矢量计算。编写完程序后,编译不报错。在线仿真后,发现cpu里程序正常运行,但是cla任务不执行,而且会使cpu和cla公用变量置0(cputocla,且在cpu里定义过这个值),给这个变量加上volatile,就能正确保持在cpu里的定义。

然后 我把.cla中程序注释掉一部分,整个系统就能正常运行了,cla也正常工作。我尝试过随意注释一部分程序,都可以(应该不是程序编写问题)。疑似内存管理的问题。

我查看内存占用 ,发现还有很大余量

RAMM0 : origin = 0x000122, length = 0x0002DE 
RAMM1 : origin = 0x000400, length = 0x000400 

RAMD0 : origin = 0x00C000, length = 0x000800
RAMD1 : origin = 0x00C800, length = 0x001800 

RAMLS0_1 : origin = 0x008000, length = 0x00400

//我按照例程令CLA_MATH_TABLES_IN_ROM=1了,且添加的是rom的cla库,单独运行一部分程序,clamath是正常的

#if !(CLA_MATH_TABLES_IN_ROM)
CLA1mathTables : >RAMLS4_5, PAGE = 1
#endif
Cla1Prog : > RAMLS0_1, PAGE = 0
#elif defined(_FLASH)
.TI.ramfunc : LOAD = FLASHD,
RUN = RAMGS0_1,
RUN_START(_RamfuncsRunStart),
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0

.text : > FLASHA, PAGE = 0
.cinit : > FLASHB, PAGE = 0

.pinit : > FLASHB, PAGE = 0
.switch : > FLASHB, PAGE = 0
.econst : > FLASHC, PAGE = 0

#if !(CLA_MATH_TABLES_IN_ROM)
//
//Load tables to Flash and copy over to RAM
//
CLA1mathTables : LOAD = FLASHL,
RUN = RAMLS4_5,
RUN_START(_CLA1mathTablesRunStart),
LOAD_START(_CLA1mathTablesLoadStart),
LOAD_SIZE(_CLA1mathTablesLoadSize),
PAGE = 1
#endif

Cla1Prog : LOAD = FLASHE,
RUN = RAMLS0_1,
RUN_START(_Cla1ProgRunStart),
LOAD_START(_Cla1ProgLoadStart),
LOAD_SIZE(_Cla1ProgLoadSize),
PAGE = 0

#else