Hello folks,
I am working on a system (TMS320C6713 based custom board, programming in C++ using Code Composer Studio 3.0, NOT using DSP/BIOS), with two applications each with a separate boot loader located at two distinct locations on Program Flash. On startup, I want my system to boot using the first application and monitor UART for commands, If a special command is received, switch to the second application.
Now the problem is that my system is inconsistent, sometimes it successfully switches to the second application, sometimes its not. Sometimes it hangs and sometimes first application restarts instead of starting the second application.
In my opinion, the problem is because of the fact that i don't reset the processor state. The processor while executing First application when encounters a specific command from UART, It simply copies the first 1K Code of the second application to RAM at address 0x0000000 and branches to address _c_int00. Since the processors is not reset, some of the registers are not in default state, so the system responses inconsistently.
Question 1:
Is there any thing wrong with what I think is the real problem? If I am right about the problem, then what is the best way to do a software reset of DSP since I want to avoid toggling the RESET pin in hardware. (I searched the internet and didn't find anything related to my problem).
Question 2:
Is there any better way of doing this same thing? If yes then please explain.
NOTE :
1. My both applications work fine if there is no switching involve. The problems start when we switch the applications.
2. I am not using DSP/BIOS.
3. All my development is using C++ on Code composer Studio 3.0 on Custom board based on TMS320C6713 DSP.
If you have any other question, plz do ask.!!!
I am running a little short of deadline, So Guys plz help me ASAP !!!
Regards
Adnan