Puis-je réinitialiser la pile TCP / IP de Microchip sans réinitialiser la carte?

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

  •  03-07-2019
  •  | 
  •  

Question

Je travaille avec la pile TCP / IP libre (version 4.55) de Microchip sur un micro-contrôleur 8 bits.

J'essaie de réinitialiser la pile sans effectuer de réinitialisation complète de la carte avec asm ("RESET").

Toute idée sur la façon de redémarrer cette pile.

MISE À JOUR

Je réinitialise la pile en procédant comme suit

  1. Positionnez la broche de réinitialisation sur sur la puce Ethernet Microchip
  2. Appelez StackInit ();
  3. Réinitialisez manuellement la machine à états d'annonce UDP

Cela semble récupérer des erreurs SPI fatales que j'ai rencontrées.

Était-ce utile?

La solution

Appelez StackInit (). Cette fonction réinitialise tous les sous-modules (TCP, UDP, SMTP, etc.). Cela va également encombrer tous les sockets TCP et UDP que vous avez ouverts, vous devrez donc rouvrir les sockets que vous voulez utiliser.

Remarque: j'ai suivi le fil de discussion sur le forum Microchip. J'obtenais aussi des réinitialisations étranges dans ma pile TCP. Cela a fini par être un débordement de pile. Placez des variables en haut de votre pile.

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

Initialisez ces variables au début de main () et mettez un point d'arrêt au début. Voir si ces variables sont écrasées.

Autres conseils

Je ne suis absolument pas familier avec la pile Microchip, mais à moins que cette pile ne soit conçue pour être redémarrée, je doute que vous réussissiez.

Si tous les tampons et toutes les structures sont alloués de manière statique, vous pouvez théoriquement appeler les routines d'initialisation pour "redémarrer". la pile (en supposant que cela réinitialise les structures).

S'il utilise des tampons dynamiques (malloc), je pense que vous n’auriez pas de chance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top