Biblioteca Lwip

Biblioteca Lwip
Información sobre la plantilla
Lwip.jpg
Concepto:Es una biblioteca para el manejo de la lógica de Ethernet.

Es una biblioteca de libre distribución donde su uso no depende del sistema operativo y su programación está realizada en su totalidad en C.

Objetivo

El diseño de esta biblioteca se enfocó en mantener el consumo de memoria bajo, al igual que el tamaño del código, con el fin de que se pudiera utilizar en sistemas embebidos. Para lograr este objetivo el código de LWIP evita al máximo la copia de información entre buffers y utiliza en su lugar intercambio de apuntadores.Con el fin de hacer este stack portable para distintas arquitecturas no se realizan llamadas a funciones del sistema operativo ni se usan estructuras de datos en la implementación. En cambio, cuando las funciones del sistema son necesarias se utiliza una capa que realiza la emulación del sistema operativo.

La capa de emulación proporciona una interfaz uniforme para los servicios del sistema, tales como temporizadores, sincronización de procesos y mecanismos de paso de mensajes. En principio, al portar LWIP a otros sistemas operativos, sólo es necesaria una implementación de la capa de emulación para ese sistema operativo en particular.


API LWIP

La API LWIP fue diseñada a partir del conocimiento de la estructura interna de LWIP para lograr una mayor eficacia en el desarrollo de las aplicaciones. La implementación de la API se divide en dos partes debido al modelo de proceso de TCP/IP. Una parte de la API se implementa como una biblioteca enlazada al programa de aplicación y la otra es implementada en el proceso TCP/IP en cuestión. Las dos partes se comunican mediante la comunicación entre procesos (IPC) que son los mecanismos previstos por la capa de emulación del sistema operativo. La implementación actual usa los siguientes mecanismos IPC:

  • La memoria compartida.
  • Paso de mensajes.
  • Semáforos.

El principio general de diseño utilizado es dejar que se realice tanto trabajo como sea posible hacerse dentro del proceso de aplicación en lugar del proceso de TCP/IP. Este código puede ser compartido entre los procesos, incluso si las bibliotecas compartidas no están soportadas por el sistema operativo, el código se almacena en la ROM. Esto constituye una ventaja en el desarrollo de sistemas embebidos pues los microcontroladores que se usan para este fin, usualmente llevan cantidades bastante grandes de ROM, no siendo así la capacidad de su memoria de datos. El manejo de información se realiza mediante los buffers para los cuales existe una serie de funciones que permiten la gestión de memoria. Los buffers utilizan la referencia a memoria, en vez de memoria dinámica, también se utiliza la memoria compartida. Es por ello que para que esto funcione, tiene que ser posible compartir la referencia a memoria entre los procesos. Los sistemas operativos utilizados en sistemas embebidos para los que LWIP se destina por lo general no aplican ningún tipo de protección de la memoria, por lo que esto no será un problema. Las funciones que manejan las conexiones de red se implementan en la parte de la implementación de la API que reside en el proceso de TCP/IP.


Tipos de datos

Existen dos tipos de datos que se utilizan dentro de la API LWIP. Estos son:

netbuf: La abstracción buffer de red
netconn: La abstracción de una conexión de red

Cada tipo de datos es representado como un puntero a una estructura C. El conocimiento de la estructura interna no se debe utilizar en los programas de aplicación. En cambio, la API proporciona funciones para modificar y extraer los campos necesarios.

Manejo de la memoria en la API LWIP

Las estructuras netbufs son buffer que se utilizan para enviar y recibir datos. Internamente, un netbuf se asocia con un pbuf .La memoria asignada es la memoria RAM que está destinada de forma explícita para la retención de datos de la red, mientras que la referencia a memoria, podría referirse a ambos (referencia a RAM o referencia a ROM). La referencia a la memoria es útil para enviar datos que no son modificados, como las páginas web estáticas o imágenes.

Manejo de las conexiones en la API LWIP

Las funciones que permiten el manejo de las conexiones están asociadas al tipo de dato netconn. Estas funciones permiten la creación de una conexión ya sea del tipo TCP/IP o UDP, permiten crear conexiones de tipo servidor que esperan a que un cliente se conecte o de tipo cliente para el caso que se desee conectarse a un servidor. Además dichas funciones, permiten realizar la recepción y el envió de datos a través del objeto conexión creado así como monitorear el estado de las conexiones. Estas funciones son las mostradas en la siguiente tabla.

Tabla de funciones






Fuentes

  • STMICROELECTRINICS. User Manual STM32 Demostration Builder developer guide. United Statesof America: 2012b.1.

STMICROELECTRONICS Reference manual.STM32F101xx, STM32F102xx, STM32F103xx, *STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs. Edtion ed., 2009.www.st.com.