バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回までで、AUTOAR-XCPのコンフィグレーションが終わったところ。
Xcp_Cfg.hで基本的な振る舞いを定義し、
Xcp_Cfg.cでイベントチャンネルやSegmentに関連するデータ構造を定義。
これで一応動く状態になったはずなので、
XCP basic、PyXCPの時のように動作確認していく。
登場人物
博識フクロウのフクさん
イラスト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
AUTOSAR-XCPの動作確認
ソースコードのPCシミュレーション向け修正とAUTOSAR関連のコンフィグレーションが終わったから、後は動かすだけだねー。
やることはXCP Basic、PyXCPでやったことをそのままやっていくだけなので、巻き気味に進めよう。
XCPのリクエストとしてはPyXCPを使う感じ?
そうだね。
そっちの方が楽そうだ。
以前も書いたが、以下がXCPコマンドを投げる前のPyXCPに対してのコンフィグレーションや初期化だ。
PyXCPのコンフィグレーションや初期化
from io import StringIO
from pyxcp.config import readConfiguration
from pyxcp import transport
from pyxcp.transport.candriver.pc_vector import Vector # "CAN_DRIVER": "Vector"を指定する場合に必要
from pyxcp.master import Master
from collections import namedtuple
import time
JSON = """{
"TRANSPORT": "CAN",
"CAN_DRIVER": "Vector",
"CAN_USE_DEFAULT_LISTENER": true,
"CHANNEL": "0",
"CAN_ID_MASTER": 2,
"CAN_ID_SLAVE": 1,
"CAN_ID_BROADCAST": 256,
"MAX_DLC_REQUIRED": false,
"CREATE_DAQ_TIMESTAMPS": true,
"SERIAL": 0,
"BITRATE": 500000,
"APP_NAME": "PyXCP-CAN"
}"""
CONF_JSON = StringIO(JSON)
CONF_JSON.name = "conf_can_vector.json"
CONFIG = readConfiguration(CONF_JSON)
xm=Master('can',config=CONFIG)
ここ以前と一緒だね。
まぁ今回はSTIMが出てくるまでは全部一緒だと思うよ。
CONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFO
一気にCONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFOを済ませてしまおう。
# CONNECT
conn = xm.connect()
print(conn)
# GET_STATUS
status=xm.getStatus()
print(status)
# SYNCH
res=xm.synch()
print(res)
# GET_COMM_MODE_INFO
CommModeInfo=xm.getCommModeInfo()
print(CommModeInfo)
結果
# CONNECT
Container:
resource = Container:
dbg = False
pgm = False
stim = True
daq = True
calpag = False
commModeBasic = Container:
optional = True
slaveBlockMode = False
addressGranularity = (enum) BYTE 0
byteOrder = (enum) INTEL 0
maxCto = 8
maxDto = 8
protocolLayerVersion = 16
transportLayerVersion = 16
# GET_STATUS
Container:
sessionStatus = Container:
resume = False
daqRunning = False
clearDaqRequest = False
storeDaqRequest = False
storeCalRequest = False
resourceProtectionStatus = Container:
dbg = False
pgm = False
stim = False
daq = False
calpag = False
sessionConfiguration = 0
# SYNCH
bytearray(b'\x00')
# GET_COMM_MODE_INFO
Container:
commModeOptional = Container:
interleavedMode = False
masterBlockMode = False
maxBs = 99
minSt = 0
queueSize = 99
xcpDriverVersionNumber = 16
CAN回線のログ
そしてCAN回線ログ
# CONNECT
0.000000 1 1 Rx d 2 FF 00
0.003645 1 2 Rx d 8 FF 0C 80 08 08 00 10 10
# GET_STATUS
0.068280 1 1 Rx d 1 FD
0.069255 1 2 Rx d 6 FF 00 00 00 00 00
# SYNCH
0.095945 1 1 Rx d 1 FC
0.097198 1 2 Rx d 2 FE 00
# GET_COMM_MODE_INFO
0.130867 1 1 Rx d 1 FB
0.132080 1 2 Rx d 8 FF 00 00 00 63 00 63 10
当然と言えば当然なのかもしれないけど、
バッチリ動いてるね。
まとめ
まとめだよ。
- AUTOSAR-XCPの動作確認開始。
- XCPコマンドはPyXCPを使って実施。
- XCP Basic、PyXCPで散々やったところなので巻き気味で推進。
- 一気にCONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFOを実施。
- 当然ながら問題無く動作。
- CAN回線ログも一緒に確認。
バックナンバーはこちら。
コメント