Technical Article XCPによるAUTOSAR ECUソフトウェアの解析 ∼AUTOSARベーシックソフトウェアの拡張でデバッグを便利に∼ ECUをネットワーク接続した環境でデバッ グする場合、特にエラーが散発的または テスト車両でのみ発生するケースでは、デ バッガーが有効でないことが少なくありま せん。そのような場合に役立つのが、実 績ある測定/キャリブレーションプロトコ ルであるXCPのサービスです。本稿では、 XCPを使ってAUTOSARベ ーシックソフト ウェア (BSW) とソフトウェアコンポーネント (SWC)のプロセスをモニターする方法を 説明します。こうした測定を行うには、ベー シックソフトウェアに一定の機能を追加し なければなりませんが、解析ツール専用の 拡張機能を使えば、効率的なデバッグと手 軽な評価が可能になります。 現行のテストツールの多くは、レストバスシミュレーションを使っ ManagerやCommunication Manager(ComM)などの、ステート て個別のECUをテストする方法に対応しています。このようなツー マシンが相互に依存している 「マネージャーモジュール」です。ま ルを使えば、ECUネットワークに依存せずに早い段階から必要な機 た、テスト技術者は、どのアプリケーション要求でECUがその測定 能を検証し、ソフトウェア開発の初期から極めて高い品質を実現す された状態に入ったのかも判断しなければなりません。モジュー ることができます。ただし、ECUがテストベンチ/テスト車両に設置 ルの境界を越えた因果関係の観察、たとえばシグナルの経路をバ されている場合や、機能がネットワーク内の複数のECUにまたがる スレベルからアプリケーションレベルまで追跡するなどの操作も必 場合、テストを徹底できず、エラーの発生場所を特定するのが難し 要です。さらに、解析時にエラー履歴を再構築するためのタイム くなります。これには以下のような原因があります。 スタンプも必要となります。 > ECUがアクセスしにくい方法で設置されている > デバッグに使える接続端子が残っていない > 異なるECU用のデバッガー間で、データに対する条件設定を共 AUTOSAR 3.xプロジェクトにおけるXCP 通で行うことができない > テストツールを車両内に設置できない 車両内でのデバッグが制限される物理的な条件に加えて、散発的 にしか発生しないエラーがあることも原因の1つです。散発的なエ ラーの原因を実験室で特定するのは、容易なことではありません。 AUTOSAR 3.x規格には、リモートデバッグのメカニズムに関す る仕様は一切ありません。しかし、ここ数年、車両開発における ECUの測定/キャリブレーションにXCP(Universal Measurement and Calibration Protocol)が広く使われるようになり、上記の 要件を問題なく満たしています。XCPには、バスシステム経由で 変数を読み書きするメカニズムが用意されています。DAQ(Data Acquisition)リストを利用すれば、共通のタイムスタンプを使っ て、複数の変数を一貫して測定することができます。また、ダイナ デバッグの要件 ミックDAQリストを使えば、読み出すデータレコードを測定中に再 構成することが可能です。これらによって、通信バスで利用可能な エラーの原因を探す際、一般的には多様なソフトウェア変数の 帯域幅を最大限に活用する手段を得ることができるのです。 に複数のソフトウェアモジュールの変数を調べることも大切です。 XCPでの測定には通常、1つまたは複数のA2Lファイルが使われ ます。A2LファイルにはECU内の関連する測定オブジェクトの情報 これにより、モジュール間での一貫性の状態をモニターすることが が格納されており、オブジェクトにはそれぞれ、メモリーアドレス、 できます。主な例として挙げられるのは、AUTOSARのBus State データタイプ、シンボル、変換の規則といった情報が必要です。 値がチェックされます。また、トリガーポイントを基準にして、同時 November 2011 1 Technical Article A2Lファイルには、XCPマスター(例:解析ツール)とXCPスレーブ (ECU)間の通信用パラメーターの記述に加え、測定オブジェクト の階層構造の表現も含まれています。XCPはA2Lファイルを介して ECU内部の変数にさまざまな方法でアクセスし、手軽に構成でき るため、デバッグで威力を発揮します。 XCPプロトコルは専用のBSWモジュールで実装されています。 RTEの下にあるモジュールのデータフロー(図2)も追跡できる よう、ベクターではベーシックソフトウェアのパラメーターを測定 するためのA2Lジェネレーターも提供しています。このA2Lファイ ルもコンフィギュレーションに基づいて生成されます。測定オブ ジェクトはA2Lファイル内のディレクトリー構造に階層的に格納さ れており、検索がしやすくなっています。 これはAUTOSAR 3.x規格では定義されていません。モジュールは CAN、FlexRay、Ethernetなど、使用されているバスシステムに適 測定データの取得 (図1) 。XCPドラ したAUTOSARの通信ドライバーとリンクされます イバーは既存のBSW構成チェーンの中にシームレスに統合されて いるため、XCPやその他のモジュールが手軽に構成できます。 テスト技術者が、エラーの原因となったモジュールをすでに特 定しており、エラーのパターンに基づいて解析用データを定義で きる場合がよくあります。まず、XCPマスターがXCPスレーブとの A2Lファイルの作成 接続を確立します。接続が確立された後、最初のデータをECUか ら読み出すことができます。それらは通常、バージョン番号やバー 上記の補足情報を使ってA2Lファイルを作成するのは容易では ジョンの識別子といった情報です。これらの情報に基づいて、テス なく、テスト技術者がこれを行うには一定のプロセスと適切なツー ト技術者はECUのバージョンレベルに一致するA2Lファイルを選択 ルが必要です。AUTOSAR BSWのコンフィギュレーションのオプ し、データの測定を開始します。 ションが多岐にわたり、A2Lファイルを生成すると都合がよいこと 再現が難しいエラーでは、測定の実行中にデータを直ちに分析 から、BSWのコンフィギュレーションに加える変更はいずれもA2L することができない場合もあります。こうしたケースでは、XCP機 ファイルで指定されます。 能が組み込まれたデータロガーやXCPマスターを持つソフトウェア ソフトウェアコンポーネント (SWC)間のデータフロー測定に必要 ツールを使って、車両の長時間の測定値を保存します。後でデー なA2Lファイルは、ベクターのRTEジェネレーターで生成できます タを解析するときは、CANoeなどのXCPマスターツールを使いま 。これによってECU内/ECU間の通信のモニターや、接続さ (図2) す。CANoeは広く使用されているベクターのシミュレーション、解 れている送信/受信ポートの測定およびスティミュレーションが可能 析、テスト用ツールです。 になります。A2Lファイルの生成はDaVinci Developerで作成され たRTEのコンフィギュレーションに基づいて行われます。また、測定 に必要な変更がRTEジェネレーターでRTEコードに挿入されます。 図1:ベクターのAUTOSAR ベーシックソフトウェアであるMICROSARには、XCP経由でECUの内部データを測定するためのモジュール が含まれています November 2011 2 Technical Article 測定データの解析 変数に応用でき、たとえば、代入値と初期値のどちらがロードされ たかをシンボルで示すなどの処理が可能になります。 使用する通信バスに依存せずにECUをテストするには、XCPマス ターがCAN、FlexRay、Ethernetなどの多様なバスシステムに対 応していなければなりません。さらに、デバッグでは複数のECUの データを並行して測定、評価することが必要になる場合がありま す。そのため、マルチマスターにも対応した解析ツールがあれば、 大変便利です。 オプションAMD(AUTOSAR Monitoring and Debugging)を使 うと、CANoeの機能がXCPマスターで拡張され、複数のスレーブ に動的にアドレスできるようになります。ユーザーは測定の実行 中にXCPコンフィギュレーションを切り替えることができます。オプ ションAMDでは、XCP経由で測定した変数についても、ステートト AUTOSAR 4.xプロジェクトでのデバッグ AUTOSAR 4.x規格は、DBG(Debug)および DLT(Diagnostic Log and Trace)の各モジュールを実装することで、ソフトウェア のデバッグオプションの要件を満たします。これら2つのモジュー ルは、XCPで提供されるものと似たメカニズムを利用しています。 DBGモジュールの主なタスクはECUデータを読み取ることで、それ はECU内にバッファーされ、PCに送られて、開発者によって評価さ れます。PCとの通信は専用の通信プロトコルによって行われます。 XCPでのA2Lファイルの場合と同様に、DBGでのアプローチにおい 、グラフィック、データ解析の各Windowが利用で ラッカー(図3) ても測定されるデータの記述が生成されます。この生成は測定さ きます。同様に、XCP変数には統合されたプログラミング言語であ れるすべてのBSWモジュールのモジュールディスクリプションに基 るCAPLやテストオートメーションからアクセスできるため、自動解 づいて行われます。 析が可能です。 DLTモジュールの役目は、実行時に生成されたエラーメッセー ジと警告をPCに転送することです。これらのメッセージはBSWモ ジュールのDET(Development Error Trace)、DEM(Development Event Manager)、そしてアプリケーションのソフトウェアコンポー ネントから生成されます。DLTも独自にXCP非互換のプロトコルを 持っています。ただし、DBGとDLTの両モジュールの機能はXCPと 一緒に実装できます。すでにベクターはAUTOSAR 3.xソリューショ ンに、この機能を搭載しています (図1)。 ECUから取得された測定値を、測定中に直接解析する場合も あります。そのためにはXCPマスターが適切なメカニズムを提供 しなければなりません。したがってCANoeのステートトラッカー Windowには、たとえば、特定の測定値に到達したらWindowの内 容を凍結して手早く解析を行うといった定義可能なトリガー条件が 含まれています。CANoeではさらに、CAPLプログラムを介して測 定値を複合的に評価することが可能です。 開発者が保存済みの測定値を詳しく評価する場合、生値よりも シンボル表現した値の方が扱いは簡単です。そのためには、A2L 測定データへの高性能アクセス ファイルから生値へのシンボリック名の割り当てが含まれていなけ ればなりません。これはC言語のEnumsに似ています。CANoeはシ これまで説明してきたメカニズムによって、AUTOSARのバージョ ンボリック値の表示を処理します。ステートマシンの状態はしばし ンを問わず、どのECUにも使える強力なデバッグツールが実現さ ばEnumsを使ったコードで表現され、このような表示はその状態 れます。ベクターのCANoeやCANapeをはじめとした実績あるXCP を観察するのに非常に適しています。この方法は希望する任意の ツールを使って、開発者は非常に手軽にECUのプロセスを追跡し、 図2:ECUコンフィギュレーションに基づいたA2Lファイルの生成 November 2011 3 Technical Article 図3:ユーザーはCANoeステートトラッカーWindowを使って、XCPで取得されたECU内部データを手軽に可視化できます 解析することができます。ECUの実行時間への影響を最小限に抑 えつつ、大量のデータを最大5MB/秒のスピードで測定したい場合 は、測定/キャリブレーションハードウェアのVX1000の使用が推奨 。この場合、ECUへのアクセスにはデバッグ用イン されます (図4) ターフェイスのJTAGおよびNEXUSなどを使用します。 らかじめ挿入しておくことができます。実行時にわずかな時間 的オーバーヘッドはありますが、このXCPコードは問題なく動作 します。測定でXCPイベントが必要になると、XCPマスターは測 定中にそれらをアクティブ化します。XCPイベントのもう1つの 有利な点は、複数のデータを共通のタイムスタンプを使って、 イベント駆動で出力できることです。これによって、開発者はソ XCPのための追加装置 この数年で、車両開発におけるECUの測定/キャリブレー ション にXCP(Universal Measurement and Calibration Protocol)が広く使われるようになりました。XCPは2003年に ASAM(Association for Standardization of Automation and Measuring Systems)によって標準化されたグローバル標準 です。CCP(CAN Calibration Protocol)はCANバス限定です が、XCPではトランスポートレイヤーの交換が可能です。また、 CAN、FlexRay、Ethernet、USBなどのバスに対応し、マスター /スレーブの原理がベースになっています。XCPマスターはCTO (Command Transfer Object)を使ってバスからXCPスレーブ にコマンドを送ります。そのXCPスレーブはDTO(Data Transfer Object)を使って応答します。XCPはECUのメモリーの読取りと 書込みに使われます。 フトウェア内の特定のプロセスを精密に追跡し、変数が他の変 数と整合しているかをチェックできます。 XCPイベントを使えば、テスト技術者は通信バスの状態とは 関係なく測定を実行することができます。ポーリングの場合 は、測定コマンドがマスターから届かなければならず、バス通 信は必須です。この要件はXCPイベントにはありません。ただ し、XCPスレーブにはXCPマスターとの通信が可能になるまで 測定データを格納しておくバッファーが必要です。ECU内のリ ソースは非常に限られていることから、継続的にバッファー・ス トレージを持つことは当然ながら不可能です。ここで考えられ るバッファー戦略は2つです。1つは、リニアバッファーです。こ れはバッファーが満杯になるまで測定値を受け入れます。もう1 つは、リングバッファーです。これは最も古いエントリーが新し い値で置き換えられます。 XCPマスターはXCPスレーブに定期的に測定データを要求 XCPイベントで測定を実行する前に、XCPマスターはスレー (ポーリング)するか、特定のイベントが発生した場合にデータ ブドライバーを適切に構成しなければなりません。これは一連 を送信させます (XCP イベント)。どちらのメカニズムが使われ のコマンドで行うことができます。まず、XCPマスターはXCPス るかは数々の要因で決まります。XCPイベントによる測定はポー レーブとの接続を確立し、必要な構成を転送します。ただし、 リングによる測定よりも帯域幅の利用効率が向上しますが、 ただし、ポーリングであれば、これは不要です。同様に、XCPイ ECUの初期化の直後から測定を開始する場合は、測定の構成を ECUの不揮発性メモリーに格納しておかなければなりません。 これがいわゆるレジュームモードで、これを使ってECUの起動 ベントは開発時にアプリケーションコードの特定のポイントにあ 直後から測定を開始できます。 XCPイベントのトリガーのため、ECUコードの修正が必要です。 November 2011 4 Technical Article 図4:ベクターが提供する測定/キャリブレーションハードウェアのVX1000を使えば、ECU実行時間への影響を最小限に抑えながら 大量のデータを取得できます 提供元 著者: Patrick Markl(Dipl.-Ing.(FH)) Vector Informatik GmbHに て、コ ン セ プト・ディベロップメントチームのチーム リー ダ ーとして 組 込ソフトウェア 製 品 を 担当。 見出し画像/図1 ∼ 4:Vector Informatik GmbH リンク: ベクター・ジャパン http://www.vector-japan.co.jp Stefan Albrecht(Dipl.-Ing.(FH)) Vector Informatik GmbHに て、シ ニ ア・ プロダクト・マネジメント・エンジニアとし て CANoe/CANalyzer オ プ シ ョ ンAMDを 担当。 ■ 本件に関するお問い合わせ先 ベクター・ジャパン株式会社 営業部 (東京) TEL:03-5769-6980 FAX:03-5769-6975 (名古屋)TEL:052-238-5020 FAX:052-238-5077 E-Mail:sales@jp.vector.com November 2011 5
© Copyright 2024 Paperzz