Frage

Ich bin mit Microchip freier TCP / IP (Version 4.55) stapelt auf einem 8-Bit-Mikrocontroller arbeiten.

Ich versuche, den Stapel zurückzusetzen, ohne eine Vollpension Reset mit asm zu tun ( "RESET").

Alle Ideen, wie Sie dieses Bild Stapel neu zu starten.

UPDATE

ich den Stapel mit den folgenden Schritten zurückgesetzt

  1. Schalten Sie den Reset-Pin an auf dem Mikrochip-Ethernet-Chip
  2. Rufen Sie StackInit ();
  3. Reset manuell die UDP-Zustandsmaschine ankündigen

Dies scheint von den tödlichen SPI Fehlern zu erholen ich gestoßen.

War es hilfreich?

Lösung

Rufen StackInit (). Diese Funktion initialisiert alle Submodule (TCP, UDP, SMTP, etc.). Es wird auch alle TCP und UDP-Sockets clobber Sie geöffnet haben, so dass Sie die Steckdosen wieder öffnen müssen Sie verwenden möchten.

Als Randbemerkung: Ich folgte das Gewinde auf dem Microchip Forum. Ich war auch seltsam Resets in meinem TCP-Stack zu bekommen. Es endete als ein Stapelüberlauf auf. Legen Sie einige Variablen am Anfang Ihres Stacks.

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

initialisieren diese Variablen zu Beginn des main () und einen Haltepunkt an dem Anfang. Prüfen Sie, ob diese Variablen überschrieben werden.

Andere Tipps

Ich bin total nicht vertraut mit dem Microchip-Stack, aber es sei denn, der Stapel neu gestartet werden soll, ich bezweifle, dass Sie erfolgreich sein werden.

Wenn alle Puffer und Strukturen statisch zugeordnet werden, dann in der Theorie, könnten Sie die Initialisierungsroutinen rufen auf „Neustart“ der Stapel (vorausgesetzt, es hat eine erneute Initialisierung der Strukturen).

Wenn es verwendet dynamische Puffer (malloc), dann glaube ich, du kein Glück sein würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top