The CortexProg, a Cortex-M Programmer

Alasdair Allan
3 min readJul 25, 2018


Right next to the pile of USB-to-serial cables sitting on my desk, I have another pile of microcontroller programmers. A tangle of wires and small boxes, the pile sits there, taunting me. Because, while I have just a single AVR programmer, I have multiple incompatible programmers for the Arm Cortex-M, a chip that is now rapidly replacing ageing 8-bit AVR and PIC microcontrollers pretty much everywhere.

But while all Arm Cortex-M chips share the same core, the Arm debugging standards only define how to read and write registers and memory. Nothing is said about how to go about programming the flash. That is why every manufacturer does it differently. Which is why, if you use Arm chips from a number of different manufacturers, you have a box of different programmers, just like me.

This is what Dmitry Grinberg wants to solve with the CortexProg, a universal programmer of the Arm Cortex-M.

The CortexProg. (📷: Dmitry Grinberg)

“CortexProg can read data from a micro-controller, write data into it, program flash, provide live tracing for printf-style debugging (ZeroWireTrace), and even allow complete GDB debugging. The PC-side tool uses the HID transport to not need any drivers on any of the supported OSs: Linux, Windows, MacOS”

The CortexProg, now raising on Kickstarter. (📹: Dmitry Grinberg)

Debugging and tracing should work on all Cortex-M-based devices, and the CortexProg currently supports flashing of a range of Cortex-M microprocessors from Nordic, Energy Micro, Cypress, Freescale, NXP, STMicro, and of course Microchip. Support for other processors can be added by writing an appropriate chip support script, as well adding functionality using ‘special scripts’ for tasks like unlocking chips.

The first working CortexProg, which you can build yourself. (📷: Dmitry Grinberg)

However, if you want to build your own CortexProg you can. Based around the standard V-USB setup, and the ubiquitous 8-bit Microchip ATtiny85 with just a few passives, the DIY version of the board will be slow, with typical upload speed of less than 800 bytes per second, far slower than the production version of the board.

The CortexProg is currently raising on Kickstarter, with just over a month to run before the end of the campaign. Backing the crowdfunding campaign at the $25 level will get you a CortexProg board, with shipping setting you back an extra $5 inside the United States, and $12 everywhere else. Grinberg is estimating that boards will start to ship in November this year.