2. 概念
2.10 ライフサイクル管理
2.10.4 RTE ライフサイクルの操作
2.10.4.1 RTE起動
RTEは,RTE起動のためのAPI(Rte_Start)を提供する.EcuStateManagerは,提供されたAPIを 使用してRTEを起動することができる.
本RTEは,RTE起動の際,RTEの依存するBSWMの初期化を行わない【nrte_sws_0035】.本 RTEの依存するBSWMの初期化の実施は,BSWM,およびECUインテグレーションコードの責任で ある.
RTEは,RTE起動をコア毎に独立して行う【rte_sws_7615】.そのため,EcuStateManagerは,
コア毎にRte_Startを呼び出す必要がある.
RTE起動の挙動
Rte_Startにより,呼出し元コアのRTE起動が開始された際の挙動は以下の通りである
【nrte_sws_0077】.RTE起動はブロックせず,有限の実行時間で復帰する.
(3) Rte_Startの呼出し元のコアにマッピングされている全てのパーティションについて,パーテ ィションに所属する全てのSW-Cの以下の状態を初期状態とする【rte_sws_7616】
〔rte_sws_a_0038〕.
・ RTE起動時に初期化するよう設定された全データ要素について,受信したデータ要素の値,
および状態
(4) Rte_Startの呼出し元のコアにマッピングされている全パーティションを動作状態に移行す
る.
(5) Rte_Startの呼出し元のコアを動作状態に移行する.
(6) Rte_Startの呼出し元のコアにマッピングされている周期イベントによって起動するランナブ
ルの起動を開始する【rte_sws_7575】.
RTE起動の制限
RTE起動は,以下のBSWMの起動後に行わなければならない【nrte_sws_ext_0007】.
・ OS
・ COM
マスタコアのRTE起動は,どのスレーブコアのRTE起動よりも先に行わなければならない
【nrte_sws_ext_0008】.
RTE起動は,「起動前状態」にいる間に行なわれなければならない【nrte_sws_ext_0009】.
2.10.4.2 RTE停止
RTEは,RTE停止のためのAPI(Rte_Stop)を提供する.EcuStateManagerは,提供されたAPIを 使用してRTEを停止することができる.
本RTEは,RTE停止の際,RTEの依存するBSWMの終了処理を行わない【nrte_sws_0037】.本 RTEの依存するBSWMの終了処理の実施は,BSWM,およびECUインテグレーションコードの責任 である.
RTEは,RTE停止をコア毎に独立して行う【rte_sws_a_0040】.そのため,EcuStateManagerは,
コア毎にRte_Stopを呼び出す必要がある.
RTE停止の挙動
Rte_Stopにより,呼出し元コアのRTE停止が開始された際の挙動は以下の通りである
【nrte_sws_0078】.RTE停止はブロックせず,有限の実行時間で復帰する.
(2) Rte_Stopの呼出し元のコアを停止状態に移行する.
(3) Rte_Stopの呼出し元のコアに所属する全パーティションを停止状態に移行する.
RTE停止の制限
RTE停止は,以下のBSWMの終了処理の前に行わなければならない【nrte_sws_ext_0010】.
・ OS
・ COM
マスタコアのRTE停止は,全てのスレーブコアのRTE停止の後に行わなければならない
【nrte_sws_ext_0011】.
RTE停止は,「起動前状態」以外のいずれかの状態にいる間に行なわれなければならない
【nrte_sws_ext_0012】.
RTEが停止状態の場合の挙動
RTEが停止状態である場合,RTEは,そのコアのランナブルの起動要求,および開始要求を無視し,
要求がないものとして扱う【rte_sws_2538】.
AUTOSAR仕様との違い
AUTOSAR仕様では,RTEが停止状態である場合,RTEは,C/S連携のオペレーション呼出し要求,
およびS/R連携からのデータ送受信要求を無視し,要求がなかったものとして扱うと規定されている
【rte_sws_2535】【rte_sws_2536】.しかし,これらの仕様を厳密に守るとオーバヘッドが大きいため,
本RTEでは,S/R連携のデータ送受信におけるデータ一貫性のみ保証する【nrte_sws_0055】.
2.10.4.3 パーティションの停止,および再起動の通知
RTEは,パーティション毎に,以下のAPIを提供する.
・ パーティションが停止することをRTEに通知するAPI(Rte_PartitionTerminated)
・ パーティションが再起動することをRTEに通知するためのAPI(Rte_PartitionRestarting) ECUインテグレーションコードは,提供されたAPIを使用して,パーティションが停止,もしくは 再起動することをRTEに通知する.RTEは,パーティションが停止,および再起動したことの通知を 受け取って,パーティションの状態遷移を行うのみであり,パーティションにマッピングされた OSAPを停止,および再起動する機能を提供しない.
パーティション停止通知の挙動
Rte_PartitionTerminatedにより,パーティション停止通知が開始された場合の挙動は以下の通りで
ある【nrte_sws_0079】.
(1) 停止対象のパーティションの状態を停止状態に移行する.
(2) 停止対象のパーティションが送信側となり,データのタイムアウト監視が有効なパーティシ ョン間連携先がある場合,受信側パーティションの受信データセットの状態を「タイムアウト 状態」に移行する〔rte_sws_2710〕.
パーティション再起動通知の挙動
Rte_PartitionRestartingにより,パーティション再起動通知が開始された場合の挙動は以下の通り
である【nrte_sws_0080】.
(1) 再起動対象のパーティションの状態を再起動中状態に移行する.
(2) 停止対象のパーティションが送信側となり,データのタイムアウト監視が有効なパーティシ ョン間連携先がある場合,受信側パーティションの受信データセットの状態を「タイムアウト 状態」に移行する〔rte_sws_2710〕.
パーティションが停止状態,もしくは再起動中状態の場合の挙動
RTEは,パーティションが停止状態,もしくは再起動中状態である場合,そのパーティションに所 属するエクスキュータブル実行インスタンスの起動,および開始要求を無視し,要求がないものとし て扱う【rte_sws_7604】.
2.10.4.4 パーティションの再起動
RTEは,パーティションを起動するためのAPI(Rte_RestartPartition)を提供する.ECUインテグ レーションコードは,提供されたAPIを使用して,パーティションを再起動することができる.
パーティションの再起動の挙動
Rte_RestartPartitionにより,パーティションの再起動が開始された際の挙動は以下の通りである
【nrte_sws_0081】.
(1) パーティションに所属する全てのSW-Cの以下の状態を初期状態とする【rte_sws_a_0038】.
・ パーティションの再起動時に初期化するよう設定された全データ要素について,受信した データ要素の値,および状態〔rte_sws_2517〕.
(2) パーティションを動作状態に移行する.
2.10.4.5 SW-Cの初期化と終了
本RTEは,SW-Cの初期化,および終了のための機能を提供しない【nrte_sws_0082】.
ECUインテグレーションコードは,RTE起動,もしくはパーティションの再起動時に,各SW-Cの 初期化を行う必要がある.また,ECUインテグレーションコードは,RTE停止,もしくはパーティシ ョンの停止時に,各SW-Cの終了処理を行う必要がある.
ECUインテグレーションコードによる,SW-Cの初期化,および終了処理内容の例
各SW-Cに初期化のためのランナブル,および終了のためのランナブルを定義し,初期化,および終 了処理の定義を行う.
・ システム起動時には,Rte_Start 後に,各SW-Cの初期化のためのランナブルを実行する.
・ システム終了時には,Rte_Stop 後に,各SW-Cの終了のためのランナブルを実行する.
・ パーティションの再起動時には,リスタートタスクから,各SW-Cの終了のためのランナブルを 実行後,Rte_RestartPartitionを呼び出し,Rte_RestartPartitionの呼出し完了後に,各SW-C の初期化のためのランナブルを実行する.
2.10.5 ライフサイクルの実現方式