プロトコルスタック

車載ネットワーク

【Ethernet】車載ネットワーク その34【lwIP⑩】

lwIPのUDP Socket生成についての説明。 内部で固定長メモリプールでメモリ領域の確保をしている。 固定長メモリプールはITRON等のRTOSにも実装されている高速な動的メモリ取得解放のロジック。 公開されているITRON4.0仕様を参照してみるのも良い。
車載ネットワーク

【Ethernet】車載ネットワーク その33【lwIP⑨】

lwIPのリンクアップについて説明。 アップ(UP)が物理層。 リンクアップ(link-up)がデータリンク層。 余談的にリンクローカルアドレスの説明。
車載ネットワーク

【Ethernet】車載ネットワーク その32【lwIP⑧】

lwIPのネットワークインターフェースの初期化について説明。 netif_set_up関数を使用する。 ネットワークインターフェースをUP状態にするもの。 実は呼ばなくてもOKな疑惑があるが、流儀としては呼び出しておくべき。
車載ネットワーク

【Ethernet】車載ネットワーク その31【lwIP⑦】

lwIPのマルチキャストグループの参加について説明。 igmp_joingroup_netif関数を使用。 上記関数を呼び出すとIGMPでグループ参加を通知するためのパケットが送信される。
車載ネットワーク

【Ethernet】車載ネットワーク その30【lwIP⑥】

lwIPのネットワークインターフェースの追加について説明。 netif_add関数を使用する。 引数はIPアドレス、ネットマスク等のIP層の他、データリンク層由来のものもある。 データリンク層初期化関数はコールバック関数initに渡す。
車載ネットワーク

【Ethernet】車載ネットワーク その29【lwIP⑤】

lwIPの初期化について。 lwIPの初期化関数はlwip_init。 lwip_initの内部は#if~#endifで必要最低限の初期化が可能。 include/lwip/opt.hで使用する機能の有効/無効の切り替えができる。
車載ネットワーク

【Ethernet】車載ネットワーク その28【lwIP④】

lwIPをPC上で無理やり動作させる準備の話。 lwIPの制御手順概要を説明。 一般的なSocketと違ってネットワーク関連の初期化も必要。 IPフラグメントはIP層の仕様に組み込まれているので利用側は特に何もしなくてOK。
車載ネットワーク

【Ethernet】車載ネットワーク その27【lwIP③】

lwIPをPC上で無理やりビルドした時の話。 lwIPをPC上でビルドした。 修正はarch/cc.hに起因するもの。 arch/cc.hはコンパイラ依存部の辻褄合わせようのヘッダファイル。
車載ネットワーク

【Ethernet】車載ネットワーク その26【lwIP②】

lwIPをPC上で無理やり動作させる準備の話。 lwIPのソースコードを入手。 開発環境はVisualStudio 2017 express。 community版だといろいろ利用する上で制約があるので。
車載ネットワーク

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

IPフラグメント対応目的とした場合のlwIP含めたシステム構成の話。 lwIPにBLFのEthernetFrameを入れるシムテム構成を描いた。 EthernetInputが受信割り込み時に呼び出す関数。 事前にUDP Socketを生成する必要がある。 事前にマルチキャストグループに参加する必要がある。