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--serial flash programming, while used the SCI2, how to boot CPU2?

Other Parts Discussed in Thread: TMS320F28377D

TMS320F28377D can use SCI boot. There are two SCI options, one is GPIO 84 and 85 as the option 1, the other is GPIO 28 and 29 as option 2. While option 1 can support CPU1 and CPU2, but option 2 only support CPU1. So if use the option 2 to boot the chip, how to boot CPU2?

  • For CPU2 SCI BOOT:-

    the GPIO for SCIA needs to be configured by CPU1 application and SCIA port is to be assigned to CPU2 before starting the CPU2 SCIBOOT.

    So as far as the CPU2 SCIBOOT is concerned it doesn't care which GPIO are used for RX/TX. The CPU1 application can configure them as it seems fit.

    Hope this helps.

    Best Regards

    Santosh Athuru

  • Hi Lee

    Another approach could also be to let CPU1 reset and boot CPU2.

    Something like this:

    uint16_t IpcReturnStatus;
    
    EALLOW;
    DevCfgRegs.CPU2RESCTL.all =  0xA5A50001;    //reset CPU2
    DELAY_US(10);
    DevCfgRegs.CPU2RESCTL.all =  0xA5A50000;    //Free CPU2, init IPC and enter bootwait..
    DELAY_US(1000);
    EDIS;
    
    IpcReturnStatus = IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    if (IpcReturnStatus != STATUS_PASS)
    {
        // FAIL, CPU2 not started
        ESTOP0;
    }
    

    Instead of boot from flash, you can also boot CPU2 from RAM with C1C2_BROM_BOOTMODE_BOOT_FROM_RAM. Then you could make a small RAM based program for CPU1 and CPU2 that could flash CPU1 and CPU2 flash memory, load the RAM praograms  for CPU1 and CPU2 via SCI on CPU1.

    Take a look at IPCBootCPU2() in F2837xD_Ipc_Driver_Util.c