Skip to content

Repository files navigation

Hardfault Diagnostics on ARM

Functionality Support:

  • Bare-Metal
  • FreeRTOS

Build & Run

make
make debug
make gdb
image

Sample Output:

Booting...
Build: [e1c08de:branch:memfault] - [ABD@DESKTOP-KQPPS1L] - Aug 24 2025 - 02:45:47
# [HardFault]

---Registers---
        r0: 0000006A        r1: 20001E3C        r2: 12345678
        r3: DEADBEEF        r4: 00000044        r5: 00000055
        r6: 00000066        r7: 20001DE8        r8: 00000088
        r9: 00000099       r10: 000000AA       r11: 000000BB
       r12: 080026E3        sp: 20001DC8        lr: 08002399
        pc: 080023C2      xPSR: 21000000
       psp: 00000000       msp: 20001C7C   primask: 00000001
   control: 00000000   basepri: 00000000 faultmask: 00000000

---Special Registers---
EXC_RETURN: FFFFFFF9
      ICSR: 00000803 (0000 0000 0000 0000 0000 1000 0000 0011)
      HFSR: 40000000 (0100 0000 0000 0000 0000 0000 0000 0000) // HFSR.FORCED: 1
      CFSR: 00008200 (0000 0000 0000 0000 1000 0010 0000 0000)
      BFAR: DEADBEEF

---Stack Dump---
0x20001DC0: ???????? ???????? 0000006A 20001E3C
0x20001DD0: 12345678 DEADBEEF 080026E3 08002399
0x20001DE0: 080023C2 21000000 00000080 0000006A
0x20001DF0: FFFFFFFF DEADBEEF 00000055 20001E00 
0x20001E00: 20001E38 0000002A 00000099 0000006A
0x20001E10: 20001E18 0800237B 20001E20 080019E9
0x20001E20: 20001E3C 00000001 00000008 00000000 
0x20001E30: 20001E38 08001C69 20000918 20001E7C
0x20001E40: 00000000 00000000 00000000 00000000
0x20001E50: 00000000 00000000 00000000 00000000 
0x20001E60: 00000000 00000000 00000000 00000000
0x20001E70: 00000000 00000000 00000000 006F6F66
0x20001E80: 00000000 00000000 00000000 00000000 
0x20001E90: 00000000 00000000 00000000 00000003
0x20001EA0: 00000001 0D000000 0000000D 00000010
0x20001EB0: 00000020 00000000 20001EC0 08001D01
0x20001EC0: 00000077 080006F1 00000011 00000022 
0x20001ED0: 00000033 00000044 00000055 00000066
0x20001EE0: 00000077 00000088 00000099 000000AA
0x20001EF0: 000000BB 000000CC 00000000 08003377 

---System Reset---

Using Memfault

make run MFLT=1
# or
make debug MFLT=1
make gdb

Sample Output:

Booting...
[INFO] MFLT: GNU Build ID: ca9b94f7deaaf23a42da024cdcdd8073fa47eaf4
[INFO] MFLT: S/N: QEMU9128222025
[INFO] MFLT: SW type: qemu-firmware
[INFO] MFLT: SW version: 1.0.0
[INFO] MFLT: HW version: dvt1
[INFO] MFLT: Memfault Initialized!
[INFO] MFLT: MC:SIkEgQlDT1JFAgYAA/wCFAABTAYAAWoGABk8HgAgeFY0Eu++rd5EBgABVQYAAWYGAAnoHQAgiAYAAZkGAAGqBgABuwYAHxOpAAjoHQAgPaI=:       
[INFO] MFLT: MC:wE0ACGaiAAgGAAkh6B0AIAgAAQwOAAEUBgApypuU996q8jpC2gJM3N2Ac/pH6vQKDgABBQYACzEuMC4wCw4AAQ0GABtxZW11LWZpcm13YXI=:       
[INFO] MFLT: MC:wJsBZQQOAAEEBgAJZHZ0MQcOAAEEBgABKAYAAQUOAAEECAAHlAAABg4AAQIKAAEBBgAJJO0A4BwQAAGCCgABQBAAB+++rd4IAAEBBgAJGO0=:       
[INFO] MFLT: MC:wOgBAOAMHgABAQYACQTgAOAQJgABAQYACQTtAOAIBgADAwgMAAEBBgAJ/O0A4AQOAAEBCAAH4QDgBA4AAQEIAAfiAOAEDgABAQgAB+MA4AQ=:       
[INFO] MFLT: MC:wLUCDgABAQgAB+QA4CBGAAEBBgAZ6B0AIBgBAADIHgAgagYAH/gdACDvvq3eAB4AIAAeACAIAAEqBgAJbB4AIGoGACkYHgAgH6IACCAeACA=:       
[INFO] MFLT: MC:wIIDEZQACDweACABBgABCA4AHzgeACCRlgAIEBIAIHweACB4AAVmb286AAEDBgABAQwABA0GAAEQBgABIA4AEcAeACAplwAIdwYACSUHAAg=:       
[INFO] MFLT: MC:gM8DEQYAASIGAAEzBgABRAYAAVUGAAFmBgABdwYAAYgGAAGZBgABqgYAAbsGAAHMDgAPp7UACERVTVAYAD8I:
[INFO] MFLT: MC:CAKnAgIDAQptcWVtdS1maXJtd2FyZQllMS4wLjAGZGR2dDELRsqblPfeqgSlARmUAAIaCACiZgMaCACiPQQYaQUB+0U=:
[INFO] MFLT: Coredump Storage Verification Passed
Build: [e1c08de:branch:memfault] - [ABD@DESKTOP-KQPPS1L] - Aug 24 2025 - 02:37:32

Files

References

Important ones are marked bold.

Reading

Fault Handling

ARM References

STM32F1xxxx

Debuggers

About

HardFault Diagnostics on Arm Cortex M3

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages