Demystifying Common Microcontroller Debug Protocols
This talk delves into common microcontroller debugging protocols like JTAG and SWD. Starting from the physical signals, it explains how these protocols work, covering common mechanisms for managing embedded processors and interacting with various microcontrollers. The presentation explores the meaning of debugging embedded software, building a list of requirements for a comfortable debugging environment, and referencing existing custom debug approaches. Examples range from FPGA cores to tiny 8-bit microcontrollers. Common abstractions like ARM's ADI and RISC-V DMI are also covered, bridging the gap between protocols and core control. Finally, it explains common tasks like flash programming, watchpoints, and single-stepping.