Las 4 capas del software embebido

Publicado por Oravatec en

Cuando un producto tiene bastantes funcionalidades y crece la lógica que tienes que implementar en el microcontrolador, el software puede crecer rápidamente. En aquellos proyectos en los que el software del microcontrolador empiece a ser complejo conviene conocer cómo se estructura el software de los microcontroladores.

La arquitectura en capas o «layered architecture» es la arquitectura de software más extendida y tradicional. Sigue la estructura organizativa y comunicativa tradicional de las empresas IT y es la más empleada en el software embebido.

Consiste en capas independientes que se comunican entre sí mediante interfaces concretas. Si las interfaces están bien diseñadas y se mantienen, las capas pueden ser intercambiables. Por ejemplo, una aplicación de un ARM Cortex-M0 podría ser usada por un microcontrolador AVR.

Capas principales del software embebido

Generalmente esta arquitectura consta de 4 capas: drivers, capa de abstracción del hardware, middlewares o servicios y capa de aplicación.

1. Drivers

Esta capa controla directamente el silicio del microcontrolador. Este control se realiza principalmente controlando registros del microcontrolador. Los provee el fabricante del silicio o bien se implementan siguiendo las especificaciones del datasheet.

2. Capa de abstracción del hardware, HAL o «Hardware abstraction layer»

La HAL como su nombre indica, implementa la abstracción del hardware.

Diferentes microcontroladores necesitarán drivers diferentes para la misma funcionalidad, pues su arquitectura y periféricos pueden ser diferentes y tener diferentes características. Esta capa permite reutilizar el software cuando cambias de microcontrolador.

En ocasiones esta capa viene junto a los drivers, que ofrecen una interfaz estandarizada de acceso a los periféricos y funcionalidades del microcontrolador. No se debe confundir el driver (implementa el control del silicio o periférico) de la HAL que no es más que una interfaz abstracta que simplifica o homogeniza las APIs de los drivers.

Algunos fabricantes proveen ya su HAL con sus drivers, lo que te permite hacer un cambio sencillo de un microcontrolador a otro entre familias. Un ejemplo es la HAL de las familias STM32 de ST Microelectronics.

Como usuario de esta capa, podrás utilizar directamente los protocolos y funcionalidades que son comunes entre todos los microcontroladores.

3. Capa de servicios o middlewares

Aquí se encuentran las librerías, servicios, protocolos y todo lo que es software que emplea la aplicación que está a medio camino entre la aplicación y la HAL/Drivers. Es la base software de la aplicación. Por ejemplo: una librería que implementa el protocolo MQTT sería un middleware.

4. Capa de aplicación

Aquí se encuentra la lógica de nuestro producto. Si por ejemplo estamos desarrollando un controlador de temperatura para una cama caliente de una impresora 3D, aquí se implementaría la lógica de cuando se corta la corriente, cuando se mide la temperatura, con que cadencia, etc.

Conclusiones

La estructura en capas del software embebido separan de manera lógica el software y permite reutilizar código. Los drivers controlan el silicio. La HAL te abstrae de él. Los middlewares son servicios utilizados por la aplicación. La capa de aplicación es el propósito del dispositivo.


¡No te pierdas nada!


Desarrollo de productos electrónicos | Diseño electrónico | Software embebido y firmware | Fabricación electrónica e industrialización de productos