¿Puedo restablecer la pila TCP / IP de Microchip sin restablecer la placa?
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
- Alternar el pin de reinicio en el chip de Microchip Ethernet
- Call StackInit ();
- Restablecer manualmente la máquina de estado de anuncio UDP
Esto parece recuperarse de los errores SPI fatales que encontré.
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.