TOPPERS/OSEK
この連載では、RTOSに「TOPPERS/OSEK」(LEJOS OSEKで使用されている)を使用します。TOPPERS/OSEKはTOPPERSプロジェクトで開発されているOSEK/VDX OS仕様 Version2.2.1に準拠したOSです。OSEK/VDXとは、欧州で開発された車載機器制御用のOSで自動車産業の分野で広く利用されています。
また、TOPPERS/OSEKにはOSEK/VDX OIL仕様 Version2.4.1準拠のシステムジェネレータが附属しており、OSの設定ファイルであるOILファイルからOSで使用するコードを生成します。
OSEKでの開発手順
OSEKでの開発手順は、図1のようになります。ユーザプログラムに依存するOSコードは、OILからSGで生成されます。
OSEKの機能
OSEKには、表1の機能が準備されています。このように、OSEKはリアルタイム性を保障するための有用な機能を準備してくれていますが、実際にリアルタイム性を保障できるかは開発者の設計によります。
機能 | 内容 |
---|---|
タスク管理機能 | スレッドと同等の機能。基本タスクと拡張タスクがあり、拡張タスクはイベント待ちを行える。実行中のタスクは常に1つとなる |
割込み処理 | あるプログラムの処理を実行中に、外部要因等をトリガに別の処理を行いたい時に制御する処理。割込みには、ISRカテゴリ1(割込みにOSを使用しない)とISRカテゴリ2(割込みにOS機能を使用する)がある。また、割込みの禁止・許可の機能も提供している |
イベント機能 | タスク間等で同期を取る手段として使用される。拡張タスクで使用可能 |
リソース | ミューテックス相当のロックとして使用可能。リソースを使用することで、クリティカルセクションを作り排他制御を実現できる |
アラーム | タイマ相当の機能。アラーム満了時のハンドラとしてタスク、イベント、ユーザ定義関数を設定できる |
フック処理 | タスク切替前後など決められたタイミングでユーザー定義の処理を実行させることができる |