Sistemas Empotrados
Requerimientos
Sistema operativo
Los sistemas de control actuales demandan
cada vez mas servicios sofisticados que proporcionan los sistemas operativos
modernos, estos son:
-
Interfaces Gráficas de alta
resolución con el usuario (GUI). ( X Window, Web, etc...)
-
Pilas de protocolos de red.
-
Discos duros, CD-ROM y otros periféricos
convencionales.
Además, el uso de un sistema
operativo nos permitirá:
-
Independizar el software de la plataforma
( portabilidad ).
-
Utilizar el soporte del sistema operativo
( herramientas ).
Si consideramos esto junto con :
-
la velocidad a la que se innova en
hardware
-
la velocidad a la que este nuevo hardware
queda obsoleto.
los servicios comentados NO pueden
ser alcanzados utilizando la aproximación antigua de desarrollar
todo el sistema o reescribir todo el código para cada diseño
empotrado.
Por tanto, la solucion eficaz es
incorporar en nuestro sistema un sistema operativo que nos ofrezca estos
servicios, con lo que logramos independizar el código de nuestra
aplicación de control, y que además nos puede ofrecer la
portabilidad de éste una vez desarrollado.
Pero en principio no nos sirve cualquies
sistema operativo. Si bien necesitamos la potencia y el soporte de un sistema
operativo tal como los actualmente comerciales de proposito general, como
Windows, los sistemas empotrados, además, necesitan:
-
una fiabilidad extrema para operaciones
ininterrumpidas en modo desatendido. ( ¿Windows ? )
-
posibilidad de personalizar el S.O.
de acuerdo a las necesidades únicas de nuestra aplicación:
-
Dispositivos
-
Memoria
-
Requisitos de RT, etc..
Sistemas de Tiempo Real
A menudo se clasifica erroneamente
un sistema empotrado como de Tiempo Real. Sin embargo,
los sistemas empotrados no requieren por defecto capacidades de tiempo
real. Cabe destacar primero si es necesario o no un sistema con dicha capacidad
para nuestro diseño. Para ello, se ha de determinar cuales son las
exigencias temporales de respuesta de nuestro sistema.
Podemos clasificar el sistema como:
Sistema de tiempo real fuerte (
Hard Real Time):
-
Cuando el sistema debe responder SIEMPRE
a los eventos de una forma determinista, con un tiempo acotado. Un ejemplo
seria el control del airbag de un coche, que debe asegurar la respuesta
dentro de un tiempo acotado y de lo contrario la accion de control seria
inutil.
Sistemas de tiempo real suave (
Soft Real Time):
-
Cuando el sistema debe responder de
una forma determinista, pero las restricciones temporales son suaves siendo
suficiente que el comportamiento del sistema este dentro de un rango de
tolerancia. Por ejemplo, sistemas de comunicacion donde el retraso en la
entrega de un paquete de voz puede tolerarse descartandolo y procesando
el siguiente.
Un sistema del segundo tipo es mas
sencillos de implementar, y normalmente se resuelve cuidando el tiempo
de los cambios de contexto, latencias de interrupciones, prioridad de las
tareas y su planificación. Pero para el primero, necesitaremos una
aproximación mas restrictiva, que nos permita garantizar que el
código crítico se ejecutará SIEMPRE dentro del
plazo cuando se produzca el evento, y por tanto necesitaremos un sistema
operativo que garantize la ejecución del código de tiempo
real.
Hardware
La eleccion del mejor hardware es una
tarea compleja, que normalmente se ve influenciado no solo por las necesidades
del sistema sino también por:
-
coste, pero no solo el inicial, sino
el total incluyendo herramientas y soporte para el hardware.
-
politicas de empresa, como por ejemplo
compatibilidad con diseños previos.
-
falta de información sobre la
situación actual del mercado.
Inicialmente, es aconsejable determinar
de forma realista los requerimientos del sistema:
-
Velocidad de la CPU, ancho de palabra,
capacidad de memoria,etc..
-
Velocidad a la que debe funcionar el
bus y resto de sistemas de comunicación.
y despues multiplicarlo por 2. Una
buena estrategia es utilizar CPUs con periferia integrada, de esta forma
se reduce el Hardware y con ello la posibilidad de tener errores
en él.
Si escogemos CPUs populares,además
existen disponibles multitud de "drivers" para los perifericos además
de herramientas. Esto influirá en el coste final de la elección.
Herramientas
Como hemos visto en el apartado anterior,una
clave para desarrollar sistemas empotrados es el conjunto de herramientas
disponibles.
Cuanto mejores herramientas de
desarrollo y depuración dispongamos, más rápido y
mejor se hara la faena. Para cada etapa de desarrollo necesitamos un tipo
de herramientas:
-
Asistentes de diseño, Analizadores
lógicos,...
-
Compiladores, ensambladores,...
-
Depuradores, simuladores,...
Tradicionalmente, la primera herramienta
utilizada era un monitor del sistema, pieza cara que sirve para examinar
que ocurre realmente en el bus del sistema y permite controlar la actividad
del microcontrolador.
En el pasado, esta herramienta
era la principal para la depuración del sistema. Actualmente, una
vez se dispone de un software inicial que funciona bien, como por ejemplo,
el sistema operativo, podemos coseguir soporte a través de por ejemplo
un puerto serie. Esto permite poder depurar el sistema desde una estación
de trabajo, sólo necesitamos un código de arranque que inicialice
la máquina y que nos de soporte por dicho puerto.