2009-07-21 10 views
31

Qualcuno ha esperienze particolarmente buone (o cattive) con uno dei seguenti stack TCP/IP incorporati?Esperienze con stack TCP/IP incorporati (gratuiti)?

Le mie esigenze sono per un solido, facile da port stack. Le dimensioni del codice non sono molto importanti, le prestazioni sono relativamente importanti, ma la facilità d'uso del porting & è molto importante.

Il sistema utilizzerà probabilmente un RTOS, che non è stato deciso, ma nella mia esperienza la maggior parte delle pile può essere utilizzata con o senza un RTOS. Molto probabilmente la piattaforma sarà una variante ARM (ARM7 o CM3 con ogni probabilità).

Non preoccuparsi troppo di fissare lo stack al driver Ethernet, quindi non è una grande priorità nella selezione.

Io non sono terribilmente interessato a estrarre una pila di un sistema operativo, come Linux, RTEMS, ecc

Io non sono interessato a offerte commerciali come Interniche, Micrium, ecc anche ..

Lo stack non ha bisogno di tutti i tipi di campane & fischietti, non ha bisogno di IPv6, e non ho bisogno di alcun materiale su di esso (server Web, server FTP, ecc.) In effetti è possibile che userò solo UDP, anche se posso immaginare un paio di scenari in cui il TCP sarebbe preferibile.

Le esperienze con altri stack che ho perso sono ovviamente anche molto interessanti.

Grazie per l'input &.

risposta

8

lwIP

ho lavorato su un progetto con un modem 3G dove abbiamo bisogno uno stack UDP/IP (non TCP) sulla parte superiore del PPP. Abbiamo ristretto a uIP e lwIP. Abbiamo scelto lwIP alla fine perché aveva già PPP (uIP no), e avevamo abbastanza RAM da risparmiare.

Il nostro particolare progetto non utilizzava un RTOS e lwIP andava bene senza RTOS.

Non ero coinvolto direttamente nel porting del codice lwIP, anche se ho lavorato sul driver del modem per interfacciarlo con esso. La mia impressione è stata che il porting impiegasse un paio di settimane per ottenere tutto senza intoppi, per il nostro ingegnere che aveva precedenti esperienze TCP/IP. Il codice lwIP è stato violato da molte persone, e di conseguenza ha alcuni spigoli (ad esempio qualcuno ha gettato un malloc solitario() da qualche parte) ma ha funzionato per noi dopo un piccolo ritocco. L'abbiamo testato con una suite di convalida indipendente.

In sintesi, era "opportunamente funzionale" per i nostri bisogni UDP/IP e PPP (ma non posso commentare le sue capacità TCP).

+1

Impressionante, grazie per il tuo input ... – Dan

11

+1 per lwIP.

Abbiamo usato questo con successo su un progetto alcuni anni fa e lo abbiamo trovato generalmente molto affidabile. Abbiamo trovato e risolto alcuni problemi (in genere casi angolari all'interno del codice TCP) che abbiamo inviato al progetto, e anche se il progetto è stato spostato da un po 'di tempo, in genere non ci risulta che manchi di funzionalità.

Come sospetti, funzionerà con o senza un RTOS. Ci è voluta circa una settimana per funzionare sul nostro sistema con un RTOS, che comprendeva le modifiche che dovevamo apportare per supportare un compilatore DSP insolito. Dato che probabilmente stai usando GCC su ARM puoi evitare uno di questi sforzi.

Contiene molte più funzioni di quelle necessarie, ma se le tue esigenze cambiano dopo alcuni anni, allora sarà meglio iniziare con uno stack più consistente.

+1

Inoltre, con LwIP puoi probabilmente non definire le funzionalità che non utilizzerai per risparmiare sul footprint del codice. – mpontillo

3

+1 per lwIP.

È incluso nel progetto di riferimento Serial to Ethernet di Luminary Micros (ora TI) con alcune funzionalità aggiunte (una sorta di "scripting lato server" e cgi) che lavorano su bare metal (senza RTOS).

È solido e molto performante con solo 32 KB o RAM.

saluti

PFM

3

sono soddisfatto lwip sul Stellaris Cortex-M3.

StellarisWare per la scheda di valutazione LM3S6965 include la demo enet_lwip. Questo è un piccolo server web che gira su lwip e che gira su bare metal - no FreeRTOS in questo caso. Il sistema è guidato dal timer e dagli interrupt Ethernet. È stato abbastanza facile estrarre il server Web e inserire la mia app. Non dovevo diventare un esperto di lwip per farlo funzionare la prima volta.

In seguito mi sono reso conto che la mia app era intrinsecamente attiva. In un primo momento, aveva una guarnizione a bussola. Ho sostituito quello strato con uno molto più semplice che traduce lupi nativi su richiami alle app e ha optato per l'API socket di lwip. Ciò ha consentito di risparmiare più spazio su flash e RAM e ha reso il tutto più veloce e semplice. Con un piccolo ritocco l'ho fatto girare sulla scheda S2E usando un flash da 52K e una RAM da 30K.

16

Ho usato sia uIP che lwIP estesamente.

uIP

  • Ottimo se sei solo vogliono qualcosa di semplice come un bootloader
  • minimo ingombro.
  • Utilizza polling in modo che non abbiamo mai ottenuto oltre 3kbit con esso :-(
  • No DHCP 'out of the box'
  • scarso supporto UDP

lwIP

  • Completamente interrotto guidato molto più velocemente (~ x10)
  • Include DHCP con failover AutoIP
  • UDP con multicast
  • Inoltre più

EDIT:
E non abbiamo mai usato sia con un RTOS, come non c'è mai stato un bisogno.

+0

Puoi fare in modo che uIP faccia più di 3kbit/s. Ho avuto a> 100kByte/s, ma ha richiesto modifiche sostanziali. uIP è buono se sei limitato al codice, ma è estremamente semplice. –

+0

La mia implementazione è attualmente in esecuzione a quasi 245 kbit/sec, e cioè senza alcun ritocco al livello sottostante. Tutto ciò che mi assicuravo era che i frame in uscita fossero il più vicino possibile a 1500 byte e che le chiamate di invio stessero bloccando. –

0

Ho usato lo stack TCP/IP di Microchip. Sono stato molto felice con questo. È stato molto facile implementare, un sacco di codice dimostrativo/tutorial disponibili e ha il supporto per molti protocolli HTTP, tFTP, SMTP, SNTP, ecc. Un punto che non corrisponde ai tuoi requisiti tuttavia è che non è facilmente trasportabile ad un'altra architettura. In effetti penso che la licenza per lo stack proibisca esplicitamente questo perché Microchip vuole che tu esegua lo stack usando solo il loro hardware PIC18, PIC24 e PIC32. C'è comunque un controller Ethernet esterno che vendono che ti permetteranno di usare certe porzioni di questo stack con la loro ENC28J60.

0

Ho usato interniche su RTOS. È una pila a tutti gli effetti e supporta un bel po 'di funzioni. Dato che stai cercando una versione non commerciale, il mio voto è su lwIP.

0

È possibile provare l'open source FNET TCP/IP stack.

+1

Questa non è davvero una risposta alla sua domanda. La menzione di uno stack aggiuntivo sarebbe stata meglio fatta come commento. –