Posso ripristinare lo stack Microchip TCP / IP senza ripristinare la scheda?
Domanda
Sto lavorando con lo stack TCP / IP gratuito di Microchip (versione 4.55) su un microcontrollore a 8 bit.
Sto cercando di ripristinare lo stack senza eseguire un reset della scheda completa con asm (" RESET ").
Qualche idea su come riavviare questo Stack.
UPDATE
Ho resettato lo stack con i seguenti passaggi
- Attiva il pin di reset sul chip Microchip Ethernet
- Chiama StackInit ();
- Ripristina manualmente la macchina a stati di annuncio UDP
Questo sembra riprendersi dagli errori fatali SPI che ho riscontrato.
Soluzione
Chiama StackInit (). Tale funzione reinizializza tutti i sottomoduli (TCP, UDP, SMTP, ecc.). Bloccerà anche tutti i socket TCP e UDP che hai aperto, quindi dovrai riaprire i socket che desideri utilizzare.
Come nota a margine: ho seguito il thread sul forum Microchip. Inoltre stavo ottenendo strani reset nel mio stack TCP. Ha finito per essere un overflow dello stack. Metti alcune variabili in cima al tuo stack.
#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata
Inizializza queste variabili all'inizio di main () e metti un punto di interruzione all'inizio. Verifica se queste variabili vengono sovrascritte.
Altri suggerimenti
Non ho assolutamente familiarità con lo stack Microchip, ma a meno che lo stack non sia progettato per essere riavviato, dubito che ci riuscirai.
Se tutti i buffer e le strutture sono allocati staticamente, in teoria, è possibile chiamare le routine di inizializzazione su " restart " lo stack (supponendo che faccia una reinizializzazione delle strutture).
Se utilizza buffer dinamici (malloc), credo che saresti sfortunato.