Espruino を Raytac MDBT42Q 搭載ボードへ移植する


Espruino という JavaScript で開発可能な Web IDE を備えた IoT 開発環境があります。
すべてが対応しているわけではないのですが、Web Bluetooth による Google Chrome から無線経由の書き込みが可能です。

Espruino Shop には、対応している公式開発ボードがいろいろ売っています。
Puck.js など Raytac MDBT42Q という BLE 対応モジュールを搭載したボードは、すべて無線で書き込みができます。

Espruino のドキュメントを見ていると、MDBT42Q のブレイクアウトボードにも対応しているし、これは Puck.js など Espruino 純正のボードじゃなくても移植できそうと思い、少しいじってみたら簡単に移植できたのでここで紹介します。

今回は、LINE Things development board に Espruino を移植してみたいと思います。
Espruino 2V03 ぐらいのバージョンをもとに書いているので、これ以降のバージョンでは勝手が異なるかもしれません。

必要なもの

  • JLink (JTAG デバッガ)
  • nrfjprog コマンド
  • ARM 向けの GCC (gcc-arm-none-eabi)
  • Raytac MDBT42Q を搭載したボード (ここでは LINE Things development board を利用)

Espruino のボード定義を追加

Espruino の GitHub リポジトリの中の /boards というフォルダの下に、ボードごとの定義ファイルが配置されています。
このフォルダの下に、新しいボード定義を追加します。

例えば、LINE Things development board の定義ファイル のように定義を書いて、適当な名前で保存します。
ここでは、LINETHINGS.py としました。この名前がビルド時に必要です。

重要なのはピンのマッピングなどで、board["_css"] などピンの配置の定義などは省略しても問題ないと思います。
(実際どこで使われるのか不明)

詳しい定義は、README_BuildProcess.md を見ると良いでしょう。

ビルド & 書き込み

README_Building.mdNRF_Bootloader.md をちゃんと読むのが良いですが、とりあえず以下のようなコマンドでビルドします。

$ BOARD=LINETHINGS RELEASE=1 make flash

LINETHINGS の部分は、ボード定義フォルダに追加したファイル名を指定してください。
make flash で、JLink が繋がれていれば自動的に bootloader が書き込まれます。

Espruino IDE を開くと、"-DBLUETOOTH_NAME_PREFIX で指定した名前 + ランダムな文字列" でアドバタイジングしているデバイスが検出できるはずです。

あとは、Puck.js など Espruino 公式対応ボードと同様に使えます。すごい!
良いと思ったら、公式ショップから Espruino のオフィシャルボードも買ってあげてください。