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.

TMS320F28388S: cpu1 and cm sync related to the custom bootloader of f28388s

Part Number: TMS320F28388S
Other Parts Discussed in Thread: C2000WARE

Tool/software:

I downloaded the application program to cpu1 and cm using custom bootloader on each of cpu1 and cm.
There is a problem when branching to the application according to the GUI command.

1. The application of cpu1 branches normally and the main statement is executed.(Check the output of Status = "INIT";)
2. It stops at IPC_SYNC in cm.

A. Application branch code of cpu1 bootloader
void JumpToApplication(void)
{
sendDebugMessage("Jump command received\r\n");
IPC_sendCommand(IPC_CPU1_L_CM_R, IPC_FLAG0, IPC_ADDR_CORRECTION_ENABLE,
CM_SECTOR_JUMP, 0, 0);
IPC_waitForAck(IPC_CPU1_L_CM_R, IPC_FLAG0); sendDebugMessage("Jumping to application");
Flash_disableECC(FlashECC_Base);
__asm(" LB #0x090000");

}

B. Application branch code of cm bootloader
void JumpToApplication(void)
{
Flash_disableECC(FlashECC_Base);
void (*app_entry)(void) = (void (*)(void))0x00210001;
app_entry();
}


C. application main function of cpu1
void main(void)
{
Interrupt_initModule();
Interrupt_initVectorTable();

SysCtl_setAuxClock(SYSCTL_AUXPLL_ENABLE | SYSCTL_AUXPLL_OSCSRC_XTAL |
SYSCTL_AUXPLL_IMULT(20) | SYSCTL_AUXPLL_FMULT_0 |
SYSCTL_AUXPLL_DIV_1);
setupDnetGPIOs();
board_init();
configureAndReleaseCMToWait();

DEVICE_DELAY_US(5000);
releaseCMToApplication();
IPC_clearFlagLtoR(IPC_CPU1_L_CM_R, IPC_FLAG_ALL);
IPC_sync(IPC_CPU1_L_CM_R, IPC_FLAG31);
syncopation
Status = "INIT";
}


D. cm’s application main function
int main(void)
{
CM_init();
IPC_registerInterrupt(IPC_CM_L_CPU1_R, IPC_INT0, IPC_ISR0);
Interrupt_registerHandler(INT_TIMER0, &cpuTimer0ISR);
IPC_clearFlagLtoR(IPC_CM_L_CPU1_R, IPC_FLAG_ALL);
IPC_sync(IPC_CM_L_CPU1_R, IPC_FLAG31);
GPIO_writePin(DEVICE_GPIO_PIN_94, 1);
}

=> For debugging in cm's application main function, use

GPIO_writePin(DEVICE_GPIO_PIN_94, 1);
IPC_sync(IPC_CM_L_CPU1_R, IPC_FLAG31);
If I place it like this, GPIO 94 pin will be output, but
IPC_sync(IPC_CM_L_CPU1_R, IPC_FLAG31);
GPIO_writePin(DEVICE_GPIO_PIN_94, 1);

If I place it like this, GPIO 94 pin will not be output.

Looking at this situation, it seems to be stopped at IPC_sync(IPC_CM_L_CPU1_R, IPC_FLAG31); Did I make a mistake in my IPC settings???