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