Part Number:TMS320F28377S
刚刚接触CLA模块,跟着例程和相关资料试着跑了一下,但是在调试过程中遇到了一些问题,麻烦帮忙解决一下。
CLA模块的数据内存分配了RAMLS0和LS1,程序内存分配给了RAMLS2和LS3,如下所示
RAMLS2_LS3 : origin = 0x009000, length = 0x000FFF
Cla1Prog : LOAD = FLASHAB,
RUN = RAMLS2_LS3,
LOAD_START(_Cla1funcsLoadStart),
LOAD_SIZE(_Cla1funcsLoadSize),
RUN_START(_Cla1funcsRunStart),
PAGE = 0
CLADataLS0 : > RAMLS0, PAGE=1 //cla数据存储空间
CLADataLS1 : > RAMLS1, PAGE=1
Cla1ToCpuMsgRAM : > CLA1_MSGRAMLOW, PAGE = 1 //cla与cpu数据传递空间
CpuToCla1MsgRAM : > CLA1_MSGRAMHIGH, PAGE = 1
#ifdef CLA_C
// CLA C compiler sections
//
// Must be allocated to memory the CLA has write access to
//CLA存储临时数据
CLAscratch :
{ *.obj(CLAscratch)
. += CLA_SCRATCHPAD_SIZE;
*.obj(CLAscratch_end) } > RAMLS1, PAGE = 1
.scratchpad : > RAMLS1, PAGE = 1
.bss_cla : > RAMLS1, PAGE = 1
.const_cla : > RAMLS1, PAGE = 1
#endif //CLA_C
但在调试过程中,cla target connected-cpu运行/cpu-cla target connected均显示No source available for "0xa000",个人判断为cla程序寻址地址错误,0xa000为LS4的内存地址。
在cla_init.c中给CLA的程序空间赋值给定权限的部分配置如下,后续纠错过程中发现No source available for "0xa000"的错误会随着这个配置变化,假设我仅配置LS2它会报错No source available for "0x9800",不清楚是否有所关联。
MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1;//将存储器所有权分配给CLA
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 1;
MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 1;
jt w:
已经找到问题原因,这块的内存分配,_FLASH缺少定义所以没生效,但是例程里是哪里进行定义的并没有找到
#ifdef _FLASH // // Copy over code from FLASH to RAM // memcpy((uint32_t *)&Cla1funcsRunStart, (uint32_t *)&Cla1funcsLoadStart, (uint32_t)&Cla1funcsLoadSize);#endif //_FLASH