{
  "url": "https://pretalx.c3voc.de/camp2023/talk/BQF8TR/",
  "id": 57321,
  "guid": "4a4f8363-865f-52b7-b236-3b9b73aa2ad7",
  "date": "2023-08-18T21:00:00+02:00",
  "start": "21:00",
  "logo": null,
  "duration": "00:45",
  "room": "Milliways",
  "slug": "camp2023-57321-debugging_microcontrollers",
  "title": "Debugging Microcontrollers",
  "subtitle": "",
  "track": "Milliways",
  "type": "Talk",
  "language": "en",
  "abstract": "Debugging and Profiling ARM Cortex-M microcontrollers with GDB and Python.",
  "description": "This talk gives you an overview of debugging ARM Cortex-M microcontrollers with a focus on the *practical* configuration and usage of the relevant tools.\r\nIn particular, I will present:\r\n\r\n- Debug interfaces ([SWD](https://developer.arm.com/documentation/ihi0031/a/The-Serial-Wire-Debug-Port--SW-DP-)) and the associated debug probes ([J-Link](https://www.segger.com/products/debug-probes/j-link/), [STLink](https://www.st.com/en/development-tools/stlink-v3minie.html)) and libraries ([JLinkGDBServer](https://wiki.segger.com/J-Link_GDB_Server), [OpenOCD](https://openocd.org)).\r\n- How to install and configure [arm-none-eabi-gdb(-py3)](https://developer.arm.com/Tools%20and%20Software/GNU%20Toolchain) for debugging your ELF.\r\n- Commonly used [GDB commands and scripts](https://sourceware.org/gdb/onlinedocs/gdb/index.html).\r\n- Advanced [GDB scripting via its Python API](https://sourceware.org/gdb/onlinedocs/gdb/Python.html).\r\n- Inspecting [peripheral state](https://github.com/pengi/arm_gdb) with\u00a0[CMSIS-SVD files](https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html) and custom visualizations.\r\n- Dynamic call stack tracing and graphing.\r\n- Coredumping for post-mortem debugging via [CrashDebug](https://github.com/adamgreen/CrashDebug).\r\n- [Remote GDB scripting](https://github.com/cs01/pygdbmi) via the [Machine Interface](https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html).\r\n- [ITM profiling](https://developer.arm.com/documentation/ddi0403/d/Appendices/Debug-ITM-and-DWT-Packet-Protocol?lang=en) over SWO pin using [Orbuculum](https://orbcode.org/orbuculum/).\r\n- Thread/IRQ/Workqueue scheduling visualization and latency analysis using [perfetto](https://perfetto.dev).\r\n- High-bandwidth [ETM tracing](https://developer.arm.com/documentation/ihi0014/) over TRACE pins: [J-Trace](https://www.segger.com/products/debug-probes/j-trace/) and [ORBtrace mini](https://orbcode.org/orbtrace-mini/).\r\n- Interesting related projects and possible future work.\r\n\r\nThis talk is meant to introduce you to what is possible with embedded debug tools in practice, rather than to give you a comprehensive lecture.",
  "recording_license": "",
  "do_not_record": false,
  "persons": [
    {
      "guid": "40f24408-1387-54b0-99f0-54f616e4ada9",
      "id": 4307,
      "code": "APEKHY",
      "public_name": "Niklas Hauser",
      "avatar": null,
      "biography": "I'm an [embedded software and tooling specialist](https://salkinium.com) with a lot of experience in AVR and ARM Cortex-M devices and their related libraries. I love all kinds of engineering and technology, especially aviation, railways and robotics.",
      "answers": []
    }
  ],
  "links": [],
  "attachments": [],
  "room_id": "345ca97a-7eb6-459b-bc53-bc2a8bd5c3f1",
  "origin": "pretalx.c3voc.de"
}