HOS APLFW

HOS-V4A のリポジトリの中で APLFW というものを作成中だが、現在大改造をもくろんでいる。

ITRONというのはいわゆるスケジューラであって、OSと呼ぶにはいろいろと機能が不足している。もちろんスケジューリング問題自体、組み込みに置いて非常に重要な問題であって、それに特化したOSであるといえる。
一方で、近代的なOSと比べるといろいろと物足りないケースが出てくることもしばしばである。

今更、車輪の再発明をするつもりはあまり無いのだが、主に2つの機能を目的にITRONに皮をかぶせようとしている。

  1) 大雑把なコマンドラインベースのデバッグ環境
  2) 安全なタスク停止

  1)については今さら言うまでもない。組み込みに置いてはPCのようにデバッガでステップ実行できないケースが非常に多い。割り込みを受けて、制御タスクがぶん回っている状態でないと中身を覗く意味がないケースが多いからだ。
  UARTなどからやり取りをして、デバッグを進めている組み込み屋は実に多いはずだ。特にメモリだけはふんだんにあるケースも増えてきたので、 簡易シェルのような環境は便利だ。

問題は2)である。ITRONでは tar_tsk というAPIがあるが、安全に使うのは非常に難しい。というか緊急停止以外で使い込んでいる人は少数ではないかと思う。

なぜなら、停止させられるタスクからすれば突然止められてしまうわけで、その時に持っていたリソースを正確に返却するのは非常に難しいからである。

で、今回その辺に切り込んでみようと考えている。

要は、各オブジェクトをいきなり使うのではなく、まずオープンさせてからハンドル経由で使うようにする。ハンドルにはリスト構造を持たせてタスクにリンクさせていき、オープン中のオブジェクトがわかるようにする。

同一オブジェクトを複数のタスクから扱う場合ももちろんあるので、オブジェクト側にも参照カウンタを設けて、0になるまでは開放しないなどの仕組みが必要だ。

いろいろとメモリを食う機構になりそうだが、まあ近年メモリに余裕のあるシステムも増えてきたし(もっとも筆者が画像処理関係が多いので、画像用にでっかいメモリがついてることが多いだけなのですが)。

なかなかしっくりくる機構にならないので試行錯誤中ですが、組み込み特化で、少し遊べるものができればよいなと思っております。

コメント

タイトルとURLをコピーしました