【Ethernet】車載ネットワーク その25【lwIP①】

車載ネットワーク

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

はじめに

IPフラグメント対応目的とした場合のlwIP含めたシステム構成の話。

登場人物

博識フクロウのフクさん

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

システム構成

フクさん
フクさん

とりあえず、システム構成を描いてみた。

EthernetInput

太郎くん
太郎くん

BLFからの入力するEthernetInputって関数は何?

フクさん
フクさん

lwIPのEthernetFrame受信時に呼ぶ関数だね。
例えば、受信割込みの時とか。

太郎くん
太郎くん

あ!なるほど。
lwIPからすると、受信割込みが来たって体でEthernetFrameを渡すのか。

フクさん
フクさん

そうそう。

UDP Socket

フクさん
フクさん

ただ、単にEthernetInputにEthernetFrameを入れても、
受信データとしては取り出せない。

太郎くん
太郎くん

え?
じゃーどうするの?

フクさん
フクさん

事前にUDP Socketを生成しておく。

太郎くん
太郎くん

Socket?

太郎くん
太郎くん

あ、そういえな、APIはバークレーSocketって言ってたっけ?

太郎くん
太郎くん

今回のフレームのポート番号は・・・。
2425ポートだから、
そのポートで受信できるようにUDP Socketを事前に生成すればよいのか。

フクさん
フクさん

Yes。

太郎くん
太郎くん

2425ポート云々の話はここで出てきたよ。

マルチキャストグループの参加

フクさん
フクさん

実は、もう一個やることがあるんだけど。

太郎くん
太郎くん

なに?

フクさん
フクさん

今回のフレームはマルチキャストなんで、
マルチキャストグループに参加している体にしておく必要がある。

太郎くん
太郎くん

そうなの?
UDPのポート空けとけばいいよな気がしてたけど。

フクさん
フクさん

マルチキャスト場合、IPアドレスがMACアドレスのグループに紐づいたものになってる。
つなり、送信先IPアドレスがマルチキャストグループ用のIPアドレスになってるんで、
lwIPに該当グループに参加済みであることを教えてあげる必要があるんだよ。

太郎くん
太郎くん

あー。
確かにマルチキャストの時にそんな話あったねー。

マルチキャストグループの参加

太郎くん
太郎くん

で、マルチキャストグループの参加って具体的にはどうするの?

フクさん
フクさん

lwIPにそれようのAPIが用意されているんで、
それを忘れずに呼び出せばOKだな。

太郎くん
太郎くん

なんだー。
もっとややこしい話かと思ったー。

フクさん
フクさん

まぁ知らずにやると、lwIPのコードをガッチリ潜ることになるんでー。

太郎くん
太郎くん

それは嫌だ。

フクさん
フクさん

次回は、実際の環境整備だね。

まとめ

フクさん
フクさん

まとめだよ。

  • lwIPにBLFのEthernetFrameを入れるシムテム構成を描いた。
  • EthernetInputが受信割り込み時に呼び出す関数。
  • 事前にUDP Socketを生成する必要がある。
  • 事前にマルチキャストグループに参加する必要がある。

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

コメント

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