Diseño unificado Software/Hardware para Sistemas Embebidos

¿Qué es un sistema embebido, o empotrado o embarcado? Lo explicaré con un ejemplo: Los diferentes equipos Mainframe, Workstation, Desktop, Laptop, Tablet, Palmtop o  Smartphone son computadores de propósito general, es decir pueden ejecutar varias aplicaciones cuyo propósito es diferente; desde el procesador de texto, editor de fotografías, hoja de cálculo, navegador web… hasta software especializado como Matlab, Altium, Solid Works, Eclipse y un eterno etcétera.

Es decir, puede ejecutar múltiples aplicaciones diferentes.

El sistema embebido no; ejecuta la aplicación para la cual se diseñó; ya sea mover los flaps del ala de un avión según la etapa del despegue, crucero o aterrizaje; dispensar tinto, café, milo o moccachino; o prender y apagar un Led de forma alternada. Todos son COMPUTADORES que ejecutan las  secuencias de operaciones lógicas y aritméticas almacenadas en algún lado – sin importar el tamaño, capacidad o antigüedad; solo que los computadores embebidos están dedicados a una única funcionalidad, y fueron diseñados para esa función particular, finalmente, interactúan con los estímulos de su entorno dentro de un tiempo predecible y/o especificado, lo que se denomina Tiempo-Real. Por eso se utilizan los términos Embedded y Real-Time de manera equivalente para definir este tipo de sistemas.

Los sistemas de cómputo embebidos (también se encuentran en español como embarcados/empotrados) se han hecho con el tiempo mucho más utilizados y complejos, gracias a la capacidad de integrar sistemas completos en el chip de silicio (System on a Chip – SoC), la optimización de los compiladores C/C++ y la aparición de IDE (Integrated Design Enviroment) que evolucionaron desde entornos de texto a Frameworks con librerías (bibliotecas) de aplicación, desplazando así la atención del diseñador desde hardware y el ensamblador, hacia un mayor nivel de abstracción en el momento de escribir los programas. Otro aspecto influyente son las herramientas para síntesis del hardware digital, que ahora son compiladores de un lenguaje de descripción de hardware HDL (Hardware Description Language) con o sin extensiones análogas (VHDL/VHDL-AMS), en el cual se describe o programa la funcionalidad del dispositivo deseado, para luego ser compilado en un conjunto procesador/lógica, ya hace tiempo se dejó de pensar en compuertas, multiplexores y decodificadores. Esto sistemas sintetizados se implementan en dispositivos FPGA (Field Programmable gate Array) cuya capacidad, complejidad y costo son comparables a un el poder de cómputo de un desktop de hace 20 años en un solo encapsulado – ejemplo de ello las FPGA Xilinx Zinq, que integran en el mismo chip de US$ 200 CPU, DSP, ASSP, ADCs, Memory Controllers y High Speed IO.Xilinx Zinq FPGA

Esto nos revela una característica importante de los sistemas embebidos, que debido a la gran cantidad de dispositivos disponibles que van desde pequeños microcontroladores de 8 bits y 6 pines de 30 centavos de dólar, hasta super FPGAs Radiation Hardened de 500+ pines que cuestan 1000 dólares la unidad, todo trabajo se hace con la filosofía S.M. = «Según el Marrano». Con el pequeño microcontrolador manejo la apertura de la cerradura en una puerta, mientras que para los sistemas de aviónica del F-22 Raptor uso la super FPGA.

Para conocer el estado de la industrial mundial de sistemas embebidos, puede revisar la página: Embedded Computing Industry Overview

Pero… tienen algo en común, ¿Qué será?

A pesar de las diferencias en costo, consumo de potencia, rendimiento y flexibilidad… TODOS HACEN LO MISMO y se pueden diseñar con las mismas técnicas: Programación en C/C++ y VHDL/Verilog que son estándares ISO/IEC 9899:2011, 14882:2014 e IEEE 1076-2008, 1800-2012 respectivamente; lo que hace que las herramientas ya sean licenciadas o de software libre, cumplan total o parcialmente con los estándares, así sean muy diferentes o no sean compatibles entre sí. Por ello es necesario que el ingeniero diseñador disponga de un buen arsenal de conocimientos sobre los fabricantes y sus productos, y gran habilidad el uso de herramientas que le permitan utilizar cualquier dispositivo.

¿Por qué son importantes los sistemas embebidos?

Por los más de 220 billones de dólares que se espera vendan en el año 2021, el mercado global de tecnologías embebidas fue en el 2015 mayor a 158 billones de dólares, creció para el 2016 a 169 billones y se espera que crezca anualmente un 5.5% hasta el año 2021.

chipship
Muestra la distribución proporcional de los mercados destino de los embarques de circuitos integrados, nótese como crece el segmento de Embebidos.
mcushift
Muestra el cambio en las cantidades de microcontroladores según su «tamaño de bits». Nótese el aumento en las ventas de los de 32 bits y su proyección.

Estas cifras incluyen productos de hardware y software como:

  • IP de procesadores (Intellectual Property especialmente ARM y MIPS).
  • MCU/MPU Microcontroladores y Microprocesadores.
  • DSP Procesadores Digitales de Señal.
  • FPGA, arreglos de compuertas programables en circuito.
  • SBC (Single Board Computer) y otras tarjetas de aplicación y/o desarrollo.
  • RTOS Sistemas Operativos de Tiempo Real.
  • Herramientas para desarrollo y prueba de software, como Eclipse.
  • Middleware (Software para intercambio de información entre programas, hardware y sistema operativo), incluye bibliotecas como el Stack TCP/IP, USB3.0, WiFi entre otras.

Incluso ya se han identificado los nichos de mercado para este crecimiento: automóviles e IoT (Internet of Things) – que por lo mismo son hacia dónde debemos dirigir nuestro trabajo… una tajadita de esos 220 billones de dólares.

iotmarkey

iot_forecast
Lo cierto es que el mercado de dispositivos IoT aumentará enormemente en un futuro próximo.

Para un estudio completo del tema, puede consultar el documento (on-line):

The Internet of Things: The Next Growth Engine for the Semiconductor Industry

Un carro tiene entre 15 y 40 procesadores embebidos que manejan cosas como la seguridad de los pasajeros, la eficiencia del motor y la reducción de emisiones de CO que expulsa. Anualmente se ensamblan 90 millones de automóviles y se espera que este número crezca, así como las aplicaciones tecnológicas. Un listado parcial de sistemas es:

carmcu

  • ADAS: Sistemas de asistencia directa al conductor.
  • MSR: Evita la pérdida del control de la dirección debido al deslizamiento de las ruedas motrices cuando se aumentan las revoluciones del motor.
  • ABS: sistema de frenado antibloqueo.
  • EDS: bloqueo diferencial electrónico.
  • ASR: sistema de control de tracción.
  • TSC: Control de tracción.
  • ESC/ESP: control de estabilidad con asistencia de frenado.
  • Airbags.
  • La cerradura centralizada con su mando a distancia o llave electrónica.
  • Alarmas.

Con todo y sus riesgos de seguridad, se espera que hayan 1.5 billones de dispositivos IoT activos en el año 2020, debido a que IoT abarca una gama de productos que van desde el control industrial y automatización de hogares, hasta redes de electrodomésticos (línea blanca), vehículos, wearables (tecnología vestible) y relojes – casi todo sistema embebido puede habilitarse como IoT al añadir una conexión a internet. Los fabricantes están combinando el procesador con la conexión inalámbrica por WiFi, Bluetooth, ZigBee, IEEE 802.15.4 en variantes como 6LoWPAN o protocolos de banda angosta como NB-IoT, en una categoría nueva llamada procesadores habilitados para IoT.

¿Cuáles son los principales cambios en los sistemas embebidos?

Desde el año 2010 los precios de los MCU de 32 bits (especialmente los basados en ARM Cortex-M), se equipararon con respecto al precio de los MCU de 8 bits más complejos, con un aumento en la capacidad de procesamiento impensable para quienes aprendimos usando MCUs de 8 bits. Al mismo tiempo aparecieron herramientas oficiales de software libre (ARM GNU Toolchain) e incontables tarjetas para desarrollo basadas en procesadores ARM Cortex-M, en la actualidad las ventas de microcontroladores de 32 bits se doblaron y se espera que crezcan en el futuro.

armkt
Microchip se equivocó utilizando MIPS para sus productos de 32 bits, pero lo corrigieron (y de que manera) cuando compraron Atmel…

 

Si a esto le sumamos las tendencias del siglo XXI, que desdibujó la línea de separación entre Hardware y Software, a los ingenieros se les exige un enfoque unificado para el diseño de sistemas embebidos – basado en el uso masivo de software, la pregunta es:

¿Podemos aplicar las prácticas de la Ingeniería de Software en el diseño de sistemas embebidos?

¡POR SUPUESTO!

Ignoro como se enseñan los sistemas embebidos en la actualidad, pero en mi época la primera aproximación fue en ensamblador y compilador manual (tocaba escribir los códigos hexadecimales de las instrucciones e ir grabándolos en la memoria del MicroProfessor uno a uno), luego vinieron los microcontroladores PIC y con ellos ensamblador y simulador dentro de un IDE; pero la abstracción era nula pues el enfoque era de hardware y la programación Bare-Metal. Pienso que ahora se debe utilizar mucho el Arduino y los sistemas como el Cypress PSoC (cuyo kit para desarrollo cuesta US$4 !!!) que se programan en C y la abstracción en mucho mayor – pero no sé si se aplican los modelos de ingeniería de software existentes o, la programación es «hágale hasta que funcione».

barmetalrtosmodel

Buscando en la web se encuentran cosas interesantes – curiosamente en Europa, y cada una amerita una entrada de blog:

  1. ITEA AGILE Project, una iniciativa europea (Italia, Irlanda, Holanda, Bélgica, Finlandia y España) que resultó en 4 nuevos métodos y 12 herramientas que facilitan la adopción de las metodologías ágiles.
  2. Enfoque orientado a Objetos, utilizando lenguaje C lo que permite emplear las técnicas claves de la POO mediante técnicas como Project Header (Encabezado del projecto) y Port Header (Encabezado de puertos).
  3. MARTE/UML acrónimo de Modeling and Analysis of Real Time and Embedded Systems (Modelado y Análisis para Sistemas Embebidos y de Tiempo-Real), es un estándar para modelar este tipo de aplicaciones en UML2, que como hemos visto en clase es el lenguaje para modelado más utilizado, y que permite visualizar, especificar, construir y documentar de forma gráfica el sistema de software. MARTE es una extensión a UML que consta de cuatro partes y busca elevar el nivel de abstracción y enfocarse hacia metodologías centradas en el software:
  • Un Framework núcleo que define los conceptos básicos requeridos para soportar el dominio Real-Time/Embedded.
  • Una especialización o refinamiento inicial para el modelado de la aplicación.
  • Una segunda especialización o refinamiento que soporta el análisis cuantitativo de UML.
  • Una definición textual para los valores especificados en UML, que se combina con las bibliotecas dedicadas de MARTE.

marte_uml

Referencias Web:
http://www.businesswire.com/news/home/20160930005774/en/Global-Embedded-Systems-Market-Worth-USD-221
https://www.design-reuse.com/news/41008/iot-automotive-ic-market-growth.html
http://www.pensamientoscomputables.com/entrada/coche-vehiculo-procesadores-embebidos-empotrados.html
http://www.telegraph.co.uk/technology/news/11609406/The-car-of-the-future-is-the-most-powerful-computer-you-will-ever-own.html
http://www.zdnet.com/article/moores-law-may-be-dying-but-theres-still-plenty-of-demand-for-faster-chips/
http://www.linleygroup.com/report_detail.php?num=62
http://eecatalog.com/IoT/2016/02/03/processor-ip-vendors-adapt-to-iot/
http://www.icinsights.com/services/mcclean-report/report-contents/
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
https://itea3.org/project/result/download/5583/AGILE%20Innovation%20Report.pdf
https://en.wikipedia.org/wiki/Modeling_and_Analysis_of_Real_Time_and_Embedded_systems

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s