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

  1. Alterne o pino de reset para no chip Microchip Ethernet
  2. Chamada StackInit ();
  3. manualmente redefinir o UDP anunciar máquina de estado

Este parece recuperar dos erros fatais do SPI que encontrei.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top