2. 概念
2.5 エクスキュータブル動作管理
2.5.4 エクスキュータブル動作の実現方式
表 2-3 エクスキュータブル実行インスタンスの状態遷移表
遷移 エクスキュータブルの状 態
起動 開始 プリエンプト 再開 終了
休止状態 (初期状態) 開始待ち状態 - - - -
開始待ち状態 - 実行状態 - - -
開始済 状態
実行状態 - - 実行可能状態 - 休止状態 実行可能状態 - 実行状態 - 実行状態 休止状態
ランナブル起動の 実現方式
説明
OSタスク起動 OSタスクの起動によりランナブルを起動し,タスクボディからの関数呼出し によりランナブルを開始する.ランナブルはマッピング先OSタスクのコン テキスト内で動作する.
OSタスクの起動契機(OSアラームの満了等)で,OSタスク内にマッピングさ れる全てのランナブルの起動契機が実現できる場合に使用できる(図 2-7).
OSイベント設定 OSイベントの設定によりランナブルを起動し,タスクボディからの関数呼出 しによりランナブルを開始する.ランナブルはマッピング先OSタスクのコ ンテキスト内で動作する.
OSイベントにより起動契機が識別できるため,OSタスクにマッピングされ るランナブル間で起動契機が異なる場合にも使用できる(図 2-7).
直接関数起動 RTE API内から直接関数呼出しにより,ランナブルを起動,および開始する.
ランナブルは,RTE APIの呼出し元ランナブルの,マッピング先OSタスク のコンテキストで動作する.
OS
OSタスク1
OSタスク2
ランナブル1 ランナブル2
OSイベント1 OSイベント2
ランナブル3 ランナブル4 OSタスク起動
OSイベント設定
ランナブル実行順番 の昇順でランナブル を開始する.
ランナブル実行順番の昇順 に,起動契機となるOSイベ ントが設定されているなら,
ランナブルを開始する.
OSタスクの起動契機で,OSタスク内にマッピングされる全ての ランナブルの起動契機が実現できる場合のみ使用可能
異なるOSイベントを設定することで,OSタスク内にマッピングされる ランナブルの起動契機が異なる場合でも使用可能
図 2-7 OSタスクにマッピングされたランナブルの起動
OSタスク起動の挙動
マッピング先OSタスクが起動された場合,タスクボディから,OSタスクにマッピングされるラン
ナブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0009】.あるOSタスクから複数の ランナブルが起動する場合,RTEは,エクスキュータブル実行順番の昇順で,ランナブルを開始する
【rte_sws_a_0010】.
OSイベント設定の挙動
マッピング先OSタスクのタスクボディから,複数の使用OSイベントに対するOSイベント待ちを 要求する.いずれかの使用OSイベントが設定された場合,使用OSイベントが設定されているランナ ブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0011】.ランナブルの実行が完了した 後,OSタスクを終了させずにOSイベント待ちを再度要求する【rte_sws_a_0012】.
あるOSタスクから複数のランナブルが起動する場合,RTEは,エクスキュータブル実行順番の昇順 で,ランナブルが開始するか(使用OSイベントが設定されているか)の判定,および開始を順に行う
【rte_sws_a_0013】.
直接関数呼出しの挙動
RTE API内から,ランナブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0014】.
ランナブルのライフサイクル管理
本RTEの機能仕様範囲では,EcuStateManager およびOSのライフサイクル管理により,RTEが 行うべきランナブルのライフサイクル管理が実現可能である.このため,本RTEでは,ランナブルの ライフサイクル管理を行わない【nrte_sws_0051】.
2.5.4.3 BSWスケジューラブル起動
BSWスケジューラブル起動の実現方式は,以下のいずれかである.どの方式によりBSWスケジュ ーラブルを起動するかは,コンフィギュレーションにより選択できる.
BSWスケジューラ ブル起動の実現方 式
説明
OSタスク起動 OSタスクの起動によりBSWスケジューラブルを起動し,タスクボディから の関数呼出しによりBSWスケジューラブルを開始する.BSWスケジューラ ブルはマッピング先OSタスクのコンテキスト内で動作する.
OSタスクの起動契機(OSアラームの満了等)で,OSタスク内にマッピングさ れる全てのBSWスケジューラブルの起動契機が実現できる場合に使用でき る.
OSイベント設定 OSイベントの設定によりBSWスケジューラブルを起動し,タスクボディか らの関数呼出しによりBSWスケジューラブルを開始する.BSWスケジュー ラブルはマッピング先OSタスクのコンテキスト内で動作する.
OSイベントにより起動契機が識別できるため,OSタスクにマッピングされ るBSWスケジューラブル間で起動契機が異なる場合にも使用できる.
OSタスク起動の挙動
マッピング先OSタスクが起動された場合,タスクボディから,OSタスクにマッピングされるBSW スケジューラブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0054】.あるOSタスク から複数のBSWスケジューラブルが起動する場合,SCHMは,エクスキュータブル実行順番の昇順で,
BSWスケジューラブルを開始する【rte_sws_a_0055】.
OSイベント設定の挙動
マッピング先OSタスクのタスクボディから,複数の使用OSイベントに対するOSイベント待ちを 要求する.いずれかの使用OSイベントが設定された場合,使用OSイベントが設定されているBSW スケジューラブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0056】.BSWスケジュ ーラブルの実行が完了した後,OSタスクを終了させずにOSイベント待ちを再度要求する
【rte_sws_a_0057】.
あるOSタスクから複数のBSWスケジューラブルが起動する場合,SCHMは,エクスキュータブル 実行順番の昇順で,BSWスケジューラブルが開始するか(使用OSイベントが設定されているか)の判定,
および開始を順に行う【rte_sws_a_0058】.
BSWスケジューラブルのライフサイクル管理
本SCHMの機能仕様範囲では,EcuStateManager およびOSのライフサイクル管理により,
SCHMが行うべきBSWスケジューラブルのライフサイクル管理が実現可能である.このため,本 SCHMでは,BSWスケジューラブルのライフサイクル管理を行わない【nrte_sws_0206】
【nrte_sws_ext_0021】.
2.5.5 エクスキュータブル動作の設定