Posso redefinir pilha TCP / IP Microchip sem redefinir a placa?
Pergunta
Eu estou trabalhando com TCP livre da Microchip / IP (versão 4.55) pilha em um micro-controlador de 8-bit.
Eu estou tentando redefinir a pilha sem fazer uma redefinição de pensão completa com asm ( "RESET").
Algumas ideias sobre como reiniciar este Stack.
Atualizar
Eu redefinir a pilha com as seguintes etapas
- Alterne o pino de reset para no chip Microchip Ethernet
- Chamada StackInit ();
- manualmente redefinir o UDP anunciar máquina de estado
Este parece recuperar dos erros fatais do SPI que encontrei.
Solução
Chamada StackInit (). Essa função reinicializa todos os sub-módulos (TCP, UDP, SMTP, etc.). Vai também clobber todo o TCP e UDP soquete que você tem aberto, para que você terá que re-abrir as tomadas que deseja usar.
Como uma nota lateral: Eu segui o fio no fórum Microchip. Eu também estava ficando redefine estranhos na minha pilha TCP. Acabou sendo um estouro de pilha. Coloque algumas variáveis ??no topo da sua pilha.
#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata
Inicializar essas variáveis ??no início do main () e colocar um ponto de interrupção no início. Veja se estas variáveis ??estão sendo substituído.
Outras dicas
Eu sou totalmente não familiarizados com a pilha Microchip, mas a menos que a pilha é projetado para ser reiniciado, duvido que você será bem sucedido.
Se todos os buffers e estruturas são estaticamente alocada, então, em teoria, você poderia chamar as rotinas de inicialização para "reiniciar" a pilha (supondo que ele faz um re-inicialização das estruturas).
Se ele usa buffers dinâmicos (malloc), então eu acredito que você estaria fora de sorte.