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.

F28M35H52C: Booting C28 from flash after booting it from RAM

Part Number: F28M35H52C


Hello,
We have an M3 bootloader that is loading a C28 binary in shared ram. Once this binary is loaded in RAM, we boot the C28 from ram and it works fine.
This binary's purpose is to load the actual C28 firmware in flash using FlashAPI
Once the C28 main firmware is programmed to flash, the M3 bootloader jumps to the main application, and from there, we try to boot the C28 again, this time from flash. This step doesn't work.
Is there something that is preventing the C28 from booting twice in a row (from RAM then from flash)?
I can confirm that the C28 main firmware is properly programmed to flash because we can boot it from flash without any problem IF we haven't boot it from ram before in the same power cycle.

To sum-up the steps:

Start M3 bootloader -> OK

Load C28 binary to shared  ram -> OK

Give shared ram master access to C28 -> OK

Start C28 from shared  ram -> OK

Program C28 main firmware to flash using FlashAPI -> OK

Give shared ram master access back to M3 -> OK

M3 jump to main M3 firmware -> OK

Start C28 from flash -> FAIL

Any help would be greatly appreciated, thanks!

Ril

edit:

Right now, as a workaround, we reboot the device after upgrade so we don't have to boot the C28 twice in the same power cycle and it works fine. It would be neat if we could avoid the reboot though.

Thanks

  • Ril,

    Ril Dank said:

    To sum-up the steps:

    Start M3 bootloader -> OK

    Load C28 binary to shared  ram -> OK

    Give shared ram master access to C28 -> OK

    Start C28 from shared  ram -> OK

    Program C28 main firmware to flash using FlashAPI -> OK

    Give shared ram master access back to M3 -> OK

    M3 jump to main M3 firmware -> OK

    Start C28 from flash -> FAIL

    how is the M3 application asking C28 to start from flash towards the end of the above steps? If you are sending an IPC command to the C28 Boot ROM, you don;t have C28 boot ROM running at this instance right? Just before the shared RAM access is given back to M3, you should have M3 put the C28 in reset and release C28 reset so it is running C-Boot ROM and you can then sen the Boot to flash IPC command to C-Boot ROM from the M3 main firmware.

    Hope this helps.

    Best Regards

    Santosh Athuru

  • Hello Santosh,

    Thanks a lot for your answer, it solved my problem.

    I was putting the C28 in reset but I wasn't releasing it.

    Doing this worked for me:

    RAMMReqSharedMemAccess(C28_SECTORS_ACCESS_LIST, SX_M3MASTER);
    
    // Hold C28 in reset and then release it so it is ready to boot from flash
    SysCtlHoldSubSystemInReset(SYSCTL_CONTROL_SYSTEM_RES_CNF);
    SysCtlReleaseSubSystemFromReset(SYSCTL_CONTROL_SYSTEM_RES_CNF);

    Thanks again for your support.

    Ril