chevron_left

メインカテゴリーを選択しなおす

cancel
KEI
フォロー
住所
未設定
出身
未設定
ブログ村参加

2020/02/11

arrow_drop_down
  • 【XCP】最小構成のMBD事例 第2章 その177【XCP Basic㉛】

    DAQパケット送信周期精度改善の方針を決めた。 時間精度を引き上げるためマルチメディアタイマを使用。 1ms精度の過去実績あり。 Sleepを挟んだWhileループをマルチメディアタイマによる1msコールバックに変更。 これに伴い10ms周期だけでなく、イベントチャンネル3も1ms保証ができる。

  • 【XCP】最小構成のMBD事例 第2章 その176【XCP Basic㉚】

    DAQパケット送信周期の精度が悪い理由を確認。 イベントチャンネルが15msになってる。 Sleepで10ms周期を作ろうとしているが、実際は15msになってる。 この部分はPC依存な面はある。 上記により小手先の回収ではどうにもならなそう。 一応対策も考えてるので次回確認予定。

  • 【XCP】最小構成のMBD事例 第2章 その175【XCP Basic㉙】

    XCP Basic PCシミュレーションの問題点は送信周期。 前回のCAN回線ログのDAQパケットだけを抽出し、それのタイムスタンプと元に現状の送信周期を算出。 10[ms]周期で送信されるべきところが15[ms]になっていた。 一応、原因は分かってはいるので、そこらへんを次回確認予定。

  • 【XCP】最小構成のMBD事例 第2章 その174【XCP Basic㉘】

    実際にSET_MTAとDOWNLOADを使ってRAM値書き換えを実施。 RAM値書き換え前にDAQを起動しておき、RAM値書き換えとDAQパケットの状況をCAN回線モニタして確認。 RAM値書き換えに合わせてDAQパケットの計測データが変化。 おおよそXCP Basicの挙動はOKだが、まだちょっと問題がある。

  • 【XCP】最小構成のMBD事例 第2章 その173【XCP Basic㉗】

    計測RAM値の変更方法はSET_MTAとDOWNLAOD。 SET_MTAとDOWNLOADの電文確認。 折角なので連続で投げて見る。 ただ、同じ値だと変化が分からない無いのでちょっと書き込みデータを変える。 さらにDAQパケット送出前に書き換えてしまう可能性もあるのでsleep関数を挟む。

  • 【XCP】最小構成のMBD事例 第2章 その172【XCP Basic㉖】

    START_STOP_SYNCHコマンドを投げて見た。 並行してcan.loggerでCAN回線モニタを実施。 DAQパケットの計測ができた。 タイムスタンプ有効設定をしていたため先頭の方にタイムスタンプが埋まっている。 タイムスタンプの後ろから計測データが続く。 今回は0値が取得されている。

  • 【XCP】最小構成のMBD事例 第2章 その171【XCP Basic㉕】

    DAQの開始方法は大きく2パターン。 DAQ list毎に個別開始。 開始可能状態にして複数のDAQ listを同時開始。 今回は後者で実施。 START_STOP_DAQ_LISTコマンドで個別開始/停止と開始可能状態の設定できる。 これでDAQの開始条件は揃った状態となる。

  • 【XCP】最小構成のMBD事例 第2章 その170【XCP Basic㉔】

    SET_DAQ_LIST_MODEコマンドでDAQの計測データ送信ポリシーを設定できる。 TIMESTAMP有無、使用するEvent channel、分周比など。 Event channelと実際の周期はECU側の実装依存。 今回は1:10ms、2:100ms、3:1msとなっている。

  • 【XCP】最小構成のMBD事例 第2章 その169【XCP Basic㉓】

    DAQ listの構造的な準備はできたので、実際にODT_ENTRYを更新していく。 更新するODT_ENTRYを参照するにはSET_DAQ_PTRを使用する。 実際にODT_ENTRYを更新するにはWRITE_DAQを使用する。 WRITE_DAQ実行後は参照するODT_ENTRYは自動的に一個後ろになる。

  • 【XCP】最小構成のMBD事例 第2章 その168【XCP Basic㉒】

    ALLOC_ODT_ENTRYは物理層の都合やODTのフォーマットによる制限がある。 CANの場合だとデータフィールド8byteが制限。 タイムスタンプ等が入ることで計測データを格納する範囲が少なくなる。 ALLOC_ODT_ENTRYを複数回投げてみた。 リソースが枯渇するまで生成は可能。

  • 【XCP】最小構成のMBD事例 第2章 その167【XCP Basic㉑】

    ALLOC_ODTを送信してみた。 ODT1個あたり4byteの管理領域のリソース割り当てがされる。 試しに5個ずつODTを生成してみた。 20個のODT生成時にエラー。 エラー理由はメモリ不足。 1ODTあたり8byteの送信バッファも必要なのでそれも含めてメモリ不足。 この点含めてリソース管理が必要。

  • 【XCP】最小構成のMBD事例 第2章 その166【XCP Basic⑳】

    FREE_DAQコマンドを送信。 ECU内部のDAQ list構造を真っ新にするコマンド。 "とりあえず"一番最初に投げらえる。 ALLOC_DAQコマンドを送信。 生成するDAQ listの数を指定するコマンド。 XCP Basicの場合、DAQ list毎に6byte消費。

  • 【XCP】最小構成のMBD事例 第2章 その165【XCP Basic⑲】

    XCPパケット送受信処理を関数化してみた。 CAN送信は従来通り。 CAN受信でいろいろ判定を追加 タイムアウト追加。 1秒タイムアウト。 CANID判定追加 PID判定追加。 0xFE(エラー)か0xFF(正常)以外はレスポンスとして扱わない。 レスポンスのタイミングでDAQパケットが来ても無視できる。

  • 【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コマンドを送信。無事送信&受信できた。他のコマンドも同様に試してみる。

  • 【XCP】最小構成のMBD事例 第2章 その154【XCP Basic⑧】

    XCP BasicのVisual Studio 2015から2017へのアップグレードは特に何もなかった。ビルドを実施。warningは出ているが、sscanfをsscanf_sにする話。起動オプションがある。XCPsim -hでヘルプを参照可能。デフォルトはCANでオプションでEthernetへの切り替えもできる。

  • 【XCP】最小構成のMBD事例 第2章 その153【XCP Basic⑦】

    XCP Basicのフォルダ構成を確認。 ドキュメント、EULA、Sample、XCP Basicハード非依存コードなどが配置されている。 Sampleに各物理層のポーティングコードが入っている。 XCPsimがPCシミュレーションを想定。 Ethernet(TCP/UDP)かCAN(VN16xx)を物理層と想定。

  • 【XCP】最小構成のMBD事例 第2章 その152【XCP Basic⑥】

    XCP Basicを入手方法。 Vector社のサイトから入手。 インストール。 最初にEULAが出てくる。 インストール先にはXCP Basicのソースコードが展開されるので好きなところでOK。 ビルド環境は恒例のVisual Studio 2017 express。 Virtual CAN Busのインストール。

  • 【XCP】最小構成のMBD事例 第2章 その151【XCP Basic⑤】

    XCP Basic動作までの方針を決めた。 数点、要否が確定できない作業があるが、実際に確認してみてから決める。 実験構成を提示。 CANの制御はPython-CANを使用。 単純な送受信であればお手軽。 恒例のVirtual CAN Busを使用。 物理的な制約を一旦無視して論理的な正しさを求める場合はこれが一番楽。

  • 【XCP】最小構成のMBD事例 第2章 その150【XCP Basic④】

    プロプライエタリ品との差別化のためXCP Basicには機能制限がある。 XcpBasic.cに機能制限について記載されている。 特に大きいのがSTIM使用不可。 STIM使用不可に関してはDOWNLOADで代替可能。 ただし、スループットはどうしても落ちる。 とりあえずの落としどころとしてやむを得ず。

  • 【XCP】最小構成のMBD事例 第2章 その149【XCP Basic③】

    XCPのシミュレーション環境が欲しい。 候補としてはVector社で無償で公開されているXCP basicがある。 XCP basicはEULAとしてはVector社の責が無いことを前提に自由にして良い。 サポートが必要な場合は有償。 XCP ProfessionalやMICROSAR XCPというプロプライエタリ品もある。

  • 【XCP】最小構成のMBD事例 第2章 その148【XCP Basic②】

    ECUの外側の疑似化にXCPを使うってのはインターフェースをXCPにするってことだった。 以前やったBypassとはデータの流れは逆向きになっている。 XCPで直接RAMの読み書きを行うことで物理的なインターフェースの制約を無視できる。 逆に物理的な制約に紐づいた検証はできないという欠点はある。

arrow_drop_down

ブログリーダー」を活用して、KEIさんをフォローしませんか?

ハンドル名
KEIさん
ブログタイトル
シミュレーションの世界に引きこもる部屋
フォロー
シミュレーションの世界に引きこもる部屋

にほんブログ村 カテゴリー一覧

商用