• 検索結果がありません。

2. 概念

2.5 エクスキュータブル動作管理

2.5.4 エクスキュータブル動作の実現方式

表 2-3 エクスキュータブル実行インスタンスの状態遷移表

遷移 エクスキュータブルの状 態

起動 開始 プリエンプト 再開 終了

休止状態 (初期状態) 開始待ち状態 - - - -

開始待ち状態 - 実行状態 - - -

開始済 状態

実行状態 - - 実行可能状態 - 休止状態 実行可能状態 - 実行状態 - 実行状態 休止状態

表 2-4 ランナブル起動の実現方式

ランナブル起動の 実現方式

説明

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タスクが起動された場合,タスクボディから,OSタスクにマッピングされるラン ナブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0009】.あるOSタスクから複数の ランナブルが起動する場合,RTEは,エクスキュータブル実行順番の昇順で,ランナブルを開始する

【rte_sws_a_0010】.RTEGENは,設定されたOSタスク内におけるランナブルの実行順番を尊重す る【rte_sws_2207】.

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スケジュ ーラブルを起動するかは,コンフィギュレーションにより選択できる.

表 2-5 BSWスケジューラブル起動の実現方式 BSWスケジューラ

ブル起動の実現方 式

説明

OSタスク起動 OSタスクの起動によりBSWスケジューラブルを起動し,タスクボディから の関数呼出しによりBSWスケジューラブルを開始する.BSWスケジューラ ブルはマッピング先OSタスクのコンテキスト内で動作する.

OSタスクの起動契機(OSアラームの満了等)で,OSタスク内にマッピングさ れる全てのBSWスケジューラブルの起動契機が実現できる場合に使用でき る.

OSイベント設定 OSイベントの設定によりBSWスケジューラブルを起動し,タスクボディか らの関数呼出しによりBSWスケジューラブルを開始する.BSWスケジュー ラブルはマッピング先OSタスクのコンテキスト内で動作する.

OSイベントにより起動契機が識別できるため,OSタスクにマッピングされ るBSWスケジューラブル間で起動契機が異なる場合にも使用できる.

直接関数起動 SCHM API内から直接関数呼出しにより,BSWスケジューラブルを起動,

および開始する.

OSタスク起動の挙動

マッピング先OSタスクが起動された場合,タスクボディから,OSタスクにマッピングされるBSW スケジューラブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0054】.あるOSタスク から複数のBSWスケジューラブルが起動する場合,SCHMは,エクスキュータブル実行順番の昇順で,

BSWスケジューラブルを開始する【rte_sws_a_0055】.RTEGENは,設定されたOSタスク内にお けるBSWスケジューラブルの実行順番を尊重する【rte_sws_7517】.

OSイベント設定の挙動

マッピング先OSタスクのタスクボディから,複数の使用OSイベントに対するOSイベント待ちを 要求する.いずれかの使用OSイベントが設定された場合,使用OSイベントが設定されているBSW スケジューラブルを開始する(エントリポイント関数を呼び出す)【rte_sws_a_0056】.BSWスケジュ

直接関数呼出しの挙動

SCHMは,特定の条件を満たしている場合,SCHM API内から,直接関数呼び出しによりBSWス ケジューラブルを開始する(エントリポイント関数を呼び出す).直接関数呼び出し条件の1つである呼 び出し側と呼び出される側のBSWモジュールエントリ(BswModuleEntry)のBSW実行コンテキスト (BswExecutionContext)条件を以下に示す【rte_sws_a_0064】.

表 2-6直接関数呼び出しのBSW実行コンテキスト条件 呼び出す側の

BSW実行コンテキスト (BswExecutionContext)

呼び出される側のBSW実行コンテキスト(BswExecutionContext)

○:直接関数呼び出し可能

×:直接関数呼び出し不可

task interruptCat2 interruptCat1 hook unspecified

task ○ ○ ○ × ○

interruptCat2 × ○ ○ × ○

interruptCat1 × × ○ × ○

hook × × × × ×

unspecified ○ × × × ○

BSWスケジューラブルのライフサイクル管理

本SCHMの機能仕様範囲では,EcuStateManager およびOSのライフサイクル管理により,

SCHMが行うべきBSWスケジューラブルのライフサイクル管理が実現可能である.このため,本 SCHMでは,BSWスケジューラブルのライフサイクル管理を行わない【nrte_sws_0206】.