Hi,
Project. Life locator for rescue operations(breathing detection).
Device consists of 2 parts.
User interface part - tablet.
Closed box with radar, all electronics, batteries and my DSP.
Communication - Wi-Fi
I can't debug it. I can use external LEDs to indicate what happened only.
Problem. Update DSP firmware and run new version without system power reset.
Firmware is located in DSP flash.
So the first step is to send new version from tablet to DSP and
write it to DSP flash. It is OK.
The second step is more complicated. The idea is to use the same
boot loader that I use to load and run program. So I read boatload
from flash, pars it to RAM and readdress CPU to boot loader start address c_int00.
It doesn't work if structure of firmware is changed.
It works if I length of program blocks isn't changed.
Details.
DM648, using ROM to boot. Fast boot. DSP\BIOS.
I use C code to reload new firmware to flash and reboot without power restart.
It is OK if I use old firmware as new (the same firmware is reloaded).
But if firmware is changed process is stuck in the custom routine Init_my_device() of BIOS.
Steps.
1.Read and load new firmware to flash instead of running one.
2.Close all my threads (I have 3 now).
3.From Idle_loop routine read “my” boot loader from flash, pars it to RAM, clean all cashes and start it from its c_int00.
Boot loader reads new firmware from flash, parses it to DDR and runs it from its c_int00.
I guess memory distribution is changed but I didn't update some registers.
Can you help what I missed?
Tips.
This staff works with "reset" perfectly.
If I read “my” boot loader and … from one of my threads it is OK more often then failed.
If I read “my” boot loader and … from Idle_loop it is failed always.
Mark