バックナンバーはこちら。
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にGET_STATUSコマンドを送ってみる
前回の続きってことで、
次はGET_STATUSコマンドを送ってみよう。
パケットとしては0xFDを送ればOKだ。
じゃー前回のCONNECTコマンドと同じように送ればOKか。
send_msg = can.Message(arbitration_id=1, extended_id=0, data=[0xFD, ])
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: 1 fd
Recv msg : Timestamp: 1634994335.163173 ID: 0002 S DLC: 6 ff 20 00 08 00 00 Channel: 1
XCP Basicコンソール画面
-> GET_STATUS
<- 0xFF sessionstatus=20h, protectionstatus=00
GET_STATUSも問題ないようだね。
SYNCコマンドを送ってみる
次はSYNCコマンドだねー。
0xFCを送ればOKだ。
じゃー同じように。
send_msg = can.Message(arbitration_id=1, extended_id=0, data=[0xFC, ])
print('Send msg : %s' % send_msg)
bus.send( send_msg )
recv_msg = bus.recv(timeout=1)
print('Recv msg : %s' % recv_msg)
これは・・・応答はあったようだけど、
0xFFじゃないからエラー応答?
Send msg : Timestamp: 0.000000 ID: 0001 S DLC: 1 fc
Recv msg : Timestamp: 1634994499.259418 ID: 0002 S DLC: 2 fe 00 Channel: 1
XCP Basicのコンソール画面
-> SYNC
<- 0xFE 0x00
あー、SYNCコマンドは必ず
「Command processor synchronization.」
↓
「コマンドプロセッサの同期。」
で0x00というエラーコードが返るんだよ。
エラーコードと言うカテゴリに入ってはいるが、
正常応答と思って良い。
ほう。
そうなっているのか。
これで現時点で試したいコマンドは試せたな。
Jupyter Notebook
今回はJupyter Notebook経由でXCPコマンドの送受信をしたんで、
その時のipynbをGithubに上げておこう。
まとめ
まとめだよ。
- XCP BasicにGET_STATUSコマンドを送ってみた。
- 問題無く応答あり。
- 次にSYNCコマンドを送ってみた。
- 応答があったがエラー応答?
- 実は「コマンドプロセッサの同期。」を示す0x00というエラーコードで通常応答になる。
- 応答があったがエラー応答?
- メモリ非依存のコマンド確認は取れた状態。
バックナンバーはこちら。
コメント