Lección 28: Sistemas Embebidos

Un sistema embebido (a veces traducido del inglés como embebido, empotrado o incrustado)  es  un  sistema  informático  de  uso  específico  construido  dentro  de  un dispositivo mayor. Los sistemas integrados se utilizan para usos muy diferentes de los usos generales para los que se emplea un ordenador personal. En un sistema integrado la mayoría de los componentes se encuentran incluidos en la placa base (motherboard) (la tarjeta de vídeo, audio, módem, etc.)

Dos  de  las  diferencias  principales  son  el  precio  y  el  consumo.  Puesto  que  los sistemas integrados se pueden fabricar por decenas de millares o por millones de unidades,   una   de   las   principales   preocupaciones   es   reducir   los   costos.   Los sistemas  integrados  suelen  usar  un  procesador  relativamente  pequeño  y  una memoria pequeña para  reducir  los  costes. Se  enfrentan, sobre todo,  al problema de que un fallo en un elemento implica la necesidad de reparar la placa íntegra.

Lentitud  no  significa  que  vayan  a  la  velocidad  del  reloj.  En  general,  se  suele simplificar  toda  la  arquitectura  del  ordenador  o  computadora  para  reducir  los costes.   Por   ejemplo,   los   sistemas   integrados   emplean   a   menudo   periféricos controlados por interfaces síncronos en serie, que son de diez a cientos de veces más  lentos  que  los  periféricos  de  un  ordenador  o  computadora  personal  normal. Los primeros equipos integrados que se desarrollaron fueron elaborados por IBM en los años 1980.

Los programas de sistemas integrados se enfrentan normalmente a problemas de tiempo real.

 
Componentes de un Sistema Integrado

En  la  parte  central  se  encuentra  el  microprocesador,  microcontrolador,  DSP,  etc. Es  decir  la  CPU  o  unidad  que  aporta  inteligencia  al  sistema.  Según  el  sistema puede  incluir  memoria  interna  o  externa,  un  micro  con  arquitectura  específica según requisitos.

La comunicación adquiere gran importancia en los sistemas integrados. Lo normal es  que  el  sistema  pueda  comunicarse  mediante  interfaces  estándar  de  cable  o inalámbricas. Así un SE normalmente incorporará puertos de comunicaciones del tipo RS232, RS485, SPI, I²C, CAN, USB, IP, WiFi, GSM, GPRS, DSRC, etc.

El  subsistema  de  presentación  tipo  suele  ser  una  pantalla  gráfica,  táctil,  LCD, alfanumérico, etc.

Denominamos actuadores a los posibles elementos electrónicos que el sistema se encarga de controlar. Puede ser un motor eléctrico, un conmutador tipo relé etc. El mas habitual puede ser una salida de señal PWM para control de la velocidad en motores de corriente continua.

El  módulo  de  E/S  analógicas  y  digitales  suele  emplearse  para  digitalizar  señales analógicas  procedentes  de  sensores,  activar  diodos  LED,  reconocer  el  estado abierto cerrado de un conmutador o pulsador, etc.

El  módulo  de  reloj  es  el  encargado  de  generar  las  diferentes  señales  de  reloj  a partir de un único oscilador principal. El tipo de oscilador es importante por varios aspectos:   por   la   frecuencia   necesaria,   por   la   estabilidad   necesaria   y   por   el consumo  de   corriente   requerido.  El   oscilador   con  mejores  características   en cuanto  a  estabilidad  y  coste  son  los  basados  en  resonador  de  cristal  de  cuarzo, mientras  que  los  que  requieren  menor  consumo  son  los  RC.  Mediante  sistemas PLL  se  obtienen  otras  frecuencias  con  la  misma  estabilidad  que  el  oscilador patrón.

El  módulo  de  energía  (power)  se  encarga  de  generar  las  diferentes  tensiones  y corrientes necesarias para alimentar los diferentes circuitos del SE. Usualmente se trabaja con un rango de posibles tensiones de entrada que mediante conversores ac/dc  o  dc/dc  se  obtienen  las  diferentes  tensiones  necesarias  para  alimentar  los diversos componentes activos del circuito.

Además  de  los  conversores  ac/dc  y  dc/dc,  otros  módulos  típicos,  filtros,  circuitos integrados  supervisores  de  alimentación,  etc.  El  consumo  de  energía  puede  ser determinante  en  el  desarrollo  de  algunos  SE  que  necesariamente  se  alimentan con baterías y es imposible su sustitución, con lo que la vida del SE suele ser vida de las baterías.
 

Microprocesadores y sistemas embebidos

Un microprocesador es una implementación en forma de circuito integrado (IC) de la   Unidad   Central   de   Proceso   CPU   de   un   ordenador.   Frecuentemente   nos referimos  a  un  microprocesador  como  simplemente  “CPU”,  y  la  parte  de  un sistema  que  contiene  al  microprocesador  se  denomina  subsistema  de  CPU.  Los microprocesadores varían en consumo de potencia, complejidad y coste. Los hay de unos pocos miles de transistores y con coste inferior a 2 euros (en producción masiva) hasta de más de cinco millones de transistores que cuestan más de 600 euros.

Los  subsistemas  de  entrada/salida  y  memoria  pueden  ser  combinados  con  un subsistema  de  CPU  para  formar  un  ordenador  o  sistema  integrado  completo. Estos  subsistemas  se  interconectan  mediante  los  buses  de  sistema  (formados  a su vez por el bus de control, el bus de direcciones y el bus de datos).

El subsistema de entrada acepta datos del exterior para ser procesados mientras que  el  subsistema  de  salida  transfiere  los  resultados  hacia  el  exterior.  Lo  más habitual  es  que  haya  varios  subsistemas  de  entrada  y  varios  de  salida.  A  estos subsistemas se les reconoce habitualmente como periféricos de E/S.

El      subsistema      de    memoria    almacena     las    instrucciones      que    controlan     el funcionamiento  del  sistema.  Estas  instrucciones  comprenden  el  programa  que ejecuta el sistema. La memoria también almacena varios tipos de datos: datos de entrada que aún no han sido procesados, resultados intermedios del procesado y resultados finales en espera de salida al exterior.

Es  importante  darse  cuenta  de  que  los  subsistemas  estructuran  a  un  sistema según   funcionalidades.   La   subdivisión   física   de   un   sistema,   en   términos   de circuitos integrados o placas de circuito impreso (PCBs) puede y es normalmente diferente. Un solo circuito integrado (IC) puede proporcionar múltiples funciones, tales como memoria y entrada/salida.

Un microcontrolador (MCU) es un IC que incluye una CPU, memoria y circuitos de E/S.   Entre   los   subsistemas   de   E/S   que   incluyen   los   microcontroladores   se encuentran  los  temporizadores,  los  convertidores  analógico  a  digital  (ADC)  y digital   a   analógico   (DAC)   y   los   canales   de   comunicaciones   serie.   Estos subsistemas   de   E/S   se   suelen   optimizar   para   aplicaciones   específicas   (por ejemplo audio, video, procesos industriales, comunicaciones, etc.).

Hay   que   señalar   que   las   líneas   reales   de   distinción   entre   microprocesador, microcontrolador   y   microcomputador   en   un   solo   chip   están   difusas,   y   se denominan en ocasiones de manera indistinta unos y otros.

En general, un SE consiste en un sistema con microprocesador cuyo hardware y software   están   específicamente   diseñados   y optimizados   para   resolver   un problema  concreto  eficientemente. Normalmente un SE  interactúa continuamente con  el  entorno  para  vigilar  o  controlar  algún  proceso  mediante  una  serie  de sensores.   Su hardware se diseña normalmente a nivel de chips, o de interconexión  de  PCBs,  buscando  la  mínima  circuitería  y  el  menor  tamaño  para una  aplicación  particular.  Otra  alternativa  consiste  en  el  diseño  a  nivel  de  PCBs consistente en el ensamblado de placas con microprocesadores comerciales que responden   normalmente   a   un   estándar   como   el   PC-104   (placas   de   tamaño concreto que se interconectan entre sí “apilándolas” unas sobre otras, cada una de ellas con una funcionalidad específica dentro del objetivo global que tenga el SE ). Esta última solución acelera el tiempo de diseño pero no optimiza ni el tamaño del sistema ni el número de componentes utilizados ni el coste unitario. En general, un sistema embebido simple contará con un microprocesador, memoria, unos pocos periféricos de E/S y un programa dedicado a una aplicación concreta almacenado permanentemente   en   la   memoria.   El   término   embebido   o   empotrado   hace referencia al hecho de que el microcomputador está encerrado o instalado dentro de   un   sistema  mayor   y  su   existencia   como  microcomputador  puede   no   ser aparente. Un usuario no técnico de un sistema embebido puede no ser consciente de  que  está  usando  un  sistema  computador.  En  algunos  hogares  las  personas, que  no  tienen  por  qué  ser  usuarias  de  un  ordenador  personal  estándar  (PC), utilizan del orden de diez o más sistemas embebidos cada día.
 
Los microcomputadores embebidos  en estos sistemas  controlan electrodomésticos  tales  como: televisores,  videos,  lavadoras,  alarmas,  teléfonos inalámbricos,   etc.   Incluso   un   PC   tiene   microcomputadores   embebidos   en   el monitor, impresora, y periféricos en general, adicionales a la CPU del propio PC. Un        automóvil puede tener    hasta un centenar de microprocesadores y microcontroladores  que  controlan  cosas  como  la  ignición,  transmisión,  dirección asistida, frenos antibloqueo (ABS), control de la tracción, etc.

Los   sistemas   embebidos   se   caracterizan   normalmente   por   la   necesidad   de dispositivos de E/S especiales. Cuando se opta por diseñar el sistema embebido partiendo  de  una  placa  con  microcomputador  también  es  necesario  comprar  o diseñar placas de E/S adicionales para cumplir con los requisitos de la aplicación concreta.

Muchos sistemas embebidos son sistemas de tiempo real. Un sistema de tiempo real  debe  responder,  dentro  de  un  intervalo  restringido  de  tiempo,  a  eventos externos   mediante   la   ejecución   de   la   tarea   asociada   con   cada   evento.   Los sistemas  de  tiempo  real  se  pueden  caracterizar  como  blandos  o  duros.  Si  un sistema   de   tiempo   real   blando   no   cumple   con   sus   restricciones   de   tiempo, simplemente  se  degrada  el  rendimiento  del  sistema,  pero  si  el  sistema  es  de tiempo  real duro  y no cumple  con sus  restricciones  de  tiempo,  el sistema fallará. Este fallo puede tener posiblemente consecuencias catastróficas.

Un  sistema  embebido  complejo  puede  utilizar  un  sistema  operativo  como  apoyo para  la  ejecución  de  sus  programas,  sobre  todo  cuando  se  requiere  la  ejecución simultánea de los mismos. Cuando se utiliza un sistema operativo lo más probable es que se tenga que tratar de un sistema operativo en tiempo real (RTOS), que es un sistema operativo diseñado y optimizado para manejar fuertes restricciones de tiempo  asociadas  con eventos  en  aplicaciones  de  tiempo  real.  En una  aplicación de tiempo real compleja la utilización de un RTOS multitarea puede simplificar el desarrollo del software.

Hoy en día existen en el mercado fabricantes que integran un microprocesador y los elementos controladores de los dispositivos fundamentales de entrada y salida en un mismo chip, pensando en las necesidades de los sistemas embebidos (bajo coste,  pequeño  tamaño,  entradas  y  salidas  específicas,...).  Su  capacidad  de proceso  suele  ser  inferior  a  los  procesadores  de  propósito  general pero  cumplen con su cometido ya que los sistemas donde se ubican no requieren tanta potencia. Los  principales  fabricantes  son  ST  Microelectronics  (familia  de  chips  STPC), National (familia Geode), Motorola (familia ColdFire) e Intel.

En  cuanto  a  los  sistemas  operativos  necesarios  para  que  un  sistema  basado  en microprocesador  pueda  funcionar  y  ejecutar  programas  suelen  ser  específicos para  los  sistemas  embebidos.  Así  nos  encontramos  con  sistemas  operativos  de bajos  requisitos  de  memoria,  posibilidad  de  ejecución  de  aplicaciones  de  tiempo real, modulares (inclusión sólo de los elementos necesarios del sistema operativo para el sistema embebido concreto), etc. Los más conocidos en la actualidad son Windows CE, QNX y VxWorks de WindRiver.

 
Aplicaciones de un sistema embebido

Los lugares donde se pueden encontrar los sistemas embebidos son numerosos y de varias naturalezas. A continuación se exponen varios ejemplos para ilustrar las posibilidades de los mismos:

  • En  una  fábrica,  para  controlar  un  proceso  de  montaje  o  producción.  Una máquina  que  se  encargue  de  una  determinada  tarea  hoy  en  día  contiene numerosos   circuitos   electrónicos   y   eléctricos   para   el   control   de   motores, hornos,  etc.  que  deben  ser  gobernados  por  un  procesador,  el  cual  ofrece  un interfaz  persona  –  máquina  para  ser  dirigido  por  un  operario  e  informarle  al mismo de la marcha del proceso.
  • Puntos de servicio o venta (POS, Point Of Service). Las cajas donde se paga la compra en un supermercado son cada vez más completas, integrando teclados numéricos,  lectores  de  códigos  de  barras  mediante  láser,  lectores  de  tarjetas bancarias de banda magnética o chip, pantalla alfanumérica de cristal líquido, etc.  El  sistema  embebido  en  este  caso  requiere  numerosos  conectores  de entrada y salida y unas características robustas para la operación continuada.
  • Puntos   de   información   al   ciudadano.   En   oficinas   de   turismo,   grandes almacenes,  bibliotecas,  etc.  existen  equipos  con  una  pantalla  táctil  donde  se puede  pulsar  sobre  la  misma  y  elegir  la  consulta  a  realizar,  obteniendo  una respuesta personalizada en un entorno gráfico amigable.
  • Decodificadores  y  set-top  boxes  para  la  recepción  de  televisión.  Cada  vez existe  un  mayor  número  de  operadores  de  televisión  que  aprovechando  las tecnologías  vía  satélite  y de  red  de  cable  ofrecen  un  servicio  de  televisión  de pago diferenciado del convencional. En primer lugar envían la señal en formato digital  MPEG-2  con  lo  que  es  necesario  un  procesado  para  decodificarla  y mandarla al televisor. Además viaja cifrada para evitar que la reciban en claro usuarios   sin   contrato,   lo   que   requiere   descifrarla   en   casa   del   abonado. También ofrecen un servicio de televisión interactiva o web-TV que necesita de un software específico para mostrar páginas web y con ello un sistema basado en procesador con salida de señal de televisión.
  • Sistemas  radar  de  aviones.  El  procesado  de  la  señal  recibida  o  reflejada  del sistema radar embarcado en un avión requiere alta potencia de cálculo además de  ocupar  poco  espacio,  pesar  poco  y  soportar  condiciones  extremas  de funcionamiento (temperatura, presión atmosférica, vibraciones, etc.).

                    o   Equipos de medicina en hospitales y ambulancias UVI – móvil.

                    o   Máquinas de revelado automático de fotos.

                    o   Cajeros automáticos.

                    o   Pasarelas (Gateways) Internet-LAN.

  • Y un sin fin de posibilidades aún por descubrir o en estado embrionario como son  las  neveras  inteligentes  que  controlen  su  suministro  vía  Internet,  PCs  de bolsillo, etc.

 

Ventajas de un sistema embebido sobre las soluciones industriales tradicionales

Los  equipos  industriales  de  medida  y  control  tradicionales  están  basados  en  un microprocesador   con   un   sistema   operativo   propietario   o   específico   para   la aplicación correspondiente. Dicha aplicación se programa en ensamblador para el microprocesador  dado  o  en  lenguaje  C,  realizando  llamadas  a  las  funciones básicas  de  ese  sistema  operativo  que  en  ciertos  casos  ni  siquiera  llega  a  existir. Con los modernos sistemas PC embebido basados en microprocesadores i486 o i586   se   llega   a   integrar   el   mundo   del   PC   compatible   con   las   aplicaciones industriales. Ello implica numerosas ventajas:

  • Posibilidad  de  utilización  de  sistemas  operativos  potentes  que  ya  realizan numerosas   tareas:   comunicaciones   por   redes   de   datos,   soporte   gráfico, concurrencia   con   lanzamiento   de   threads,   etc.   Estos   sistemas   operativos pueden ser los mismos que para PCs compatibles (Linux, Windows, MS-DOS) con  fuertes  exigencias  en  hardware  o  bien  ser  una  versión  reducida  de  los mismos con características orientadas a los PCs embebidos.
  • Al utilizar dichos  sistemas operativos  se pueden encontrar  fácilmente herramientas      de desarrollo software potentes así como numerosos programadores que las dominan, dada la extensión mundial de las aplicaciones para PCs compatibles.
  • Reducción  en  el  precio  de  los  componentes  hardware  y  software  debido  a  la gran cantidad de PCs en el mundo.