ボードをリセットせずにMicrochip TCP / IPスタックをリセットできますか?

StackOverflow https://stackoverflow.com/questions/611935

  •  03-07-2019
  •  | 
  •  

質問

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

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

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

更新

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

  1. マイクロチップイーサネットチップ上でリセットピンを切り替えます
  2. StackInit()を呼び出す;
  3. UDPアナウンスステートマシンを手動でリセットする

これは、発生した致命的なSPIエラーから回復するようです。

役に立ちましたか?

解決

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

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

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

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

他のヒント

Microchipスタックについてはまったく詳しくありませんが、スタックが再起動するように設計されていない限り、成功するかどうかは疑問です。

すべてのバッファと構造が静的に割り当てられている場合、理論的には、初期化ルーチンを呼び出して「再起動」することができます。スタック(構造の再初期化を行うと仮定)。

動的バッファ(malloc)を使用している場合は、運が悪いと思われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top