日々記録

情報系や工作系知識のアウトプット

マイコンの開発のフレームワークの検討

LPC1763の開発フレームワークについて調査した結果

調査動機

ライントレースカーの開発に対して、

  •  n秒間ブザーを鳴らす
  • n秒進んだ後にm秒バック

などを実装していると状態変数がどんどん増えてきてソースコードの見通しが悪くなってきたため。

もっと全体を見通しよく開発できる環境を作りたかった。

 

見つけた候補たち

1.組み込みRUST

RUSTはC、C++の置き換えを狙った、低レベル部分の制御が行える高級言語

言語仕様自体は新しいようで、C++などと比べてもリスト型の操作などはしやすそう。

ただし、マイコンに実装した例があまりなく、使うとなると人柱の覚悟いりそう。

レジスタのメモリマップについても、メーカーの提供するsvdファイルから変換できるらしいが、トラブルある模様。

https://qiita.com/tatsuya6502/items/7d8aaf3792bdb5b66f93

 

2.FreeRTOS

リアルタイムOS

端的に言うと、関数をスレッドとして並列処理することがで着るので、通常のように大きな無限ループを回し続けて状態を管理するのでなく、

細かな無限ループを作って情報を共有できるイメージ。

例えば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で扱いやすい方を使うのが良さそう。