Pregunta

Estoy trabajando con la pila gratuita TCP / IP (versión 4.55) de Microchip en un microcontrolador de 8 bits.

Estoy tratando de restablecer la pila sin hacer un restablecimiento completo de la placa con asm (" RESET ").

Cualquier idea sobre cómo reiniciar esta pila.

UPDATE

Reinicio la pila con los siguientes pasos

  1. Alternar el pin de reinicio en el chip de Microchip Ethernet
  2. Call StackInit ();
  3. Restablecer manualmente la máquina de estado de anuncio UDP

Esto parece recuperarse de los errores SPI fatales que encontré.

¿Fue útil?

Solución

Llamada StackInit (). Esa función reinicializa todos los submódulos (TCP, UDP, SMTP, etc.). También afectará a todos los sockets TCP y UDP que tenga abiertos, por lo que tendrá que volver a abrir los sockets que desea usar.

Como nota al margen: seguí el hilo en el foro de Microchip. También estaba obteniendo reinicios extraños en mi pila TCP. Terminó siendo un desbordamiento de pila. Ponga algunas variables en la parte superior de su pila.

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

Inicialice estas variables al principio de main () y coloque un punto de interrupción al principio. Vea si estas variables se están sobrescribiendo.

Otros consejos

No estoy familiarizado con la pila de Microchip, pero a menos que la pila esté diseñada para reiniciarse, dudo que tengas éxito.

Si todos los buffers y estructuras están asignados estáticamente, en teoría, podría llamar a las rutinas de inicialización para " reiniciar " la pila (asumiendo que hace una reinicialización de las estructuras).

Si utiliza buffers dinámicos (malloc), entonces creo que no tendrías suerte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top