組込みシステムとは コンピュータ制御システム? 「専用の機能を実行するために、ハードウェアとソフトウェアが緊密に統合されたコンピュータシステム」 e.g. クーラー + センサ、マイコン = エアコン 電子交換機 = 通話路 + スイッチ + 専用プロセッサ + 専用ソフトウェア きめ細かな制御が可能(快適かつ経済的) ソフトウェアの書換えにより機能の追加改訂が可能
組込みシステムの適用分野 ・防衛、宇宙: 火星探査機、ミサイル誘導システム ・運輸: 航空機、自動車 ・防衛、宇宙: 火星探査機、ミサイル誘導システム ・運輸: 航空機、自動車 ・産業用機器: エレベータ、生産システム ・ネットワーク装置: スイッチ、ルータ ・通信端末: 携帯電話、ファクシミリ ・AV家電: テレビ、レコーダー、ディジタルオーディオ ・白物家電: 炊飯器、洗濯機、冷蔵庫、エアコン ・GPS応用: カーナビ、ガーミン
携帯電話の例 ・制御系(ファームウェア) 音声処理(A/D、D/A変換、雑音除去)、 移動体通信機能 ・付加サービス系 移動体通信機能 ・付加サービス系 電子メール編集、webブラウザ、アドレス帳管理 ハードウエア、OSに関する知識が不可欠 大規模、システム系開発に類似 スマフォの場合:OS X iPhone, Android (既存OSのカーネルを利用)
自動車の例 ・ボディ系 シート制御、ドア制御、ライト制御、シートベルト制御、 ミラー制御、エアコン etc. ・制御系 シート制御、ドア制御、ライト制御、シートベルト制御、 ミラー制御、エアコン etc. ・制御系 ブレーキ制御、ステアリング制御、車両姿勢制御、 トランスミッション制御、ABS、エアバッグ制御 ・情報系 カーナビ、GPS、バックモニタ、カーオーディオ
リアルタイムオペレーティングシステム入門 RTOSの特性と機能要件 一般的なRTOSの構成 カーネルの構成 RTOSサービス デバグエージェント 典型的なタスク操作 典型的なセマフォ操作
RTOSに求められる特性 信頼性 人間の介入無しに長時間動作 e.g. 年あたりのダウン時間1分以内 予測可能性 システムコールの応答時間のばらつきの最小化 コンパクトさ メモリ消費量の正確な把握が可能なことを利用 スケーラビリティ スケールアップ/ダウン容易性 e.g. 携帯電話の基地局と端末で共通のOS
RTOSの機能要件 マルチタスク 資源管理 ハードウェアの抽象化 APIの提供 より高い信頼性 高速性 ゆるいメモリ要件 多様なスケジューリングポリシーのサポート ROM/RAMブート、ディスクレスのサポート 異なるハードウェアプラットフォームへの移植性
一般的なRTOSの構成 カーネル(マイクロカーネル) プロトコルスタック ファイルシステム C/C++ライブラリサポート POSIXサポート デバイスドライバ デバッギングツール デバイスI/O
標準的なカーネルの構成 スケジューラ カーネルオブジェクト タスク、割込みサービスルーチン、タイマ、各種セマフォ、メッセージキュー、パイプ etc. サービス 時間管理、割込み処理、メモリ管理、デバイス管理
RTOSサービス マイクロカーネル志向 追加のサービスコンポーネントの開発により、カーネル機能の拡張が簡単 ファイルシステムコンポーネント 必要に応じて高速で独自のファイルシステムを提供 ターゲットデバグエージェント ホストデバッガとの協調でソースレベルデバグ機能を提供 コンポーネント構成 メモリ効率をあげるため必要なコンポーネントのみ
タスク操作 実行可能状態 開始 生成 停止 待ち状態 実行状態 停止 削除
アプリケーション初期化タスク ApplicationInitializing() { Create kernel objects; Create&Start ApplicationTasks; Delete itself; }
マルチタスク wait&signaling WaitingTask() { … acquire(); } SignalingTask() { … flush(); }
マルチタスク wait&signaling Waiting Task1 acquire セマフォ Signaling Task flush Waiting Task2 acquire 初期値:使用中 Waiting Task3