Python

事例

【XCP】最小構成のMBD事例 第2章 その196【AUTOSAR②】

LGPLはライブラリ化すればライセンス汚染をある程度食い止められる。 しかし、完全に食い止められるわけではなくどうしてもリバースエンジニアリングを許容する条件は付く。 これは動的リンクであっても変わらない。 AUTOSARのXCP実装、STIMの実装を学べるという利点があるので、使ってみる方針で行く。
事例

【XCP】最小構成のMBD事例 第2章 その195【AUTOSAR①】

XCP Basicとは別のXCPスレーブIPを見つけてきた。 その名はAUTOSAR-XCP。 以前やったCanTp、DCMと同じくAUTOSAR-BSWのXCP仕様に準拠したもの。 ライセンスがLGPL。 よって、条件によってはコード開示が必要になり、商用利用としては難しく場合がある。
事例

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

SET_MTAとDOWNLOAD以外のRAM書き換え方法はSTIM しかし、XCP BasicはSTIMは未対応。 XCP Basicに対してSTIM拡張をするかXCP Basic以外のXCPスレーブIPを探すか。 とりあえず後者の線でやってみる。 見つからなかったら諦めてSET_MTAとDOWNLOADで頑張る方向で。
事例

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

XCP BasicとPyXCPは微妙だった?ってことはない。 計測やちょっとしたキャリブレーションであれば問題無く使える。 HILSもどきと相性が悪いだけ。 オーバーヘッドを検討。 15msはSET_MTAとDOWNLOADの2回のコマンド発行分。 ここを何とかすればもう少しマシになりそう。
事例

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

DAQパケットを受信しながらSET_MTA、DOWNLOADのコマンド送信してみた。 一応動いた。 が、DAQパケットの吸い上げのリアルタイム性が若干悪い。 20~30[ms]程度の遅れがある。 Pythonでやる以上、やむを得ない問題ではあるが、もう少し手が無いか考える必要はありそう。
事例

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

PyXCPでDAQパケットを受信しながらSET_MTA、DOWNLOADのコマンド送信を行う実験。 XCP Basic側は問題なくできることは分かってるのでPyXCP側メインの実験。 一応PyXCP内コード的には大丈夫そう。 実験コードはDAPパケット受信ループ内で0.05秒周期でSET_MTA、DOWNLOAD発行。
事例

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

DAQパケットの取得方法の概要説明。 transport層に相当するクラスでdaqQueueが定義されている。 このdaqQueueに自動的にDAQパケットがキューイングされる仕組み。 上記仕組みはJSONコンフィグレーションのCAN_USE_DEFAULT_LISTENER trueでないと使えない点に注意。
事例

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

DAQ起動すべく以下のコマンドに相当するメソッドを実行。 SET_DAQ_LIST_MODE。 START_STOP_DAQ_LIST。 START_STOP_SYNCH。 狙い通りDAQ起動はした。 CAN回線上でDAQパケットが流れていることが確認できた。 しかし、PyXCP上でDAQパケットを確認する術が不明。
事例

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

ODT_ENTRYをnamedtupleを使ってデータ管理してみた。 今回は一個しかないのでほぼ効能はないが、ODT_ENTRYが増えてきた際には大きな効能が見込めそう。 実際にSET_DAQ_PTR、WRITE_DAQ実施。 問題なく動作。 毎回SET_DAQ_PTRを投げるようなコードになってるが、とりあえずOK。
事例

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

WRITE_DAQの前にODT_ENTRYのデータ管理の便利な方法について説明。 namedtupleと使う。 tupleは異なるデータを一組に管理する手法や構造。 namedtupleはtupleの各要素に明示的に名前を付けられるようにしたもの。 管理のし易さを見やすさの両方が得られる。