Sistemas Empotrados

Requerimientos

Sistema operativo

Los sistemas de control actuales demandan cada vez mas servicios sofisticados que proporcionan los sistemas operativos modernos, estos son: Además, el uso de un sistema operativo nos permitirá: Si consideramos esto junto con : 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:

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: Inicialmente, es aconsejable determinar de forma realista los requerimientos del sistema: 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: 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.
Siguiente