colagumの日記

備忘録、日記

AUTOSAR勉強6 RTE,パーティション

# RTE

  • SW-CからAUTOSARプラットフォームを使用するためのAPIを提供するコンポーネント
  • VFBのインターフェースを実現したもの
  • RTEの機能は主に2つ

  • RTE,SW-Cと他SW-Cとの通信処理や排他制御を行う

  • RTEより下位層は、SW-Cからは隠蔽(抽象化)される→どのECUで実行されるかも見えない
  • SW-Cは、ECUに依存せず開発できるので再利用性が向上する

RTE

  • コンフィグレーションの情報に従って母きを実施する
    • SW-CやBSWの実行スケジューリングを制御する
    • 効率的なSW-C間の通信を実現する
    • RTEジェネレータからは、必要なAPIが生成される→RTEの実態は自動生成コードとなる

RTEの状態遷移

RTEの状態

  • 起動前状態、動作状態、停止状態が存在する

    RTE起動

  • 起動前状態から動作状態に遷移する
  • Rte_Start(void)
    • RTEで使用するシステムと通信リソースの割り当て、及び初期化を行う
    • ECU上のSW-Cが動作する各コア上で呼び出して、SW-Cから直接呼び出してはいけない
    • RTE_Main.hで定義され、関数、もしくはマクロで実装される

      RTE停止

  • 動作状態から停止状態に遷移する
  • Rte_Stop(void)
    • 呼び出されたコア上のRTEを終了する
    • Rte_Main.hで定義され、関数もしくはマクロで実装される

パーティション

ランナブルの周期実行

  • まず周期を設定したタイミングイベントを定義
  • ランナブルの起動周期に、タイミングイベントを設定する
  • ベットランナブルに対して、起動オフセットを設定できる
  • 実際の起動周期の実現はOSタスク、OSアラーム機能を使用する
    • ECUのインテグレータが設定する

周期起動の実現方法

  • ECUインテグレータは、以下を決定する
    • 周期起動が必要なランナブルを起動するOSタスク
    • OSタスクを起動するOSオブジェクト
      • OSアラーム
          • 1つの周期で1つのタスクのみ起動可能
      • OSスケジュールテーブル
          • 複数のOSタスクを同時に起動可能
          • 自由なタイムテーブルを定義し、指定した各タイミングでOSタスクを起動可能
  • RTEジェネレータに決定した情報を入力して、ランナブルを起動するOSタスクのコードを生成する