36

次の組み込み TCP / IP スタックのいずれかで特に良い (または悪い) 経験をした人はいますか?

私のニーズは、堅牢で移植しやすいスタックです。コードサイズはそれほど重要ではなく、パフォーマンスは比較的重要ですが、使いやすさと移植性は非常に重要です。

システムはおそらく RTOS を使用しますが、これは未定ですが、私の経験では、ほとんどのスタックは RTOS の有無にかかわらず使用できます。ほとんどの場合、プラットフォームは ARM バリアント (ARM7 または CM3 の可能性が高い) になります。

スタックをイーサネット ドライバーにボルトで固定することについてはあまり心配していないため、選択の優先順位は高くありません。

Linux、RTEMS などの OS からスタックを抽出することにはあまり興味がありません。

また、Interniche、Micrium などの商用サービスにも興味がありません...

スタックにはあらゆる種類の付属品は必要なく、IPv6 も必要なく、その上に何か (Web サーバー、FTP サーバーなど) も必要ありません。 UDP のみを使用しますが、TCP が望ましいいくつかのシナリオを想定できます。

もちろん、私が見逃した他のスタックでの経験も非常に興味深いものです。

お時間とご意見をお寄せいただきありがとうございます。

4

8 に答える 8

17

私は、uIP と lwIP の両方を広範囲に使用してきました。

uIP

  • ブートローダーのような基本的なものだけが必要な場合に最適
  • 小さな足跡。
  • ポーリングを使用するため、3kbit を超えることはありません :-(
  • 「すぐに使用できる」DHCP なし
  • UDP サポートが不十分

lwIP

  • 完全な割り込み駆動が非常に高速 (~ x10)
  • フェールオーバー AutoIP を備えた DHCP を含む
  • マルチキャストによる UDP
  • さらに

編集:
そして、必要がなかったため、RTOSでどちらも使用したことはありません。

于 2009-07-29T12:30:50.713 に答える
11

lwIP の場合は +1。

数年前のプロジェクトでこれをうまく使用し、一般的に非常に信頼できることがわかりました. 私たちはいくつかの問題 (通常は TCP コード内のまれなケース) を見つけて修正し、それをプロジェクトに提出しました。プロジェクトはそれ以来かなり進んでいますが、機能が欠けていることは一般的にわかりませんでした。

ご想像のとおり、RTOS の有無にかかわらず動作します。通常とは異なる DSP コンパイラをサポートするために必要な変更を含め、RTOS を使用してシステムで実行するのに約 1 週間かかりました。おそらくARMでGCCを使用しているので、その努力を避けることができます。

必要な機能よりも多くの機能が含まれていますが、数年後に要件が変更された場合は、より充実したスタックから始めたほうがよいでしょう。

于 2009-07-22T18:23:01.353 に答える
8

lwIP

私は、PPP の上に UDP/IP スタック (TCP なし) が必要な 3G モデムのプロジェクトに取り組みました。uIPとlwIPに絞り込みました。最終的に lwIP を選択したのは、すでに PPP があり (uIP にはありません)、十分な RAM があったためです。

私たちの特定のプロジェクトでは RTOS を使用していませんでした。lwIP は RTOS なしで問題なく使用できました。

私は lwIP コードの移植には直接関与していませんでしたが、モデム ドライバーとのインターフェイスを確立する作業を行いました。以前に TCP/IP の経験があったエンジニアにとって、ポーティングはすべてがスムーズに進むまでに 2 週間かかったというのが私の印象です。lwIP コードは多くの人によってハッキングされており、その結果、荒削りな部分があります (たとえば、誰かがどこかに単独で malloc() を挿入したなど)。独立した検証スイートでテストしました。

要約すると、UDP/IP と PPP のニーズに「適切に機能する」ものでした (ただし、その TCP 機能についてはコメントできません)。

于 2009-07-22T00:34:46.193 に答える
3

Stellaris Cortex-M3 の lwip に満足しています。

LM3S6965 評価ボード用の StellarisWare には、enet_lwip デモが含まれています。これは、ベア メタル上で実行される lwip 上で実行される小さな Web サーバーです。この場合、FreeRTOS はありません。システムは、タイマーとイーサネット割り込みによって駆動されます。Web サーバーをリッピングしてアプリにドロップするのは非常に簡単でした。これを初めて実行するために、lwip の専門家になる必要はありませんでした。

後で、自分のアプリが本質的にアップコール ドリブンであることに気付きました。最初は、ソケットからアップコールへのガスケットがありました。そのレイヤーを、lwip のネイティブ アップコールをアプリのアップコールに変換する、はるかに単純なレイヤーに置き換え、lwip のソケット API を省略しました。これにより、より多くのフラッシュと RAM スペースが節約され、全体がより高速かつシンプルになりました。少し調整して、52K フラッシュと 30K RAM を使用する S2E ボードで実行しました。

于 2009-07-27T21:01:08.710 に答える
0

オープンソースのFNET TCP/IP スタックを試すことができます。

于 2012-10-02T14:13:42.757 に答える
0

Microchip TCP/IP スタックを使用しました。とても満足しています。実装は非常に簡単で、多くのデモコード/チュートリアルが利用可能で、HTTP、tFTP、SMTP、SNTP などの多くのプロトコルをサポートしています。ただし、要件に合わない点は、簡単に移植できないことです。別のアーキテクチャに。実際、スタックのライセンスはこれを明示的に禁止していると思います。マイクロチップは、ハードウェア PIC18、PIC24、および PIC32 のみを使用してスタックを実行することを望んでいるためです。ただし、ENC28J60 でこのスタックの特定の部分を使用できるようにする外部イーサネット コントローラが販売されています。

于 2010-04-01T15:58:01.993 に答える
0

FreeRTOS で Interniche を使用しました。これは本格的なスタックであり、かなりの数の機能をサポートしています。あなたは非商用版を探しているので、私の投票は lwIP です。

于 2010-08-31T04:38:46.117 に答える