読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

LPCXpresso NXP LPC1769のIP通信スタック

LPCXpresso NXP LPC1769のIP通信。
FreeRTOSの制御下での受信能力についてのレポートです。

公式のデータ

まず、公式のレポートから。
32bitmicro

このレポートによると、無負荷時で12MB/s、一般的なシナリオで7MB/sとあります。つまり、80Mbps程度は出せますよ。ということでしょう。

レポートは送信能力に関するものですが、受信能力についても概ね同じ程度だとして、FreeRTOS管理下のパケット受信能力を見積もります。

受信性能の理想値と、必要な処理能力

受信性能の理想値は、送信性能と同じ10MB/s(80Mbps)とします。
理想値を達成するのに必要な処理性能を計算します。

RXバッファ=1500×3=4.5KB、スループット10MB/sの場合、10[M/s]/4.5K=2222[Hz]

4.5KのRXバッファを、2kHz(0.45ms間隔)で処理すれば、この速度は達成できるようです。

FreeRTOS管理下での処理能力

FreeRTOSのタスクスイッチは、通常10msに設定されています。
つまり、1秒間に受信できるパケットは、TX=3の場合に、最大でも450KBになり、3.6Mbps程度の速度が限界になります。

#実際の計測値を書く。

実際には、ほとんどの場合、瞬間的に3.6Mbpsを超えてもうまく動作します。しかし、タイミングによってはパケットロストが発生することがありました。

#上の図では、1ms以内に4パケットを受信して、RSTパケットをロストしています。

まとめ

FreeRTOS下でIPスタックを稼動させる場合には、送信側の速度を3Mbps程度に抑えたほうがよさそうです。

速度を向上させる方法は、RXバッファを増やしたり、チェック間隔を短くしたり、受信を割り込み処理に切り替えるなどがあります。