向 CPU2闪存添加新代码时、CPU2 CLA 无法正常工作。 此外、CPU2的其他部分正常工作。 我们已将闪存 E、F、G、H、I 和 J 合并为闪存 E。 存储器配置窗口不显示任何存储器溢出。 只需删除添加的新代码、即可使 CPU2 CLA 正常工作。 还尝试在 CCS 8.0中的16.9.6至18.1.8以及 CCS 10.2.0中的20.2.4中编译代码。
CLA 存储器配置和初始化例程如下所示:
void CLA_configClaMemory (void) { extern uint32_t Cla1funcsRunStart、Cla1funcsLoadStart、Cla1funcsLoadSize; EALLOW; #ifdef _FLASH /*将代码从闪存复制到 RAM*/ memcpy (((uint32_t *)& Cla1funcsRunStart、(uint32_t *)& Cla1funcsLoadStart、(uint32_t)& Cla1funcsLoadSize); #endif /*_flash*/ /*初始化并等待 CLA1ToCPUMsgRAM*/ MemCfgRegs.MSGxINIT.bit.init_CLA1TOCPU = 1; while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU!= 1) { }; /*初始化并等待 CPUToCLA1MsgRAM*/ MemCfgRegs.MSGxINIT.bit.init_CPUTOCLA1 = 1; while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1!= 1) { }; /*选择 LSxRAM 作为 CLA 的编程空间首先配置 CLA *成为 LSX 的主设备,然后将空间设置为程序块*/ MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1; /*RAMLS4*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 1; MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1; /*RAMLS5*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1; /*接下来将 LSxRAM 配置为 CLA 的数据空间首先配置 CLA *作为 LSX 的主站,并将空格设置为数据块*/ MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1; /*RAMLS0*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0; MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1; /*RAMLS1*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0; MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1; /*RAMLS2*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0; MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1; /*RAMLS3*/ MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 0; EDIS; }
//CLA 初始化
void CLA_initCpu2Cla1 (void) { /*计算 MVECT 寄存器接受的1类 CLA 上的所有 CLA 任务矢量 *完整的16位任务地址,而不是旧的0类 CLA*/上使用的偏移量 EALLOW; Cla1Regs.MVECT1 =(uint16_t)(&Cla1Task1); Cla1Regs.MVECT2 =(uint16_t)(&Cla1Task2); Cla1Regs.MVECT3 =(uint16_t)(&Cla1Task3); Cla1Regs.MVECT4 =(uint16_t)(&Cla1Task4); Cla1Regs.MVECT5 =(uint16_t)(&Cla1Task5); Cla1Regs.MVECT6 =(uint16_t)(&Cla1Task6); Cla1Regs.MVECT7 =(uint16_t)(&Cla1Task7); Cla1Regs.MVECT8 =(uint16_t)(&Cla1Task8); /*启用 IACK 指令以在软件中启动 CLA 上的任务 *用于所有8个 CLA 任务。 此外、全局启用全部8个任务(或任务的子集) *通过写入 MIER 寄存器中各自的位来实现。*/ asm (" RPT #3 || NOP"); Cla1Regs.MCTL.bit.IACKE = 1; Cla1Regs.MIER all = 0x00FF; /*为所有8个任务配置任务结束中断的向量*/ /* PieVectTable.CLA1_1_INT =&CLA1_ISR; PieVectTable.CLA1_2_INT =&CLA1_2_ISR; PieVectTable.CLA1_3_INT =&CLA1_3_ISR; PieVectTable.CLA1_4_INT =&CLA1_4_ISR; PieVectTable.CLA1_5_INT =&CLA1_5_ISR; PieVectTable.CLA1_6_INT =&CLA1_6_ISR; PieVectTable.CLA1_7_INT =&CLA1_7_ISR; PieVectTable.CLA1_8_INT =&CLA1_8_ISR;* /*在组和子组级别启用 CLA 中断*/ PieCtrlRegs.PIEIER11.all = 0xFFFF; IER |=(M_INT11); EDIS; }
CPU2的工程.map 和.cmd 文件附加在 map_cmd_files.zip 文件中以供参考。
e2e.ti.com/.../map_5F00_cmd_5F00_files.zip
此致、
Amtech