On the SC589 if I run the ICE2000 debugger and purposely create a fault in CORE 0 like this:
int32_t* p=(int32_t*)0x7fffffff; *p=0;
the debugger catches the fault just fine and shows me the offending line. Great!
BUT when I perform the same fault on CORE 1, the debugger does NOT catch the fault - the core just hangs - and I have no indication what line caused the issue.
Question 1: How do I catch serious fault conditions like this by the ICE2000 and debugger for CORE 1/2?
Sometimes in my code running on CORE 1, there is a fault error (I think) that crashes the core. When I pause from the debugger, it does not show any code and just shows address 0x0 in the traceback (pictured below). I have no idea what the fault was nor where it came from. I have to POWER DOWN to reboot - pressing the reset does not clear this crash. I am using the Baremetal Framework (version 2.0.0) for the ADI SHARC Audio Module sample firmware.
Question 2: How can I capture all faults such as invalid memory accesses in my code? Is there a interrupt vector table that I need to populate with my own debug code so that when a fault condition happens, my code will be called and I can trace back to the offending C code?
[edited by: kev at 12:25 AM (GMT -4) on 29 Jun 2021]