LoginSignup
3
0

More than 5 years have passed since last update.

Espruino 起動手順

Last updated at Posted at 2018-04-05

Espruino 1v96 でのメモ。バージョンが変わると変更されうるので、注意。

一般的なボードにコードを保存する手順はこう。

  • スケッチに E.on("init", callback); を記述する、かつまたは onInit という関数を定義する。
  • SEND ボタンでデバイスに送信する
  • コンソールで save() を実行する

もちろんコンソールで直接関数を定義して save() までやってしまっても問題ない。デフォルトでは、SEND ボタンは reset() とスケッチの実行までをやってくれる。つまり中身を分解すると次のようになる。

  • reset() 実行
  • コードの定義
  • save() 実行

電源投入時は "init" イベントハンドラが順番に処理された後に、onInit が存在すれば、それも呼び出される。

BootCode

実は上記の仕組み以外にコードを流し込む setBootCode() という仕組みがある。電源投入時は次のようになる

  • boot code を上から実行
  • "init" イベントハンドラが順番に処理される
  • onInit が存在すれば、それも呼び出される。

設定の COMMUNICATIONS > Save on Send の項目で YES とすると、スケッチの内容が boot code に設定される。

Save on Send を YES にしたり NO にしたりして実行すると、boot code 領域と、通常の領域の両方にコードが設定される。起動時に両方とも実行されるので、大混乱することに注意。混乱したら、下の初期化手順で初期化しよう。

built-in init

ボードによって環境初期化時に実行されるコードが設定されるものもある(ex: jswrap_wio_lte_init)。これも含めると、こういう手順になっている。

  • 隠された init を上から実行
  • boot code を上から実行
  • "init" イベントハンドラが順番に処理される
  • onInit が存在すれば、それも呼び出される。

Wrap-up

以上をまとめて、結局 dump() で確認できる。

ボードの初期化はコンソールで次を実行するのがいいだろう。

E.setBootCode() // reset() does not erase boot-code
reset()
save()

Wio-LTE は上記の初期化でもコードが残るけれど、正常な動作(jswrap_wio_lte_init の効果)。

>dump()
pinMode(A2, "af_output", true);
pinMode(A3, "af_output", true);
digitalWrite(A15, 1);
pinMode(C8, "input_pullup");
digitalWrite(C9, 0);
digitalWrite(C10, 0);
digitalWrite(C11, 1);
digitalWrite(C12, 0);
digitalWrite(D2, 1);

おまけ

しかしまぁ Arduino と比べると消費電力は確実に大きいようで、Arduino で使っていたバッテリーでは Wio LTE の起動状態すら維持できないということが判明。なかなか強いバッテリを用意しないと駄目かも。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0