How to Debug HardFaults on ARM Cortex-M MCUs

preview_player
Показать описание
About the recorded webinar:

No matter your use case or how sophisticated your hardware is, faults happen on embedded devices all the time for a variety of reasons. Maybe it’s something easy like a reproducible NULL pointer dereference you hit during development or maybe it’s something more subtle like memory corruption or divide by zero faults that only exhibits themselves in zero-g, high temperature, weak magnetic field, or noisy RF environments!

In this recorded webinar, Chris shared his most efficient and effective tips for debugging and resolving issues quickly on ARM Cortex-M MCUs. He presents some real-world examples that he's faced over the years that will help with any MCU your device is built on.

You'll learn:

- How to recover the stack trace leading up to a fault
- MCU registers to examine when root causing a fault
- How to quickly pinpoint the source of memory - corruption bugs
- How to leverage GDB to speed up root cause analysis
- How to automate coredump collection, offloading, and processing

About the speaker:

Chris Coleman is CTO and Co-Founder of Memfault. Prior to founding Memfault, Chris was an embedded software engineer at Pebble and Fitbit where he led efforts across the firmware stack and developed a reputation for tracking down and fixing challenging firmware bugs. That coupled with his passion for using tooling to efficiently deliver high-quality hardware products drove him to start Memfault. Chris graduated with a BSc in Electrical Engineering from Brown University.

0:00 - 3:45 Introduction & Agenda
3:46 - 17:58 HardFault Overview
17:59 - 19:30 Manual Debug
19:31 - 28:19 Scripting the Analysis
28:20 - 31:43 Debugging with Memfault
31:44 - 38:24 Faults at Scale
38:25 - 57:57 Q&A from live audience
Рекомендации по теме
Комментарии
Автор

Comment #0: that how it looks to have a black belt in debugging.

NKernytskyy
Автор

Wonderful tutorial! It did help me solve real world problem today!!

As a side note sometimes processor jump to illegal address because lr in stack got destroyed first (say buffer overflow). It gets trickier to unwind stack when this happens. In this case, compare data contents and the address processor jumps to (e.g. check if same value also appears in other buffer) may help identify what happen.

robertolin
Автор

where is gdbserver can be downloaded?
gdb is included with gcc but there is no gdbserver included.
So how did you connect to the remote target

GoForwardPs
Автор

Thanks for the video, it was so informative.

germanvelardez