バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回まででXCP Basicの基本的な実装が完了したところ。
事前にCONNECT、GET_STATUS、SYNCのような非メモリアクセス系のコマンドの動作確認はしたが、
メモリアクセス系はまだやっていない。
というわけで今回からメモリアクセス系のコマンドの実験を始める。
登場人物
博識フクロウのフクさん
イラスト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
メモリアクセス系コマンド
一応、前回でメモリアクセス可能な改造はできたから、
早速動作確認だね。
そうだね。
んで、メモリアクセス系コマンドと言うと何があるんだっけ?
XCP Basicで使用できるは以下だな。
- SET_MTA
- DOWNLOAD
- DOWNLOAD_MAX
- SHORT_UPLOAD
- UPLOAD
これら以外にも読み出し側でDAQというのもサポートしているが、これは一旦後回しにしよう。
だいぶ以前にやった記憶だけうっすらとあるな。
確かここら辺で聞いた気がする。
とりあえず、非メモリアクセス系コマンドの時のように一個ずつ試していこう。
事前処理
各種コマンドを実施する前にPython-CANの初期化とCONNECTまで済ませておこう。
import can
bus = can.interface.Bus(bustype='vector', channel='1', bitrate=500000)
send_msg = can.Message(arbitration_id=1, extended_id=0, data=[0xFF, 0x00, ])
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 ff 00
Recv msg : Timestamp: 1635332505.098104 ID: 0002 S DLC: 8 ff 04 80 08 08 00 01 01 Channel: 1
SET_MTA
SET_MTAは書き込み、または読み出しのアドレスを事前に指定するコマンドだ。
今回は0番地を指定する。
以下のように発行すればOKだ。
send_msg = can.Message(arbitration_id=1, extended_id=0, data=[0xF6, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, ])
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: 8 f6 00 00 ff 00 00 00 00
Recv msg : Timestamp: 1635334304.014865 ID: 0002 S DLC: 1 ff Channel: 1
XCP Basicのコンソール画面
-> SET_MTA addr=00000000h, addrext=FFh
<- 0xFF
応答としてはOKなのかな?
そうだね。
SET_MTAはXCPスレーブ側が内包しているMTA(Memory Transfer Address)を書き換えるだけのコマンドなので
この段階ではメモリの読み書きは発生しない。
とりあえず、こんな感じで1コマンドずつ試していけばOKってことだね。
まとめ
まとめだよ。
- XCP Basicがサポートしているメモリアクセス系コマンドを列挙。
- SET_MTA。
- DOWNLOAD。
- DOWNLOAD_MAX。
- SHORT_UPLOAD。
- UPLOAD。
- Python-CAN初期化とCONNECTコマンドを発行してからSET_MTAコマンド発行。
正常応答あり。
バックナンバーはこちら。
コメント