問題タブ [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.
c - udp データを送信する空のソース ポート (lwip、Cortex M3、Stellaris LM3S6965 評価ボード)
Cortex M3、Stellaris® LM3S6965 評価ボードを使用しています。UDP パケットを PC に送信しています。私はwiresharkでそれをチェックしたので、それはうまくいきます。しかし、私が見ているのは、ソースポートがないということです。そして、これを解決する方法がわかりません。
この関数を呼び出して、udp パケットを送信します
パケットの Wireshark の例: (ここをクリックして拡大)
javascript - LwIP サーバーを使用したストリーミング データ
LwIP サーバー (v1.2) を実行している組み込みシステムがあります。データ配列をクライアント側の JavaScript にストリーミングできるようにする必要がありますか? Chrome といくつかの HTML5 機能の使用を検討しているため、WebSocket の使用を提案する人もいます。LwIP フレームワークでこれらを使用するためにどこから開始する必要があるか知っている人はいますか? どんな助けでも大歓迎です!
api - lwip API を使用して小さな lwip パケットをすぐに送信できない
ST Cortex M3 デバイスでサーバーを作成しています。lwip API と FreeRTOS を使用しています。すべてが機能していますが、応答時間はかなりずれています。現在、lwip 1.3.2 と FreeRTOS 7.3 を使用しています。
単一のクライアントがサーバーに接続し、タイムクリティカルなデータを頻繁に送信する必要があります。これらのパケットは 6 バイト程度です。それ以外の場合は、20K 以上を送ります。
私が抱えている問題は、これらの小さなパケットが送信されるのに永遠にかかるように見えることです. これは、lwip がより効率的な送信を行うために、より多くのデータがキューに入れられるのを待っているためだと思います。データが送信されるまで 2 ~ 3 秒待つことはできません。クライアントは、名目上数マイクロ秒またはミリ秒でデータを期待しています。
lwip_send と lwip_write を使用してみました。(一方が他方と同じで、最後にフラグが渡されることを理解しています。試してみる必要がありました...) ソケットに TCP_NODELAY を設定しようとしましたが、役に立ちませんでした。SO_SNDLOWAT を '1' に設定しようとしましたが、これは常に -1 を返すため、サポートされていないと思います。
TCP RAW を使用してすべてのコードをやり直したくありません。TCP RAW モード以外で tcp_output() 関数を呼び出す方法はありますか? 物事をスピードアップする方法はありますか、それとも小さなパケットで lwip TCP がどれだけ遅いのでしょうか?
あらゆる提案を歓迎します。ありがとう。
--EDIT-- また、送信の準備ができたら、FreeRTOS の TX タスクが最高の優先度であることを確認します。lwip_send/write を呼び出す時点まで、他のタスクは実行されていません。
c - lwip microblaze echo の例のカスタマイズ
エコーの例では、データをエコーバックするために同じパケットを再度送信するこの関数があります。ユーザーが送信するものは何でも固定データを送信するように変更したかったので、これを変更しました:
これに:
そして、アプリケーションを実行しても何もエコーバックしません。なぜですか?
c - microplaze アプリケーションの lwip バッファー
受信コールバック関数で pbuff のペイロードをチェックすることで、microplaze に送信されたデータを確認して取得するだけで、microplaze がメッセージをエコーバックしていることがわかる場所で動作しますが、mmicroplaze から端末にそれらを印刷しようとすると (printf() を使用) Cコードで)ここで何か奇妙なことが起こったのは出力です:
それは何ですか、なぜですか、それは3文字を超えるものに起こります..それはなぜですか? 何か案は ?
16 ビット バスと 4 MB RAM の microblaze プロセッサで sprtan3a を使用しています。
c - FreeRTOS でスレッド間通信を実装する最良の方法は? - lwIP ケーブルの状態を確認する
DHCP をオンにして TCP 接続を使用して、lwip ケーブルのオン/オフを防弾にしたいと考えています。どちらのソリューションも問題なく機能しますが、どちらがより賢明で正しいかはわかりません。(間違ったコンテキスト関数呼び出しが怖い)
- 最初の解決策:
電話する:
その後:
したがって、メインlwIP
スレッドとスレッドの2つのスレッドがありhc_task
ます。hc_task
は:
hc_send
ページをダウンロードするために TCP 接続を行います。
次に、PHY をチェックしてケーブルの状態を読み取る 2 秒間隔のポーリング タイマーがあります。
次にケーブルがオンになったら、次のように呼び出します。
これらの関数をタイマー割り込みで呼び出すのは正しいと思います。
- 2番目の解決策:
lwip
2 番目の方法は、タイマー割り込みがメインスレッドにメッセージを送信することです。
タイマー割り込みは、メイン lwip スレッドに次のいずれかを呼び出すメッセージを送信します。
また:
ケーブルの状態 (タイマー割り込みから保存) を格納するためのグローバル変数があり、メインlwip
スレッドでそれをチェックして、適切な関数 (リンク アップまたはダウン) を呼び出します。
だから私はどの解決策がそれを行うためのより良い/正しい方法であるかを尋ねています.
私の構成: マイクロプロセッサ LPC1768 - LAN8720 PHY - FreeRTOS 7.4 - lwip 1.4.1 - DHCP を含む - TCP/IP を含む