【CanTp】車両診断通信 その29【シミュレーション⑯】

【CanTp】車両診断通信 その29【シミュレーション⑯】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

ISO-TPのシミュレーションをしよう。のシリーズ。
AUTOSAR CanTpの前にMCAL-CANDRVを解決する必要がある。

XLドライバライブラリでMCAL-CANDRVを実現するにあたって大丈夫じゃない状況。
だったり、
XLドライバライブラリで受信割り込みと送信完了割り込みの実現方法。
だったり。

登場人物

博識フクロウのフクさん

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

MCAL-CANDRV相当

太郎くん
太郎くん

で、MCAL-CANDRVを実現するにあたって、

XLドライバライブラリだとなんか大丈夫なような大丈夫じゃないような発言してたよね?

フクさん
フクさん

そうそう。
結果的には大丈夫なはずなんだけど、
そのままやるとたぶん大丈夫じゃない。

太郎くん
太郎くん

いや、だからそこをハッキリしてよ!

XLドライバライブラリでMCAL-CANDRVを実現するにあたって大丈夫じゃない状況

フクさん
フクさん

端的に言うと、割り込み的な振る舞いの実現が必要ってことだね。

太郎くん
太郎くん

割り込み?
受信割り込みとかの割り込み?

フクさん
フクさん

そうそう。
XLドライバライブラリ経由でCANの受信、送信はできるんだけど、
割り込み相当が無いんだよね。

太郎くん
太郎くん

割り込みを見ないじゃダメなの?

フクさん
フクさん

うーん、
最悪エラー割り込みは無視してもいいと思うんだけど、
受信割り込み送信完了割り込みは欲しいかな。

XLドライバライブラリで受信割り込みと送信完了割り込みの実現方法

太郎くん
太郎くん

じゃー、CanTpはvirtual CAN Busでは使えないってこと?

フクさん
フクさん

まぁ一応なんとかなる方法はあるけど。

太郎くん
太郎くん

それは早く教えてほしいと何回言ったか!

フクさん
フクさん

スレッドを使う。

太郎くん
太郎くん

あーマルチスレッドとかのスレッド?

フクさん
フクさん

そうそう。
XLドライバライブラリは受信やエラーのイベントをイベントオブジェクト経由で通知してくるんだよね。

Event Objects (Synchronization) - Win32 apps
An event object is a synchronization object whose state can be explicitly set to signaled by use of the SetEvent functio...
太郎くん
太郎くん

お?おう?

フクさん
フクさん

さらに、送信した結果は受信として回り込んでくるんで、
送信完了も受信APIで拾ってあげる必要がある。

太郎くん
太郎くん

(あかん。もう意味わからん)

フクさん
フクさん

(まー意味わからんよねー)

フクさん
フクさん

まぁ実際スレッド部分のコードを次回までに用意しておくよ。

まとめ

フクさん
フクさん

まとめだよ。

  • MCAL-CANDRVを実現するには受信割り込みと送信完了割り込みの再現が必要。
  • XLドライバライブラリは受信、送信済み、エラーのイベントをWin32APIのイベントオブジェクト経由で通知する。
    • よって、Win32APIによるスレッド、イベントオブジェクトのハンドリング知識が必要。

バックナンバーはこちら。

コメント

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