avr-gcc8でのmeishiキーボード(Pro micro)への書き込み

秋葉原に最近できた 遊舎工房Meishi Keyboard というキーボードキットを買いました.

たのしく自作キーボードを入門するぞということでしたが,AVRマイコン向けのGCCのバージョンでハマったのでメモ.
先に要点を書いておくとこんな感じです.

問題点

avr-gcc8を用いた場合,avrdudeでバイナリをPro microへ書き込む際にエラーが発生する.

結論

binutils のバージョンを2.32に上げれば解決する.

環境

macOS Mojave 10.14.3

手元でやったこと

まず,Meishi keyboard 組み立て方ガイド - たのしい人生を参考にたのしく半田付けを行った.

その後,ファームウェアを書き込む環境を構築する際にGCCのバージョンを現行の最新であった8.2.0を用いたところ,まずmakeに失敗した.
この問題は,feature/meishiブランチをmasterにrebaseすることで簡単に解決した.

その後,`make meishi:default:avrdude` をやると,どうやら書き込みに失敗したらしい.上記の手順書には,gccの7系列を使うようあったため,失敗することは予期していたが,環境が新しくなることで勝手に改善されていることを期待したが,この記事を書いている時点ではギリギリ失敗している.

この問題について調べると,すでにissueがあった.
github.com

要約すると,gccのバージョンが上がった際に,セクションの指定の挙動がやや変わったことに由来するらしい.しかし,この問題はbinutils側ですでに対応されており,この記事が書かれる2日前にリリースされたbinutilsの2.32では解消されていることがわかった.
sourceware.org

したがって,バージョンを戻すのではなく上げることによって対処することができた.私の環境ではHomebrewを用いていたが,Formulaがまだ古かったため `brew edit` することで無理やり新しいバージョンを指定することとした.

その後,avr-gccを再インストールすることにより,セクションの指定に関する問題が解消することを確認した.キーを叩いて文字が出ると楽しい!

おわりに

osx-cross/homebrew-avr-avr-binutils の追従にともない,macOSではHomebrew経由でインストールされる gcc8系列で無事にPro microへ書き込むことができるようになると思うので,じきにこの問題は解決されると思います.

この記事はiMacに付いてきたキーボードで書かれました(爆)

謝辞

Meishi Keyboardキットの作者である id:Biacco42 さんと,Meishi Keyboardキットを格安で販売されてた遊舎工房の中の人に敬意と感謝をいたします.とても楽しい体験だったため,近いうちに本格的なキーボード制作に取り組みたいと思います.