問題タブ [lwip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
891 参照

linux - pc posix (linux) から STM32 / lwip へのネットワークアプリケーションの移植

posix 標準を使用するネットワーク アプリケーションである PC ベースのソース コードを、LWIP スタックを使用して Cortex M4 マイクロコントローラーに移植したいと考えています。ソケット関連の API を見つけましたが、次のインクルードで行き詰まっています。

では、欠落したファイルの C 言語のソース コードはどこにありますか? それらは PC または Web で再生できますか? それらを書き換えることは可能ですか?

前もって感謝します。

0 投票する
1 に答える
333 参照

c - confusion regarding how size calculated for declared one global array in lwip stack

Currently i am trying to port a LWIP ( Light weight TCP/IP stack ) on embedded board.

During looking code i come up with one array declaration ( in memp.c file) which look's me strange declaration i never seen this type of declaration past.

Although it's valid declaration but i am confusing regarding this means how much space it occupy and how can i calculate it? how LWIP_MEMPOOL macro expanded?

Declaration looks like

And

Now let me give you each macro defination used in above array declaration

MEMP_MAX defined here

And here is memp_std.h

In memp_std.h there are many structure name used for sizeof(struct xxx) but i am not able to include definition for all structures. So you can assume it have some size.

Can you explain how the LWIP_MEMPOOL macro used? how the arrays defined? how the size of that array known?

0 投票する
1 に答える
2060 参照

tcp - lwip init ネットワーク インターフェイス

良い一日!

クライアントを作成し、netcat シンプル サーバーに接続したいと考えています。

1)デフォルト設定と#defineでコンパイルされたlib(唯一のもの-いくつかのデバッグ情報を設定しました)2)libをプロジェクトにリンクしました(正常に動作します)3)ubuntuで仮想マシンをセットアップし、netcatを使用して動作させました

これは、ポート 7 (7) をリッスンしていることを意味します。

今のところ大丈夫です。

4) ping と telnet は正常に動作します。netcat はそれらから到達可能であることがわかります。

私のifconfig統計は

5) lwip を使用して記述されたクライアントで netcat サーバーに接続しようとしています。出力は次のとおりです。

完全なリスト:

ここから、問題はNETIFを設定しなかったことだと思い始めました。

しかし、方法がわかりません。

デフォルトで lwip に tap0 を作成させたくないと思います

(させる

)

アプリケーションを localhost または eth1 にバインドしたいのですが、どうすればよいですか? アプリケーションで何が間違っていますか?

ところで - 私がするとき

私のInit関数では、この出力が得られます

そしてそれは落ちる

(通らない…)

いくつかの1を助けることができますか?

0 投票する
1 に答える
1315 参照

sockets - accept() が呼び出された後にソケットのリッスン ポートを変更する方法は?

ソケットがリッスンしているポートを変更したいと思います。問題は、accept() の呼び出しがまだ進行中である限り、それを実行できないことです。accept() が終了して負の値を返すことを期待してソケットを閉じようとしました。しかし、FreeRTOS では発生しません。別のスレッドからソケットを閉じても、accept() は引き続き実行されます。私が思いついた唯一の回避策は、変数にフラグを設定し、TCP 接続を確立し、accept() が終了したらフラグを確認し、新しいポートで bind() を呼び出し、listen() を呼び出すことです。しかし、もっとエレガントな方法があるのではないでしょうか?

0 投票する
1 に答える
2083 参照

tcp - LWIP: TCP_INTERVAL は ACK メッセージの受信とどの程度正確に関連していますか?

組み込みボードから PC へのデータ転送を実装しようとしています。このためには、低遅延通信を使用する必要があり、TCP/IP でイーサネットを使用する必要があります。さらに、lwip スタックを使用しています。

まず、データの小さなパケット (10 KB) を送信する必要があり、中間の ACKS を待たずにできるだけ早く送信する必要があるため、nagle アルゴリズムを無効にしました。Wireshark ログは、これが非常にうまく機能していることを示しています (データ全体が約 1 ミリ秒で PC に送信されています)。

その後、PC が最後の ACK を送信するのに約 200 ミリ秒かかります (最後のセグメントが最大サイズではないため)。

問題は、組み込みプロセッサでは、すべてのデータが ACKED であるというメッセージを lwip がアプリケーションに与えるまで、非常に長い時間がかかることです。TCP_INTERVAL を減らすと (5 としましょう)、速度が大幅に向上します。

なぜ lwip はこのように動作するのでしょうか? Periodic-TCP-Tasks (TCP_INTERVAL に従って呼び出される) は、受信したフレームの処理 (実際にはメインの別の呼び出し) とは何の関係もないと思います。

私の問題を何とか理解できるように述べたいと思います。そうでない場合は、フィードバックをいただければ幸いです。質問を改善できます。

ありがとう!

編集:

さらにデバッグした後、データを送信するプロセスが次の関数呼び出しになることがわかりました。

  • 私の主な呼び出し tcp_write(...)
  • tcp_tmr() は (LwIP_Periodic_Handle() 関数を介して) 複数回呼び出されます。これが 7 回発生します。8 回目の呼び出し中:
  • tcp_output() が呼び出されます。この呼び出しの間、最後の tcp_write() 呼び出しの間に追加されたすべてのセグメントは、tcp_output_segment() を呼び出すことによって送信されます。

したがって、TCP_INTERVAL を減らすと、tcp_tmr() 関数がより迅速に呼び出されるため、もちろんデータがより早く送信されることは明らかです。

しかし、私の質問はまだです:これは通常の動作ですか? lwIP が実際にデータを送信する前にこれほど長い時間待機しているのは少し奇妙に思えます。

0 投票する
1 に答える
4868 参照

c - LwIP の SO_RCVTIMEO オプション

FreeRTOS で LwIP を使用しています。私のプロジェクトは、この URL FreeRTOS with LwIP projectの例に基づいています。また、LPCXpresso バージョン 6 で LPC1769 を使用しています。CMSIS バージョン 2。

LwIP を使用して、UDP ソケットで MP3 ファイルをストリーミングしています。転送は高速ですが、数千回の操作の後で lwip_recvfrom がブロックされることがあります。タイムアウト状態が表示されません。私は何か間違ったことをしていると思います。

次の手順は次のとおりです。

誰かがここで何が悪いのか知っていますか?

0 投票する
0 に答える
930 参照

node.js - node-gyp コンパイル エラー - ハンドルが無効です

lwipモジュールをインストールします (外部のランタイム依存関係なしで画像処理と操作を提供します):

次の出力を受け取ります。

私は現在使用しています:

  • Windows 7 プロフェッショナル 64 ビット
  • ビジュアル スタジオ プレミアム 2013
  • パイソン (2.7)
0 投票する
2 に答える
20349 参照

http - lwIP スタックで単純な HTTP リクエストを送信するにはどうすればよいですか?

質問が関係ない場合は、これを移動/閉じてください。

コア: Cortex-M4

マイクロプロセッサー: TI TM4C1294NCPDT。

IP スタック: lwIP 1.4.1

私はこのマイクロプロセッサを使用してデータのロギングを行っており、次の形式の HTTP リクエストを介して別の Web サーバーに情報を送信したいと考えています。

http://123.456.789.012:8800/process.php?data1=foo&data2=bar&time=1234568789

プロセッサが応答ヘッダーを確認できるようにしたい (つまり、200 OK だった場合や何か問題が発生した場合) - 実際のコンテンツを表示/受信する必要はありません。

lwIP にはマイクロプロセッサ用の http サーバーがありますが、私は反対です (マイクロプロセッサがクライアントです)。

パケットが要求/応答ヘッダーにどのように関連付けられているかがわからないため、実際に情報を送受信する方法がわかりません。