Python

事例

【XCP】最小構成のMBD事例 第2章 その164【XCP Basic⑱】

メモリアクセス系コマンド以外のメモリアクセスとして(Data AcQuisition)がある。 DAQは過去記事で数回にわたって説明しているのでそちらを参照。 必要なコマンドをそこそこあるので、一個ずつ試していく。 尚、XCP BasicはDynamic DAQが実装されている。 Static DAQは未実装。
事例

【XCP】最小構成のMBD事例 第2章 その163【XCP Basic⑰】

なんとSHORT_UPLOAD時にMTAも更新される仕様になっていた。 よって、続けて読み出す場合はSET_MTA無しでUPLOADを実施すればOK。 この仕様を利用してSHROT_UPLOAD→UPLOAD×n回とすると、効率的なメモリダンプが実現できる。 メモリアクセス系コマンドはこれで動作確認OKとなる。
事例

【XCP】最小構成のMBD事例 第2章 その162【XCP Basic⑯】

UPLOAD系コマンドの実験開始。 UPLOADコマンドが基本形のコマンドでその派生形としてSHORT_UPLOADがあるが、SHORT_UPLOADのとある挙動を確認するためにSHORT_UPLOADから実施。 SHORT_UPLOADでDOWNLOADで書き込んだ値が読めた。 よって、両コマンド共に動作OKとなる。
事例

【XCP】最小構成のMBD事例 第2章 その161【XCP Basic⑮】

DOWNLOADコマンドを実施。 正常応答あり。 実際に書き込まれたかはUPLOAD系コマンド実験時に確認予定。 DOWNLOAD_MAXコマンド実施 MTAは読み書き時にそのサイズ分参照アドレスが後方にズレる。 C言語のポインタ的な仕様。 MAX_CTO(今回の場合は8)-1分のサイズが無条件に書き込みサイズになる。
事例

【XCP】最小構成のMBD事例 第2章 その160【XCP Basic⑭】

XCP Basicがサポートしているメモリアクセス系コマンドを列挙。 SET_MTA。 DOWNLOAD。 DOWNLOAD_MAX。 SHORT_UPLOAD。 UPLOAD。 Python-CAN初期化とCONNECTコマンドを発行してからSET_MTAコマンド発行。 正常応答あり。
事例

【XCP】最小構成のMBD事例 第2章 その159【XCP Basic⑬】

xcp_cfg.hについかしたXCP_ENABLE_MEM_ACCESS_BY_APPLのdefine定義について説明。 XCP経由のメモリアクセスが直接アクセスからフック関数を経由する状態に切り替わる。 ecu.cの修正。 アクセス用の配列を定義。 メモリアクセス用フック関数の定義と実装。
事例

【XCP】最小構成のMBD事例 第2章 その158【XCP Basic⑫】

xcp_cfg.hの修正は以下のdefine定義を追加するだけ。 XCP_ENABLE_CALIBRATION。 XCP_ENABLE_MEM_ACCESS_BY_APPL。 XCP_ENABLE_CALIBRATIONはDOWNLOADとDOWNLOAD_MAXが有効になる。 SHORT_DOWNLOAD等は使用不可。
事例

【XCP】最小構成のMBD事例 第2章 その157【XCP Basic⑪】

PCシミュレーションの場合、XCP Basicでメモリアクセス系コマンドを実施には課題がある。 各変数のアドレスが起動毎に変わる可能性あり。 よって、以下のどちらかが必要。(後者を採用) 変数のアドレスをファイル出力して、XCPマスタからアクセス毎にファイル参照。 配列定義して配列先頭を0アドレスとする。
事例

【XCP】最小構成のMBD事例 第2章 その156【XCP Basic⑩】

XCP BasicにGET_STATUSコマンドを送ってみた。 問題無く応答あり。 次にSYNCコマンドを送ってみた。 応答があったがエラー応答? 実は「コマンドプロセッサの同期。」を示す0x00というエラーコードで通常応答になる。 メモリ非依存のコマンド確認は取れた状態。
事例

【XCP】最小構成のMBD事例 第2章 その155【XCP Basic⑨】

とりあえずXCP Basicのテスト用にメモリアクセスに絡まない以下のコマンドを送ってみる。 CONNECT。 GET_STATUS。 SYNC。 コマンドの送信はPythonの対話モードかJupyter Notebookで実施。まずはCONNECTコマンドを送信。無事送信&受信できた。他のコマンドも同様に試してみる。