自作デバイスでBLEを使用するためのモジュールとして、秋月電子でBL652というモジュールを購入してみた。入手しやすいという点だけではなく、開発環境の導入が必要なく手軽に使えるだろうという理由で選択したのだが、結果的にはファームウェアを消去してしまい、書き直すのにずいぶん苦労してしまったという話。

結論としてはST-LinkとOpenOCDで容易に書き直すことができたが、だいぶ試行錯誤した。

ファームウェアのアップデート失敗まで

購入したのは秋月電子のBL652ブレークアウトボードキット。商品ページからサンプルコードをダウンロードし、説明書にしたがってボードに書き込んで動作させた。ここまでは問題なし。

次に、Laird社が公開しているサンプルコードを書き込んでみようとしたら、エラーが出た。どうやらファームウェアのバージョンと一致していないといけないらしい。ここで言うファームウェアとは、ユーザーが作成して書き込むものではなく、BL652にあらかじめ書き込まれているものである。ブートローダーのようなものだろう。

ボードに書かれていたファームウェアはかなり古いものだった。ファームウェアのアップデート手段は当然用意されている。しかし、誤ってファームウェアを消してしまうと、ファームウェアを書き直すための通信すらできなくなってしまうことが予想されるので、できればやりたくない。古いバージョン用のサンプルコードも探してみたが、ボードに書かれていたバージョンに対応するものは見つけることができなかった。

やむを得ず、ファームウェアのアップデートを試みることにした。慎重に手順を確認しながら進めていき、フラッシュの消去までは完了。しかしその後の書込みのところで、突然エラーが出て止まってしまった。一番駄目なタイミングである。

案の定、どうやらブランク状態になってしまったようで、何も反応がなくなってしまった。コマンドには応答しないし、ファームウェアのアップデートソフトも最初からエラーが出てまったく書き込めなくなってしまった。

続く