OSEKとは
OSEK(Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug)は、1993年にドイツの自動車産業が設立した
プロジェクトで、
エンジンコントロールユニット(ECU)に使用されるソフトウェアの業界標準を確立することを目的としています。OSEKは、自動車制御におけるオープンなシステムとインターフェースの標準を提供し、車載機器の相互運用性を促進しています。
OSの標準化
フランスの自動車業界でも類似の
プロジェクトであるVDXが存在しており、OSEKはVDXと協働し、1995年にOSEK/VDXとして仕様を発表しました。これにより、国際基準であるISO TC22(道路車両)の下で審議が行われ、2005年には車載機器制御用OSに関する国際規格 ISO 17356シリーズが発行されました。OSEKのドキュメントの現在のバージョンはISO 17356-1:2005です。
OSEKの主な機能
割り込み処理機能
OSEKは割り込みサービスルーチン(ISR)を利用して、効率的な応答を可能にします。ISR1ではOSのサービスを使わず、ISR2ではシステムコールを利用しつつ、割り込みを制御します。これにより、エンジンやモーターのようなリアルタイム制御を想定した設計が可能です。
処理(タスク)管理機能
OSEKの
タスク管理機能は、他の
オペレーティングシステムでのスレッドに相当します。アプリケーションの並列実行を行う
タスクには基本
タスクと拡張
タスクがあり、拡張
タスクはシステムコールを介して待機状態に逸脱することができます。また、
タスク設計時には割り込みの影響を受けないよう工夫されています。
応用状態(アプリケーションモード)
応用状態はOSの起動時に選択され、その後は変更できません。この機能により、特定の使用シナリオに特化した動作が可能となります。
事象(イベント)制御機能
事象機能は、
タスク間の同期を取るために利用され、主に拡張
タスクで使用されます。これにより、異なる
タスクが同時に動作する際の調整が行えます。
資源(リソース)
OSEKでは、
タスクやISRの優先順位を調整するためのシステムオブジェクトの利用が可能です。これにより、複数の
タスクで一つの資源を共有することで排他制御が実現します。
警告(アラーム)
警告機能は、指定された時間に設定された動作を引き起こすためのものです。警告が満了すると、
タスクの起動やイベントの設定などのアクションがトリガーされます。
伝言(メッセージ)
伝言機能はOSEK OS仕様には含まれていませんが、OSEK COM仕様下ではキューイングや可変長メッセージの送信が可能です。
鉤(フック)ルーチン
鉤ルーチンは、OSの内部処理中に利用者が指定した操作を呼び出す機能です。
タスクの切り替えやシステムサービスのエラー時に呼び出せるため、デバッグや動作追跡が容易になります。
OIL(OSEK Implementation Language)
OILは設定記述のための専用言語で、OILで記述した設定ファイルをシステムジェネレータに通すと、
C言語などのソースファイルが出力されます。この方式は、μITRON仕様に類似しています。
適合級(コンフォーマンスクラス)
OSEKでは、OS機能の理解を簡易にし、部分的な実装を可能にする「適合級」と呼ばれる機能のサブセットが用意されています。これには基本
タスクのみに焦点を当てたクラスBCC1から始まり、拡張
タスクを利用するECC2までの様々なクラスがあります。
欧州を中心とした自動車製造業者が集まる
AUTOSARは、OSEKを参照しつつその機能を拡張しています。これにより、自動車ソフトウェアの部品化が進んでいます。
オープンソース実装
OSEK OS準拠のオープンソース実装として、TOPPERS
プロジェクトがTOPPERS/ATK1を、また
AUTOSAR 4.0仕様に準拠したTOPPERS/ATK2も提供しています。
参考文献
Programming in the OSEK/VDX Environment, ISBN 978-1578200818
このように、OSEKは自動車用エレクトロニクスに革命をもたらす重要な基盤を提供しており、その標準化は今後の自動車技術の発展に寄与し続けるでしょう。