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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はUPLOADコマンドをやるかと見せ家変えてSHORT_UPLOADコマンドを実施。
SHORT_UPLOADの特殊な効果を確認するためあえて順番を入れ替えた。

というわけで今回はUPLOADコマンドを試すことになるが、
その時にSHORT_UPLOADの特殊な効果が見れる・・・はず。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

UPLOADコマンドの前のSET_MTA

太郎くん
太郎くん

なんか順番が入れ替わった感じになった気もするけど、
次こそはUPLOADコマンドだね。

フクさん
フクさん

そうね。

太郎くん
太郎くん

アドレス4から7byte分に対してDOWNLOAD_MAXで書き込んでるから
これをUPLOADで
0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB
が、読み出せればOKって感じか。

フクさん
フクさん

うん。
それでDOWNLOAD_MAXとUPLOADの両コマンドが正しい挙動をしている確認となるね。

太郎くん
太郎くん

じゃー、アドレス4にMTAを・・・。

フクさん
フクさん

SET_MTAはいらないよ。

太郎くん
太郎くん

移動させるために・・・。

フクさん
フクさん

SET_MTAはいらないよ。

太郎くん
太郎くん

SET_MTAを送信・・・。

フクさん
フクさん

だから要らないんだってば!!

太郎くん
太郎くん

要らねぇのかよ!!!!

なぜSET_MTAが不要なのか?

太郎くん
太郎くん

で、なんでSET_MTAが要らないの?
いまMTAがどこ参照してるかわからないよ?

フクさん
フクさん

前回SHORT_UPLOADでアドレス0を指定してサイズ4で読み出したじゃん?

太郎くん
太郎くん

そうね。

フクさん
フクさん

SHORT_UPLOADでアドレス0を指定した段階でMTAの参照アドレスも0になって、
4byte読み出しであったことで4byte分参照アドレスが後方へ移動して
現在のMTAはアドレス4を参照している状態になってる。

太郎くん
太郎くん

ほう!
SHORT_UPLOADでもMTAの参照アドレスが変わるのか!!

太郎くん
太郎くん

これが、前回から言ってたSHORT_UPLOADの特殊な効果ってやつか。

フクさん
フクさん

そうそう。
今回はアドレス4から7byte読み出しをするわけだけど、
すでにMTAはアドレス4にあるんで、SET_MTAを発行せずにそのままUPLOADコマンドを発行すればOKだ。

太郎くん
太郎くん

意外と便利な仕様になってるもんだねー。

UPLOADコマンドの発行

太郎くん
太郎くん

で、アドレス4からサイズ7byteの読み出しの電文は?

フクさん
フクさん

これだね。
0xF5, 0x07

太郎くん
太郎くん

随分短いね。
まぁコマンドIDとサイズだけだからそうなるのか。
じゃー、それを送ってみよう。

send_msg = can.Message(arbitration_id=1, extended_id=0, data=[0xF5, 0x07, ])
print('Send msg : %s' % send_msg)
bus.send( send_msg )
recv_msg = bus.recv(timeout=1)
print('Recv msg : %s' % recv_msg)
Send msg : Timestamp:        0.000000   ID: 0001 S DLC: 2 f5 07
Recv msg : Timestamp: 1635334304.114905 ID: 0002 S DLC: 8 ff 55 66 77 88 99 aa bb Channel: 1

XCP Basicのコンソール画面

-> UPLOAD size=7
<- 0xFF data=55 66 77 88 99 AA BB
太郎くん
太郎くん

おー!
ちゃんとDOWNLOAD_MAXで書き込んだデータが返ってきた!

フクさん
フクさん

この仕様を利用して、
SHORT_UPLOAD→UPLOAD×n回
みたいなことをして効率的なメモリダンプが出来たりするね。

太郎くん
太郎くん

なるほど。
メモリダンプか。
確かにこういう仕様の方が便利そうだね。

フクさん
フクさん

これで、メモリアクセス系コマンドは問題無く使えることがわかった。

XCPコマンドのログ

フクさん
フクさん

XCPのメモリアクセス系のログはJupyterNotebook形式でログを取ってある。

実際に動作させて実験したい人は使ってみると良いだろう。

まとめ

フクさん
フクさん

まとめだよ。

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

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました