networking - modelo - protocolo ip
¿Experiencias con pilas de TCP/IP incrustadas(gratuitas)? (8)
+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) que trabajan en bare metal (sin RTOS).
Es sólido como una roca y muy eficiente con solo 32 KB o RAM.
Saludos
PFM
¿Alguien tiene experiencias especialmente buenas (o malas) con cualquiera de las siguientes pilas integradas de TCP / IP?
- uIP
- lwIP
- Implementación de Lean de TCP / IP de Bentham
- La pila TCP / IP de este libro
Mis necesidades son para una pila sólida y fácil de transportar. El tamaño del código no es muy importante, el rendimiento es relativamente importante, pero la facilidad de uso y la migración son muy importantes.
El sistema probablemente usará 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 Ethernet, por lo que esa no es una gran prioridad en la selección.
No estoy muy interesado en extraer una pila de un sistema operativo, como Linux, RTEMS, etc.
Tampoco estoy interesado en ofertas comerciales como Interniche, Micrium, etc ...
La pila no necesita todo tipo de campanas y silbatos, no necesita IPv6, y no necesito nada encima (servidores web, servidores FTP, etc.) De hecho, es posible que lo haga solo uso UDP, aunque puedo imaginar un par de escenarios donde TCP sería preferible.
Las experiencias con otros stacks que me he perdido son, por supuesto, también de mucho interés.
Gracias por su tiempo y aporte.
+1 para lwIP.
Utilizamos esto con éxito en un proyecto hace unos años y descubrimos que, en general, es 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, 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 funciones 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.
Estoy satisfecho con lwip en 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 era intrínsecamente activa. 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.
He usado interniche en RTOS. Es una pila completa y admite bastantes características. Como busca una versión no comercial, mi voto es sobre lwIP.
He usado la pila Microchip TCP / IP. 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.
He usado tanto uIP como lwIP de forma extensiva.
uIP
- Genial si solo quieres algo básico como un gestor de arranque
- Pequeña huella de pie.
- Utiliza las encuestas para que nunca tengamos más de 3kbit con él :-(
- Sin DHCP ''fuera de la caja''
- Pobre soporte UDP
lwIP
- Totalmente interrupción conducida mucho más rápido (~ x10)
- Incluye DHCP con failover AutoIP
- UDP con multicast
- Y mucho más
EDITAR:
Y nunca hemos usado ninguno con un RTOS ya que nunca ha habido una necesidad.
Puede probar la pila FNET TCP / IP de código abierto.
lwIP
Trabajé en un proyecto con un módem 3G donde necesitábamos una pila UDP / IP (sin TCP) encima de 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 usó un RTOS, y lwIP estaba bien 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 algunos bordes ásperos (por ejemplo, alguien lanzó un Malloc solitario) en algún lado) pero funcionó para nosotros 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).