SNSへはこちら

OpenOCDでEFM32マイコンに書き込みできない時

Mac の OpenOCD 0.10.0 (現状安定版の最新バージョン)を使っていて、EFM32 マイコンを認識できるのに書き込みのときにコケる現象が見られましたので、その解決策を簡単にですが示しておきます。

現象

CMSIS-DAP と 最近買った EFM32 マイコン (型番は EFM32PG1B100F128GM32)の組み合わせで発生。OpenOCD サーバーは立つものの、書き込み時に Unknown MCU family 81 と言われて書き込みが始まらずに処理が終わってしまいます。

ちなみに実行コマンドは以下です。

$ openocd -f interface/cmsis-dap.cfg -f target/efm32.cfg -c "program hoge.elf;exit"

対処

どうも現バージョンでは一部の EFM32 しか対応していないようで、僕の買ったものはまんまと対応していないものでした(多分)。そこで現状 Mac に入っているものを削除し、リポジトリの HEAD のものを入れることで解決しました。

$ brew remove open-ocd
$ brew install open-ocd --HEAD

Mac でない方は、最新の開発版を入れて自力でビルドすることでできるかなぁと思います。
一応これで書き込みが出来ているので良かったという感じです。

愚痴

EFM32 は起動時に SWTCK (SWDIO に相当するピン) の電圧レベルで起動時のモードを選択しているらしく、リセットをかけるとその瞬間 SWD としての接続ができなくなります。ですので、それに対応していない CMSIS-DAP 等でデバッグするのは至難の業と言えそうです。どうやら J-Link は対応しているようですが、(きっと恐らく多分)IDE からでないと同様に接続が切れてしまうのでは?と思います。なんとかしたいですね。
OpenOCD 側でディレイを入れるコマンドが見つかればよいのですが、如何せん知識がないものでよくわかりません…