2009-07-21 5 views
31

¿Alguien tiene experiencias especialmente buenas (o malas) con cualquiera de las siguientes pilas integradas de TCP/IP?Experiencias con pilas de TCP/IP (gratuitas) integradas

Mis necesidades son para un sólido, fácil de puerto pila. El tamaño del código no es muy importante, el rendimiento es relativamente importante, pero la facilidad de uso & es muy importante.

El sistema probablemente utilizará un RTOS, que no se ha decidido, pero en mi experiencia la mayoría de las pilas pueden usarse con o sin un RTOS. Lo más probable es que la plataforma sea una variante de ARM (ARM7 o CM3 con toda probabilidad).

No estoy muy preocupado por atornillar la pila al controlador de Ethernet, por lo que esa no es una gran prioridad en la selección.

No estoy muy interesado en la extracción de una pila de un sistema operativo, como Linux, RTEMS, etc.

tampoco estoy interesado en las ofertas comerciales tales como InterNICHE, Micrium, etc. ..

La pila no necesita todo tipo de campanas & silbatos, no necesita IPv6, y no necesito nada encima (servidores web, servidores FTP, etc.) De hecho es posible que solo use UDP, aunque puedo imaginar un par de escenarios donde TCP sería preferible.

Las experiencias con otras pilas que he echado de menos son, por supuesto, también de mucho interés.

Gracias por su tiempo & de entrada.

Respuesta

8

lwIP

trabajé en un proyecto con un módem 3G donde teníamos una pila UDP/IP (sin TCP) en la parte superior del PPP. Nos estrechamos a uIP y lwIP. Elegimos lwIP al final porque ya tenía PPP (uIP no), y teníamos suficiente RAM de sobra.

Nuestro proyecto particular no usaba un RTOS, y lwIP era bueno para usar sin un RTOS.

No participé directamente en la migración del código lwIP, aunque trabajé en el controlador del módem para interactuar con él. Mi impresión fue que la migración tomó un par de semanas para que todo funcione sin problemas, para nuestro ingeniero que tenía experiencia previa en TCP/IP. El código lwIP ha sido pirateado por muchas personas y, por lo tanto, tiene algunas asperezas (por ejemplo, alguien lanzó un Malloc solitario) en algún lado) pero nos funcionó después de un pequeño ajuste. Lo probamos con un conjunto de validación independiente.

En resumen, era "adecuadamente funcional" para nuestras necesidades UDP/IP y PPP (pero no puedo comentar sobre sus capacidades de TCP).

+1

Impresionante, gracias por su entrada ... – Dan

11

+1 para lwIP.

Utilizamos esto con éxito en un proyecto hace unos años y nos pareció en general muy confiable. Encontramos y solucionamos algunos problemas (generalmente casos de esquina dentro del código TCP) que enviamos de vuelta al proyecto, y aunque el proyecto ha avanzado bastante desde entonces, en general no encontramos que carezca de características.

Como sospecha que funcionará con o sin un RTOS. Nos llevó aproximadamente una semana ejecutar nuestro sistema con un RTOS, que incluía los cambios que teníamos que hacer para admitir un compilador DSP inusual. Como probablemente estés usando GCC en ARM, puedes evitar cualquier esfuerzo.

Contiene muchas más características de las que necesita, pero si sus requisitos cambian unos años después, será mejor que haya empezado con una pila más importante.

+1

Además, con LwIP lo más probable es que no defina las funciones que no utilizará para ahorrar espacio en el código. – mpontillo

3

+1 para lwIP.

Se incluye en el diseño de referencia de serie a Ethernet de Luminary Micros (ahora TI) con algunas capacidades adicionales (algún tipo de "scripting del lado del servidor" y cgi) trabajando en bare metal (sin RTOS).

Es sólido como una roca y muy eficiente con solo 32 KB o RAM.

Saludos

PFM

3

estoy satisfecho con lwip en el Stellaris Cortex-M3.

StellarisWare para la placa eval LM3S6965 incluye la demostración enet_lwip. Este es un pequeño servidor web que corre sobre lwip que se ejecuta sobre metal desnudo, no en este caso, FreeRTOS. El sistema es controlado por el temporizador y las interrupciones de Ethernet. Fue bastante fácil arrancar el servidor web y soltar mi aplicación. No tuve que convertirme en un experto en lwip para ejecutar esto la primera vez.

Más tarde me di cuenta de que mi aplicación estaba dirigida intrínsecamente hacia arriba. Al principio, tenía una junta de enchufes para levantar. Reemplacé esa capa por una mucho más simple que traduce las llamadas ascendentes nativas de lwip a las llamadas ascendentes de la aplicación, y se opta por la API de socket de lwip. Esto ahorró más espacio en memoria flash y RAM, e hizo todo más rápido y simple. Con un pequeño ajuste, lo ejecuté en la placa S2E usando 52K flash y 30K RAM.

16

He usado tanto uIP como lwIP de forma extensiva.

uIP

  • Gran si eres solo querer algo básico como un cargador de arranque
  • Ocupa poco espacio.
  • Usos de votación por lo que nunca tenemos sobre 3kbit con ella :-(
  • Sin DHCP 'fuera de la caja'
  • pobre soporte UDP

lwIP

  • Totalmente interrumpido conducido mucho más rápido (~ x10)
  • Incluye DHCP con conmutación por error AutoIP
  • UDP con multidifusión
  • Plus más

EDIT:
Y nunca hemos usado ya sea con un RTOS como nunca ha habido una necesidad.

+0

Puede hacer que uIP haga más de 3kbit/s. Lo tenía funcionando a> 100kByte/s, pero requería ajustes sustanciales. uIP es bueno si tiene un código limitado, pero es extremadamente básico. –

+0

Mi implementación se está ejecutando actualmente en cerca de 245kbits/seg, y eso es sin ningún tipo de ajustes en la capa subyacente. Lo único que aseguré fue que los marcos salientes eran todos lo más cerca de 1500 bytes posibles, y las llamadas de envío estaban bloqueando. –

0

He utilizado la pila de TCP/IP de Microchip. He estado muy feliz con eso. Fue muy fácil de implementar, muchos códigos de demostración/tutoriales están disponibles y tiene soporte para muchos protocolos HTTP, tFTP, SMTP, SNTP, etc. Sin embargo, un punto que no coincide con sus requisitos es que no es fácilmente portátil. a otra arquitectura. De hecho, creo que la licencia de la pila prohíbe explícitamente esto porque Microchip quiere que ejecutes la pila solo con su hardware PIC18, PIC24 y PIC32. Sin embargo, hay un controlador Ethernet externo que venden que le permitirá usar ciertas porciones de esta pila con su ENC28J60.

0

He usado interniche en RTOS. Es una pila completa y admite bastantes funciones. Como está buscando una versión no comercial, mi voto es sobre lwIP.

0

Puede probar el código abierto FNET TCP/IP stack.

+1

Esto realmente no es una respuesta a su pregunta. La mención de una pila adicional se habría hecho mejor como comentario. –