Ever wanted to know how the magic spell you always used to program that mystery ELF file onto your embedded target works? I did so in February 2019. This is the story of probe-rs, your magic spellbook to talk to embedded targets.
Close to a decade now, I have been working with embedded systems. While complaining about subpar tooling was always an option, stepping up and make better tooling somehow seemed impossible. One year ago, having no prior knowledge of this matter, I started to look into how debug probes work, how the debug interface of ARM cores works and how prior tooling, such as OpenOCD, pyOCD and Segger, approaches this.
One year later, we have a working library to interact with ARM and RISC-V targets, as well as a cargo plugin to program the target of your choice. Of course we are not done yet. There is a plethora of embedded targets, bugs arise everyday and there is way more awesome functionality and tooling, such as ITM, ETM and custom target hooks (e.g. chip unlock), w