【上流検証】最小構成のモデルベース開発事例 その39【Bypass⑤】

事例

バックナンバーはこちら

スポンサーリンク

はじめに

今回はASAM XCPのCTOパケットのCMDについての話。

スポンサーリンク

登場人物

博識フクロウのフクさん

イラスト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

スポンサーリンク

各種CMD

フクさん
フクさん

そろそろ具体的な中身に話になるよ。

太郎くん
太郎くん

まだ、フレーム構成の話しかしていないもんね。
フレーム構成だけで2回も使うとは。

フクさん
フクさん

まぁフレーム構成にバリエーションがあるのってあんまり無いもんね。
今回は実際のCMD (Command Packet)の話なんで、
XCPが何ができるのかがちょっと分かると思うよ。

太郎くん
太郎くん

(ちょっと?まぁおとなしく聞いてみよう・・・)

フクさん
フクさん

全てでは無いが、主要なCMDをリスト化すると以下があるよ。

CommandPID説明
CONNECT0xFFセッション確立
DISCONNECT セッション破棄0xFEセッション破棄
GET_STATUS0xFD状態取得(DAQ動作中等の確認)
SYNCH0xFCエラーハンドリング時の同期用
SET_MTA0xF6MTA(MemoryTransferAddress)の設定
UPLOAD0xF5MTAで指定したメモリ領域の取得
SHORT_UPLOAD0xF4アドレス指定&メモリ領域取得
DOWNLOAD0xF0MTAで指定したメモリ領域へ書き込み
SHORT_DOWNLOAD0xEDアドレス指定&メモリ領域書き込み
SET_DAQ_PTR0xE2DAQポインタの設定
WRITE_DAQ0xE1DAQポインタへの書き込み
SET_DAQ_LIST_MODE0xE0DAQリストとEventChannelの紐づけ
START_STOP_DAQ_LIST0xDEDAQリストの送出開始/停止/同期開始の選択
START_STOP_SYNCH0xDDDAQリスト同期開始/同期停止
FREE_DAQ0xD6DAQリストの解放
ALLOC_DAQ0xD6DAQリストの確保
ALLOC_ODT0xD5DAQリストにぶら下げるODTの確保
ALLOC_ODT_ENTRY0xD3ODTにぶら下げるODT entryの確保
太郎くん
太郎くん

MTAって何?

フクさん
フクさん

C言語のポインタみたいな概念だね。
アドレス指定出来て、しかもUPLOADやDOWNLOADを実施すると勝手にサイズ分インクリメントされる。

太郎くん
太郎くん

“*p++”みたいな感じ?

フクさん
フクさん

そうだね。
勝手にインクリメントしてくれるんでメモリダンプのようなことが効率的にできる。

太郎くん
太郎くん

似たような感じでSHORT_UPLOAD、SHORT_DOWNLOADってのがあるけど、これの存在意義は?

フクさん
フクさん

こっちは、事前にSET_MTA無しで一回のCMDで読み書きできる。
リアルタイムモニタに有効なCMDだね。

太郎くん
太郎くん

なるほど。
UPLOADで同じアドレスを参照しようとすると、

毎回SET_MTAを発行するから効率が悪くなるのか。

太郎くん
太郎くん

あとはDAQ関係がさっぱりだなぁ。

スポンサーリンク

DAQリスト

フクさん
フクさん

これを理解するにはDAQリストの概念を理解する必要がある。

太郎くん
太郎くん

うん。なんか避けて通れない感は半端ない。

フクさん
フクさん

なんとなく察したかもしれないけど、

DAQリストは階層構造になっている。

太郎くん
太郎くん

うん。

CMDの説明を見た感じだと
DAQリスト→ODT→ODTentryって関係になってるよね。

フクさん
フクさん

そのとおり。
DAQリストが一つのイベントに紐づいたデータの集合体。
ODTがDAQリストを複数のフレームに分割する際の1フレーム分の定義。
ODTentryが実際のデータのアドレスやサイズの情報になる。
絵に描くとこんなん。

太郎くん
太郎くん

で、このデータの塊はどういう使い方をするの?

フクさん
フクさん

それは次回かな。

太郎くん
太郎くん

ってことは、

そこそこのボリュームがあるのか・・・。

スポンサーリンク

まとめ

フクさん
フクさん

まとめだよ。

  • CMDだけでメモリの読み書きはできる。
    • その場合、MTAという概念が重要になる。
  • メモリダンプに向いたUPLOAD、DOWNLOAD。
  • リアルタイムモニタに向いたSHORT_UPLOAD、SHORT_DOWNLOAD。

バックナンバーはこちら

コメント

タイトルとURLをコピーしました