バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
XCP BasicをPCシミュレーションする場合、
PCならではの課題がある。
主に「各変数のアドレスが起動毎に変わる」と言う点。
これに関しては「配列定義して配列先頭を0アドレスとする」という対処をすることとした。
これらに対する改造をXCP Basicに入れていく。
登場人物
博識フクロウのフクさん

イラスト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_cfg.hの修正

XCP Basicの修正をしていくわけだけど、
まずはxcp_cfg.hの修正からかな?

そうだね。

どこに何をすれば良いのかな?
xcp_cfg.hを見た感じだと、いろいろdefine定義されているファイルっぽいけど。

修正内容としては以下を追記すればOKだ。
#define XCP_ENABLE_CALIBRATION
#define XCP_ENABLE_MEM_ACCESS_BY_APPL

これだけ?!

で、それぞれどういう効能があるの?
XCP_ENABLE_CALIBRATION

XCP_ENABLE_CALIBRATION
は、XCPのDOWNLOAD系コマンドを有効にするものだ。

DOWNLOADというと書き込み系のコマンドだね。

そうそう。
DOWNLOAD系という言い方をしたが、
XCP Basicに限っていうと、DOWNLOADとDOWNLOAD_MAXが有効になる
他にはSHORT_DOWNLOAD、DOWNLOAD_NEXTというのもあるが、これらは未対応だ。

DOWNLOADとDOWNLLOAD_MAXって何が違うんだっけ?
DOWNLOADとDOWNLOAD_MAX

書き込みデータ長が乗ってるのがDOWNLOAD。
書き込みデータ長が無くて無条件にMAX_CTO-1分のサイズを書き込むのがDOWNLOAD_MAXだな。

書き込みデータ長が指定できないDOWNLOAD_MAXって使い勝手悪くない?

まぁ目的次第かな?
例えば1Kbyteのメモリ空間を無条件に書いていくことを想定すると
DOWNLOAD_MAXの方が1byte分多く書けるってのはあるな。
CANだと1フレームに8byteしか乗らないんで、
DOWNLOADだとコマンド番号、データ長で2byte持っていかれて最大で6byte。
DOWNLOAD_MAXだとコマンド番号の1byteが持っていかれて最大で7byteを書き込める。

6byteと7byteだとあまり大きな差にはならなそうだけど。

単純計算で14%の速度向上にはなるかな?
例えば、書き込みに10秒かかる場合、8.5秒くらいまで短縮される・・・。
感じ?

そういう言い方されると効能があるように聞こえるから不思議だ。

確かにあまり積極的に使用されるコマンドでは無いってのは同意だ。
まとめ

まとめだよ。
- xcp_cfg.hの修正は以下のdefine定義を追加するだけ。
- XCP_ENABLE_CALIBRATION。
- XCP_ENABLE_MEM_ACCESS_BY_APPL。
- XCP_ENABLE_CALIBRATIONはDOWNLOADとDOWNLOAD_MAXが有効になる。
- SHORT_DOWNLOAD等は使用不可。
バックナンバーはこちら。
コメント