2

私は、8 ビット マイクロコントローラで Microchip の無料の TCP/IP (バージョン 4.55) スタックを使用しています。

asm("RESET") を使用してボード全体をリセットせずに、スタックをリセットしようとしています。

このスタックを再起動する方法に関するアイデア。

アップデート

次の手順でスタックをリセットします

  1. リセット ピンを Microchip Ethernet チップに切り替えます
  2. StackInit(); を呼び出します。
  3. UDP アナウンス ステート マシンを手動でリセットする

これは、私が遭遇した致命的な SPI エラーから回復したようです。

4

2 に答える 2

3

StackInit() を呼び出します。この関数は、すべてのサブモジュール (TCP、UDP、SMTP など) を再初期化します。また、開いているすべての TCP および UDP ソケットが破壊されるため、使用するソケットを再度開く必要があります。

余談ですが、Microchip フォーラムのスレッドをたどりました。また、TCP スタックで奇妙なリセットが発生していました。スタックオーバーフローになってしまいました。いくつかの変数をスタックの一番上に置きます。

#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata

main() の先頭でこれらの変数を初期化し、先頭にブレークポイントを置きます。これらの変数が上書きされているかどうかを確認してください。

于 2009-03-25T18:30:12.483 に答える