Hard fault handler

This forum is dedicated to feedback, discussions about ongoing or future developments, ideas and suggestions regarding the ChibiOS projects are welcome. This forum is NOT for support.
dismirlian
Posts: 60
Joined: Fri Dec 20, 2013 3:59 pm
Location: Buenos Aires, Argentina
Has thanked: 1 time
Been thanked: 11 times

Hard fault handler

Postby dismirlian » Wed Oct 02, 2019 9:23 pm

Hi, I've contributed a generic fault handler mechanism, particularly for ARMv7m (Cortex M3/M4(F)/M7).

The fault handlers include:
- HardFault handler, which decodes the fault registers and generates a description string.
- _unhandled_exception handler, which decodes the active vector, so you can effectively see which interrupt was triggered.

The HardFault handler (here) does the following:
- Switches to a separate stack (in case of a corrupt SP).
- Decodes the hard fault registers (done in C).
- Calls an application-defined hook
- Creates an artificial stack frame for the debugger and causes a breakpoint, in order for GDB to show a meaningful stack unwind, so you can see the whereabouts of the instruction that caused the fault.
- If no debugger is attached, restores the separate stack and calls chSysHalt("hard fault")

hardfault.png



The _unhandled_exception handler:
- Decodes the active vector, so you can effectively see which interrupt was triggered.
- If no debugger is attached, calls chSysHalt("unhandled exception")

Also, I included a demo project (here). Any suggestions are welcome!

Cheers,
Diego.

Return to “Development and Feedback”

Who is online

Users browsing this forum: No registered users and 3 guests