stm32のEthernet MAC
簡単なUDP/IPスタックを実装して、PCとデータのやり取りをする。
まあまあ動くものはできているんだけど、色々ブラッシュアップ。
送信バッファを多重化して、転送速度を稼ぎたい、と思って色々トライ。
フルスペックのTCP/IPプロトコルスタックは、色々な理由で使いたくない。
まあ、やりたいことは少ない/大したことじゃないのに、
リソースを食われたくない、とかまあありがちな理由。
さりとて速度自体は欲しいので、ハードウエア的に用意されている
DMAだのなんだの、高速化のための機能は十分使いたい
この辺は自前でスタック作りたい理由でもあるな...
どうにも、この辺りになってくると、参考にできるドキュメントが少ない。
そりゃま、テクニカルシートには最低限の事しか書かない
(ボリューム的に書けない)し、これ以上詳しいことは、
実際のコード見てね、って事だろうから、まあ仕方ない。
TCP/IPプロトコルスタック、まともに書いたら、
最低限機能する だけ としても、サンプルコードとかの
ボリュームに収まらないだろうしね。
なので、リファレンスマニュアルとwiresharkあたりで
実機デバッグ(トライ?)に励むことになる。
------
受信バッファと送信バッファ、それぞれ別に管理されているんだけど
それ用のディスクリプタの構造、というかバッファの取り扱いが
送受信で微妙に違う(処理済みフラグに対する挙動と言うか...)
これに気づけなかったので、送信ディスクリプタ/バッファが
ずっと一つしか使えてなかったんだけど、やっと理解できたようだ。
とりあえず、4つのバッファを順番に使ってパケット送信
出来るようになった。
これで、ようやく他の所も進められる。
まあ、楽しいんだけど、時間が無限に溶けるな...
| 固定リンク | 0
コメント