バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO-TPのシミュレーションをしよう。のシリーズ。
AUTOSAR CanTpの前にMCAL-CANDRVを解決する必要がある。
XLドライバライブラリでMCAL-CANDRVを実現するにあたって大丈夫じゃない状況。
だったり、
XLドライバライブラリで受信割り込みと送信完了割り込みの実現方法。
だったり。
登場人物
博識フクロウのフクさん
![](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
MCAL-CANDRV相当
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、MCAL-CANDRVを実現するにあたって、
XLドライバライブラリだとなんか大丈夫なような大丈夫じゃないような発言してたよね?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
結果的には大丈夫なはずなんだけど、
そのままやるとたぶん大丈夫じゃない。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」11アップ.png)
いや、だからそこをハッキリしてよ!
XLドライバライブラリでMCAL-CANDRVを実現するにあたって大丈夫じゃない状況
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
端的に言うと、割り込み的な振る舞いの実現が必要ってことだね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
割り込み?
受信割り込みとかの割り込み?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そうそう。
XLドライバライブラリ経由でCANの受信、送信はできるんだけど、
割り込み相当が無いんだよね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
割り込みを見ないじゃダメなの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
うーん、
最悪エラー割り込みは無視してもいいと思うんだけど、
受信割り込みと送信完了割り込みは欲しいかな。
XLドライバライブラリで受信割り込みと送信完了割り込みの実現方法
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
じゃー、CanTpはvirtual CAN Busでは使えないってこと?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ一応なんとかなる方法はあるけど。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」11アップ.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)
そうそう。
XLドライバライブラリは受信やエラーのイベントをイベントオブジェクト経由で通知してくるんだよね。
![](https://www.simulationroom999.com/blog/wp-content/uploads/cocoon-resources/blog-card-cache/62becbf9e66edbd7a674a2191e28faef.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
お?おう?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
さらに、送信した結果は受信として回り込んでくるんで、
送信完了も受信APIで拾ってあげる必要がある。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
(あかん。もう意味わからん)
![フクさん](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/指差しフクロウ.png)
まとめだよ。
- MCAL-CANDRVを実現するには受信割り込みと送信完了割り込みの再現が必要。
- XLドライバライブラリは受信、送信済み、エラーのイベントをWin32APIのイベントオブジェクト経由で通知する。
- よって、Win32APIによるスレッド、イベントオブジェクトのハンドリング知識が必要。
バックナンバーはこちら。
コメント