2. Conozca LwIP

Introducción a LwIP de la Enciclopedia Baidu: https://baike.baidu.com/item/lwip/10694326

lwip es una pequeña pila de protocolo TCP / IP de código abierto desarrollada por Adam Dunkels del Instituto Sueco de Informática (SICS) . El objetivo de la implementación es reducir el uso de RAM mientras se mantienen las funciones principales del protocolo TCP.

LwIP es un protocolo IP ligero (peso ligero), puede ejecutarse con o sin soporte de sistema operativo. El objetivo de la implementación de LwIP es reducir la ocupación de RAM mientras se mantienen las funciones principales del protocolo TCP. Solo necesita una docena de KB de RAM y aproximadamente 40K de ROM para ejecutarse, lo que hace que la pila de protocolos LwIP sea adecuada para sistemas embebidos de gama baja . Uso

La pila de protocolos lwIP se centra principalmente en cómo reducir el uso de memoria y el tamaño del código, de modo que lwIP se pueda aplicar a plataformas pequeñas con recursos limitados, como los sistemas integrados. Para simplificar los requisitos de procesamiento y memoria, lwIP ha reducido la API, por lo que no necesita copiar algunos datos.

La API RAW coloca la pila de protocolos y la aplicación en un proceso. Esta interfaz se basa en la tecnología de devolución de llamada de función, y las aplicaciones que usan esta interfaz no necesitan realizar operaciones continuas. Sin embargo, esto hace que la escritura de la aplicación sea más difícil y que el código sea difícil de entender. Para recibir datos, la aplicación registra una función de devolución de llamada con la pila de protocolos. La función de devolución de llamada está asociada con una conexión específica. Cuando la conexión asociada alcanza un paquete, la pila de protocolos llama a la función de devolución de llamada. Esto tiene ventajas y desventajas. La ventaja es que, dado que la aplicación y la pila de protocolos TCP / IP residen en el mismo proceso, no hay cambio de proceso al enviar y recibir datos. La principal desventaja es que la aplicación no puede quedar atrapada en una operación continua a largo plazo, lo que conducirá a una disminución en el rendimiento de la comunicación, ya que el procesamiento TCP / IP y la operación continua no pueden ocurrir en paralelo. Esta deficiencia se puede superar dividiendo la aplicación en dos partes, una parte para la comunicación y una parte para el cálculo.

La API lwip coloca la recepción y el procesamiento en un hilo. De esta forma, siempre que el flujo de procesamiento se retrase un poco, la recepción se bloqueará, causando directamente problemas graves, como la pérdida frecuente de paquetes y la respuesta que no responde. Por lo tanto, la recepción y el procesamiento del protocolo deben estar separados. El autor de LwIP obviamente lo ha tenido en cuenta: nos proporcionó la función tcpip_input () para tratar este problema, aunque no lo explicó en el artículo de rawapi. Hablando de eso, los lectores deben saber la respuesta de dónde provienen los mensajes entregados por la función tcpip_input (). Sí, provienen del hilo receptor compuesto por el controlador de red subyacente. Cuando escribimos un controlador de red, su parte receptora se crea en forma de tarea. Después de que llegue el paquete de datos, elimine el encabezado del paquete Ethernet para obtener el paquete IP y luego llame directamente a la función tcpip_input () para entregarlo al buzón de correo de mbox. Una vez completada la entrega, la tarea de recepción continúa recibiendo el siguiente paquete de datos, y el paquete de IP entregado continuará siendo procesado por el hilo TCPIP. De esta manera, incluso si el tiempo de procesamiento de un paquete IP es demasiado largo, no causará la pérdida frecuente de paquetes. Esta es la API lwip.

La API BSD proporciona una API estándar UNIX basada en el modelo abierto-lectura-escritura-cierre. Su característica más importante es que es más fácil portar aplicaciones a otros sistemas, pero es relativamente ineficiente en sistemas embebidos y consume más recursos. Esto a veces es intolerable para nuestras aplicaciones integradas.

 

Composición del código fuente LWIP

 

Tres carpetas importantes doc, src, test

Documentos importantes en doc

    rawapi.txt (Indique a los usuarios cómo usar la pila de protocolos)

    sys_arch.txt (usado durante la migración)

Composición de src

    carpeta api (contiene la API secuencial de LWIP y la API de socket)

    carpeta central (código fuente central de LwIP)

    incluir carpeta (archivo de encabezado utilizado en la pila de protocolos)

    carpeta netif (contiene archivos relacionados con la interfaz de red subyacente)

composición de prueba (función de prueba de kernel de pila de protocolos)

163 artículos originales publicados · Me gustaron 183 · Visite más de 120,000

Supongo que te gusta

Origin blog.csdn.net/qq_31339221/article/details/99708797
Recomendado
Clasificación