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.

Rebooting C6747

I'm trying to create a software sequence in my code that will deliberately reboot a C6747.  However, I have not had much luck getting it to work.

My "reboot" code (running under DSP/BIOS) does the following:

--Issues a "shut down" order to running tasks

--Sleeps 250 ms

--Calls HWI_disable( )

--Branches to 0x11700000

However, whenever I try executing this routine, the processor ends up sitting idle at PC = 0x117FB164;  it does not try to boot from SPI1 as it normally does (the boot pins are set up to drive it into this mode on cold-start).  I do not see any activity on the SPI1 bus at all, so it's as if it's trying to boot using some other mode.

Is there anything else I need to set / unset in order to get the core to reboot properly (slow down the clock, modify L1 / L2 RAM/cache config)?

Thanks...

 

  • This is not the intended use case for entering the ROM boot loader.  In general, the ROM boot loader should only be entered into by a hardware power-on reset (POR) or warm reset.  I can't specfically say why this is failing (most likely the actions the ROM takes assumes some default system states which are only guaranteed to be true out of reset), but since jumping back to the ROM like this is not the intended usage, I'm not surprised that it doesn't work.

    I suggest you look for a way to reliably initiate a warm reset (maybe a watchdog timer?).

    Regards, Daniel

  • Gary -- rather than sleeping for 250ms perhaps you could just configure the watchdog for 250ms.  At the end of the 250ms it will do a full reboot.  The nice thing about this method is that you will get a chip-level reset putting everything into a known good starting point.  If you simply branch to the entry point then you are beginning your execution with all the peripherals fully configured.

  •  

    Brad Griffis said:
    Gary -- rather than sleeping for 250ms perhaps you could just configure the watchdog for 250ms.

    Fyi, published:

    http://tiexpressdsp.com/index.php/C6747_Watchdog_example