I am Aravind, working on TMS320C6454 processor with NDK. I am facing a strange issue. Before I explain the problem, let me explain the software architecture.
As you can see from the above flow chart after power ON following things will happen.
(1) Software upgrade code runs and waits for 3 seconds to see if any flash upgrade code is coming from the UART.
(2) If software upgrade command has come from UART, then processor directly starts copying received bytes from UART to flash.
(3) If software upgrade command is false, then processors loads the program from flash memory to RAM. And starts execution.
We are using NDK in our 6454 processor. As I know, NDK boots first and then it jumps to main(). I think, booting NDK approximately takes 3 to 4 seconds.
It typically takes 6 seconds after power ON to get first message from UART.
Now, coming to real question/problem.
Whenever I am running the code for long time say 3 to 4 days, I am observing that processor is getting restarted. For debugging purpose I am time stamping UART to see what is the duration in which restart is happening.
Initially I thought that in our application code somewhere code is ending up with while (1) loop and watch dog timer is giving reset to processor. But I came to know that my assumption is wrong. Because if watch dog timer gives the reset then to get first UART message, it requires 6 seconds, but i am seeing that UART message is coming very next second.
I am suspecting that some where in the code some exception or some address malfunction is happening and NDK is taking the program counter back to main().
Is there any thing in NDK which can handle such situations?? Like exception handling? Or at-least in processor?
This problem is not easily repetitive, I mean every time when I long run the code this problem is not occurring. But, once in a while out of 3-4 processors one processor is behaving like this.
Kindly help me,
Thanks in advance,
Aravind D Chakravarti
Accord Software and Systems,
Domlur, Bangalore - 570021