マイコンの開発のフレームワークの検討
LPC1763の開発フレームワークについて調査した結果
調査動機
ライントレースカーの開発に対して、
- n秒間ブザーを鳴らす
- n秒進んだ後にm秒バック
などを実装していると状態変数がどんどん増えてきてソースコードの見通しが悪くなってきたため。
もっと全体を見通しよく開発できる環境を作りたかった。
見つけた候補たち
1.組み込みRUST
RUSTはC、C++の置き換えを狙った、低レベル部分の制御が行える高級言語。
言語仕様自体は新しいようで、C++などと比べてもリスト型の操作などはしやすそう。
ただし、マイコンに実装した例があまりなく、使うとなると人柱の覚悟いりそう。
レジスタのメモリマップについても、メーカーの提供するsvdファイルから変換できるらしいが、トラブルある模様。
https://qiita.com/tatsuya6502/items/7d8aaf3792bdb5b66f93
2.FreeRTOS
端的に言うと、関数をスレッドとして並列処理することがで着るので、通常のように大きな無限ループを回し続けて状態を管理するのでなく、
細かな無限ループを作って情報を共有できるイメージ。
例えば5秒間ブザーを鳴らしながら走行するとき、
通常ではブザー鳴動開始時刻と現在時刻を比較して状態を管理する必要があるが、
スレッドとしておけば5秒間ならす、と処理を書くだけですむ。
実行の流れが複雑になってデバッグは大変になるのかな・・・?不明
https://www.aps-web.jp/academy/rtos/ex2/
3.mbed
IoT用OS。マイコンをレジスタをたたくことなく、Arduinoのように機能設定のメソッドを呼び出すことで使える。
このmbedの機能の一つとしてRTOSの機能がある。
公式のボードはLPC1769だが、LPC1763にもちょこちょこいじれば使えそう。
以前はLPCXpressoで扱うときはWEB版でエクスポートしたプロジェクトを読み込まないとmbed用のローカル環境を作れず面倒だったりしたけど、今はどうなんだろう。
MCUXpressoになって変わったりしたのかな。
http://erias00.blogspot.com/2016/04/mbedlpc.html
候補
使えそうなのは、FreeRTOSかmbedあたり。
MCUXpressoで扱いやすい方を使うのが良さそう。