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: 双核CPU的Flash升级程序中,相应的IPC标志一直是0,且DEBUG时也无法强行置1。请问这是为什么?我需要修改或检查哪里的配置?

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

CPU2升级时,上位机通过CAN发送CPU2升级指令给CPU1,并跳转到对应语句中。但相应的IPC标志一直是0,且DEBUG时也无法将其强行置1,导致无法执行行bootloader升级程序。

程序如下:

//总线上有升级命令,且解密成功
DrvCan.CANMessageGet(CANA_BASE, 8, &sCanMsgobject,true);

if((sCanMsgobject.ui32Flags & MSG_OBJ_NENLOATA) == MSG_OBJ_NEW_DATA
&& (sCanMsgObject.ui32Flags & MSG_OBJ REMOTE_FRAME) == 0)
{
if(sCanMsgObject.ui32MsgID.ebit.SA==0x04&&sCanMsgObject.ui32MsgID.ebit.PF==0x08&&sCanMsgObject.ui32MsgID.ebit.P==0x01)
 {
  if(unFlagFlashUpdatest.bit.bupdatecmd == o)
  {
   unFlagFlashUpdateSt.bit.bUpdatecmd = 1;
   iUpdatecnt = 420;
   iCPU = sCanMsgObject.ui32MsgID.ebit.PSID;//判断要升级的CPU
  }
 }
}

if(iCPU == 1)
{
sApp2Boot.uiApp2Bootword=0x5551;
sApp2Boot.unCanBootFlag.bit.bCanBootstart=1;
DINT;

//在线升级
for(iupdatecnt = 500;iupdatecnt<5000;iupdatecnt++);
asm(MOVL XAR7,#0x80002");
asm("LB *XAR7");     //jump to boot1

 if(iCPU == 2)
{
IpcRegs.IPCSET.all |=0x00000002;//此处IPC不置位
for(iupdatecnt = 500;iupdatecnt<5000;iupdatecnt++);
asm(MOVL XAR7,#0x80002");
asm("LB *XAR7"); //jump to boot2
}