I have a Xilinx board (Zynq Ultrascale+) and I have an application that runs on one A53 processor and two R5f processors. A53 processor and one of the R5f processors have FreeRTOS while the last R5f is standalone. While the application runs normally for some time, suddenly the A53 hangs. What can i do in order to debug this situation, to catch the error condition?
The first thing to do is determine what it is doing when it hangs. It will be processing something - maybe in an assert(), exception handler, uncleared interrupt, or other erroneous condition. What is executing if you pause the processor in a debugger?
Even with high optimisation you will be able to see roughly what the code is doing when it stops - especially if its in an exception handler. If it is just stuck in a loop somewhere then looking at the assembly code, or the address of the instruction being executed compared to the symbol table, will tell you a lot.
It will also tell you a lot if reducing the optimization level fixes the issue.