A project log for 4chord MIDI

4chord MIDI - the USB MIDI keyboard to play every major hit pop song with four little buttons.

sven-gregoriSven Gregori 10/15/2017 at 14:460 Comments

When I put together the firmware roadmap, it became clear to me that having an easy and convenient way to update the board with any future versions will be one of the most important features. With such a feature, I don't have to worry too much about missing features and can go ahead and offer 4chord MIDI to the world. Sure, there's the ISP connector, so updating the firmware has always been possible, but like I wrote in the previous log, I want that everyone can fully enjoy 4chord MIDI, regardless of their programming or electronics background.

Well, today I finalized the first proof of concept implementation of a bootloader that will be able to do just that: updating the firmware.

Thanks to the ATmega328's built-in bootloader support, it was surprisingly easy (almost disappointing) to have separated application and bootloader code. But of course, the main focus was the self programming and transferring the firmware data, so good to not have to worry about the linker along the way.

Like I said, this is a first proof of concept, but it has full support to

Here's a little video showing the firmware upgrade in action:

Pressing the "Select" menu button while powering up the board will enter the bootloader mode. It has a simple UART interface to reset / handoff to application, but pressing the "I" chord and "IV" chord button at the same time will also reset the board.

Next step is to fully integrate it into the Makefile and push some code to the Github repo.
Coming soon. Development branch for bootloader is now here: