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.
Hi TI Experts,
I have a CLA1 related question. Here is some conditions:
1. CLA1 has no problem read/write LS1 data memory with previous PCB with sampled prototype TMX320F28377D. (It was a TMX...)
2. The newer PCB (some changes were made, such as from EMIF1 to EMIF2...) has production TMS320F28377D. CLA1 interrupt is executed, no problem toggling the GPIO in CLA task. No Memory access Access Violation Flag is set. But CLA1 reads from LS1 and writes to LS1 are always '0's.
System clock is 200MHz
Examples:
Linker:
RAMLS1 : origin = 0x008800, length = 0x000800 /*CLA Data*/
/*CLA1 and CPU1 shared Data memory*/
Cla1Cpu1ShareLs1 : > RAMLS1, PAGE=1
Memory assigned:
ClaCpldTst .usect "Cla1Cpu1ShareLs1", 2,1,1
Initializing:
MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;//CLA Data memory
Please help,
Thanks,
Lily
Hi Edward,
The initialization is completed (EALLOW is set). I have verified MES_LS1 register after executing the code.
void CLA_configClaMemory(void)
{
extern uint32_t Cla1ProgRunStart, Cla1ProgLoadStart, Cla1ProgLoadSize;
extern uint32_t Cla1mathTablesRunStart, Cla1mathTablesLoadStart, Cla1mathTablesLoadSize;
EALLOW;
#ifdef _FLASH
// Copy over code from FLASH to RAM
memcpy((uint32_t *)&Cla1ProgRunStart, (uint32_t *)&Cla1ProgLoadStart,
(uint32_t)&Cla1ProgLoadSize);
memcpy((uint32_t *)&Cla1mathTablesRunStart, (uint32_t *)&Cla1mathTablesLoadStart,
(uint32_t )&Cla1mathTablesLoadSize);
#endif //_FLASH
// Initialize and wait for CLA1ToCPUMsgRAM
MemCfgRegs.MSGxINIT.bit.INIT_CLA1TOCPU = 1;
while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU != 1){};
// Initialize and wait for CPUToCLA1MsgRAM
MemCfgRegs.MSGxINIT.bit.INIT_CPUTOCLA1 = 1;
while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1 != 1){};
// Select LS5RAM to be the programming space for the CLA
// First configure the CLA to be the master for LS5 and then
// set the space to be a program block
MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;//CLA Program memory
//Next configure LS0RAM as data spaces for the CLA
// First configure the CLA to be the master for LS0 and then
// set the spaces to be code blocks
// MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;
// MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;
//Next configure LS1RAM as data spaces for the CLA
// First configure the CLA to be the master for LS1 and then
// set the spaces to be data blocks
MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;//CLA Data memory
EDIS;
}
Thanks,
Lily.
Hi Lily,
Have you checked if this issue exist on another part as well ?
Vivek Singh
Hi Lily,
This look very strange. Can you change the cmd file to use the RAM which is used for execution right now, for data read/write and see if that works? Basically want to know if issue is only with read/write for all LSx RAM and execution is fine.
Vivek Singh