バックナンバーはこちら。
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ドライバライブラリは受信やエラーのイベントをイベントオブジェクト経由で通知してくるんだよね。
お?おう?
さらに、送信した結果は受信として回り込んでくるんで、
送信完了も受信APIで拾ってあげる必要がある。
(あかん。もう意味わからん)
(まー意味わからんよねー)
まぁ実際スレッド部分のコードを次回までに用意しておくよ。
まとめ
まとめだよ。
- MCAL-CANDRVを実現するには受信割り込みと送信完了割り込みの再現が必要。
- XLドライバライブラリは受信、送信済み、エラーのイベントをWin32APIのイベントオブジェクト経由で通知する。
- よって、Win32APIによるスレッド、イベントオブジェクトのハンドリング知識が必要。
バックナンバーはこちら。
コメント