モダンOSのお砂場(8) M5StickV、micropython

JosephHalfmoon
JosephHalfmoon

micropythonは言語処理系であってOSではないとお叱りを受けそうですが、このモダンOSのお砂場シリーズでは、Interface 2019年5月号の特集にならいmicropythonも「マイコンを制御するためのOS的な要素含む」としてモダンOSに含めております。ま、実際はM5Stack、M5Stick系の実装では、根本にFreeRTOSというモダンOSがいて、その上でmicropythonが走っているという階層構造ですが。

私なりに、マイコン向け「モダンOS」の最大の特長とでもいうべきものをあげさせていただくならば、

単刀直入にマイコン上の「アプリ開発」を始められ、短時間でプロトタイプが作れる。

ということだと思っています。老人の繰り言ですけれどもね、昔だったらね、使ったことないマイコンのソフト開発しようとしたら、まず開発ツールを使えるようにし(マニュアルだけでも数千ページ?)、ターゲットマイコンの初期化シーケンスを書いて(アセンブラでしたよ、普通。それにマイコンのマニュアルも分厚いんだこれが)、マイコンの備える各種のI/Oを制御するためのライブラリを取りそろえ(メーカのリファレンスがあってもカスタマイズ必須)、さらにRTOSなどをターゲットに移植し(RTOS屋さんに丸投げするか?)、てな塩梅でいつになったら本題のアプリにたどり着くことになるのやら、というペースでしたね。しかし、モダンOSは違います、

  1. お手軽開発ツール(インストール簡単あるいは不要、マニュアルなんか読む必要なし)
  2. お手軽にコーディング(必要なものは準備済、マニュアル読まなくてもなんとかなる)
  3. ボタンを押せば即書き込み、実行

そういう点からすると、マイコン用のmicropythonはその全てを兼ね備えた「モダンOS」と言えます。

今回取り上げさせていただくのは、M5StickV、注目のRISC-VとAIアクセラレータKPUを搭載したKendryte K210「マイコン」上のmicropythonです。AIのシリーズの方では、MaixPy IDEというPC上のかっこいいIDEを使っていきたいと思っているのですが(とりあえずMaixPy依存でAIするから…)、こちらでは、

渋くmicropythonのREPL

ベースで、直接micropythonに向き合っていきたい(とはいえMaix.pyが用意してくれている環境をありがたく使いますが)と思います。

さて、前置きが長くなりました。まず「気持ちよく」REPLを使うためにはターミナルエミュレータの設定を、しておかないとなりますまい。AIのシリーズの方ではターミナルソフトで接続できることだけ確認して、細かい設定を飛ばしました。私の場合、ターミナルソフトには、TeratermProを使わせていただいとります。マイコンボード毎に初期化ファイルを作っております。

ショートカットがいろいろ並んでいるなかにM5StickV見えますか。各ボード用のショートカットのコマンドラインのオプションで、

/F=”各ボード用iniファイルへのパス”

という形で、各ボード用のファイルに設定値を保存しています。M5StickV用の設定ですが、

  • COMポートの番号(システムによる)
  • 通信速度(115200)

は、まず最初に保存すべき設定です。これなしでは接続できない!

しかし、他にもやっておかないと不便な設定がありました。BSキーとDELキーの設定です。micropython+Maix.py環境では、pyeというエディタが使用できるようになっています。スクリプトファイルなどをスクリーンエディットできるようになっているのです。セルフな開発環境だな~。このpyeエディタは、矢印キーとコントロールキーで編集ができるタイプのエディタ(昔、IBM-PCの上のエディタを使っていたような人なら御馴染みな感じ)なのですが、

BackSpaceキーを押したときにDEL (0x7F)を送信してほしい

エディタのようです。ところが手元のTeratermProの初期設定では、BS(0x08)を送信していました。このため、そのままBSキーを押して一文字削除しようとすると、0x08=Ctrl-HでエディタコマンドFind/Replaceが動いてしまってビックリ、ということになってました(M5StickV Quick Startにも注意が書かれていました。)めんどいけれど、Teratermのキーマップファイルを編集して、コマンドラインに追加(/Kオプション)しなければいけないか、とも思いました。しかし、さすがにTeratermです。このBS問題は「よくあること」であるのでしょう、専用の設定が用意されています。

設定>キーボードの設定で、DELコード(0x7F)を送るキーを指定できるようになっていました。デフォルトではDeleteキーにチェック入っていましたが、Backspaceキーに入れ替えました。これでちゃんと、カーソルの左の1文字を削除するようになります。なお、DELコードのお役目をとかれたDeleteキーは、VT220のDELキーのシーケンスを送るようになっているのだと思います。それでpyeエディタ上は、カーソル上(棒カーソルなら右)の一文字を消すようになっていました。万事問題なし、と。

あと一つ、好みの問題ですが

その他の設定>表示

で ANSIカラーの15番(灰色)の輝度を落としました。私はR,G,Bとも100としました。これは、pyeエディタの下側に表示されるステータスラインの文字とバックグラウンドカラーのコントラストが悪くて読みづらいのでその対策です。これらの設定が書き込まれているINIファイルを呼び出せば、いつでも、M5StickVをUSBで接続し、micropythonのREPLやpyeエディタも楽ちんと。

あれれ、ターミナルの設定だけで今回は終わってしまった。続きはまた後で。

モダンOSのお砂場(7) FreeRTOS kernelとAmazon FreeRTOS に戻る

モダンOSのお砂場(8) micropython、ファイルにアクセス へ進む