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

  1. Attiva il pin di reset sul chip Microchip Ethernet
  2. Chiama StackInit ();
  3. Ripristina manualmente la macchina a stati di annuncio UDP

Questo sembra riprendersi dagli errori fatali SPI che ho riscontrato.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top