I have a project in which I use a watchdog both in the bootloader and in the main code. Once I leave the bootloader, the watchdog doesn't cause the system to reset properly, but instead causes a hard lockup.
I believe the problem is that the backup watchdog doesn't do a hard reset, but instead perhaps jumps to a reset vector or something like that to do a 'warm reboot'.
Does anyone know the exact procedure that occurs? This way I can look in the memory and perhaps determine why I get a hard lock; it really seems as though it is jumping somewhere unexpected.
My bootloader code has the vector table at 0x0; the main code at 0x8000, and the interrupt vectors are copied by MQX into RAM @ 0x20000000. So my reset vector while in the bootloader is 0x4, and while in the main code is 0x20000004 (copied from 0x8004).