#組み込みOSについて
組み込み用のOSについてはいろいろあると思います。
- iTRON系
- VxWORKS
- ThreadX(グレープシステム)
- DSP/BIOS(Ti)
- 他
ですが、私はほぼ、iTRON系しか使用した事がありません。
DSPを使用する際にTiのDSP/BIOSを使用しましたが、結局ラッパー関数でiTRON系に近づけて設計を行いました。
iTRONだとスレッドでは無く、タスクという概念でマルチタスクを実現します。
私見ですが、組み込みにおけるスレッドとタスクの概念の違いはまた別の記事で紹介したいと思います。
#タスクの分け方
人それぞれによって様々なタスク構成を取りますが、私が愕然としたのは実在モノを中心にタスク訳をしている人です。 ものによっては実在したモノ(部材)でタスク化するものもありますが、もう少し抽象下すべきものでは無いかと私は考えます。
例えば、 一般的な紙幣再起別機の場合、
構成としては取り込み部部、紙幣データを読み込む識別部(制御部とは別にCPU有り)、金庫部(収納部)とします。上位機器とのインターフェースはシリアル通信とします。
- 全体制御を行う MAINタスク
※ 全体制御とは機構制御を行うものとは違います。 - 受け取り部の制御を行う ACCEPTORタスク
- 受け取り部から紙幣をスキャンしながらに読み込む BILLタスク
- 紙幣識別を行う BVタスク
- 収納動作を行う STAKERタスク
- センサの状態をMAINタスクに通知する SENSタスク
※ このタスクからMAINタスク通知するセンサ状態は通信に載せるセンサ状態または機械の状態を示す為に使用する。 機構制御にはタイマ割り込みで更新された変数を使用する。 - 通信インターフェースのLINEタスク
機構制御はタイマ割り込みで行う
これは重要な事ですが、機構制御はタイマ割り込みで行うという事です。タスク内でSENSタスクからMAINタスクに通知されたセンサ変化状態をACCEPTOTRタスクやBILLタスクで行うとタイムクリティカルな機構制御は破綻や自分の思っている動作とは違ってきます。
・・・・・と文字だけでつらつらと書いても分かりずらいので次回の記事では図も入れて記事化したいと思います。