バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はXCP BasicとPyXCPによるRAM書き換えのオーバーヘッドを検討した。
15msはPythonのスレッド周りのオーバヘッド。
残り15msはSET_MTAとDOWNLOADの2回のコマンド発行が原因のようだ。
前者はそもそもPython以外で実現するなどの対策はがあり得るが、
後者はRAMの書き換え方を変えればなんとかなるかも?
登場人物
博識フクロウのフクさん
イラスト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
SET_MTAとDOWNLOAD以外のRAM書き換え方法
SET_MTAとDOWNLOAD以外で効率的なRAM書き換え方法があるような言い方してたけど、結局なんなの?
それはSTIMだ。
あ!
なんか聞き覚えがある!
あれ?
でもSTIMってXCP Basicでは未対応機能じゃなかったっけ?
確かここでそんな話をしていたし、
とりあえずスループットの問題は一旦無視するようなことも言ってたな。
(チッ。覚えてやがったか。)
STIMについてはここでも若干触れてたかな。
STIM対応方法について
太郎くんの言う通り、STIMはXCP Basicでは未対応機能だ。
というわけで対応方法としては以下2通りだ。
- XCP Basicを改造してSTIM対応。
- XCP Basic以外のSTIM対応しているXCPスレーブIPを探す。
ちょっとどっちもイバラの道な気がする・・・。
そうだね。
前者もDAQ listという機構は使いまわせるが、STIMに由来する特殊な仕様は多い。
よって一筋縄ではいかないだろう。
というわけでまずは後者を探してみるってことになるかな。
そう簡単に見つかるのかなー。
まぁ世の中は広い。
XCPというニッチなプロトコルにも対応したPyXCPもあったんだ。
実はXCP Basicとは違うXCPスレーブIPがあってもおかしくはない。
って、ことはまだ当てが無いってことなんだな・・・。
まぁググればきっと出てくるでしょ!
そこまでGoogleが万能な気はしないなぁ。
とくにニッチな領域だと途端に無力化すること多いし。
それは同感。
とりあえず、次回までに何かしら探してくる。
よろしくー。
ソースコードとか
PyXCP関連の実験はここで一旦終了。
よって、使用したコードをJupyterNotebook形式でGithubに上げておく。
まとめ
まとめだよ。
- SET_MTAとDOWNLOAD以外のRAM書き換え方法はSTIM
- しかし、XCP BasicはSTIMは未対応。
- XCP Basicに対してSTIM拡張をするかXCP Basic以外のXCPスレーブIPを探すか。
- とりあえず後者の線でやってみる。
- 見つからなかったら諦めてSET_MTAとDOWNLOADで頑張る方向で。
バックナンバーはこちら。
コメント