next up previous
Siguiente: Sistemas de tiempo real Superior: Software libre para el Anterior: Software libre para el

Introducción

Los sistemas informáticos embarcados en satélites y otras naves espaciales tienen unos requisitos de seguridad muy críticos. La creciente dependencia de los computadores para realizar funciones de navegación, adquisición de datos, comunicaciones, control de dispositivos y otras en sistemas espaciales hace que un fallo de hardware o software comprometa seriamente el éxito de la misión. Fallos como los del cohete Ariane 5 o las últimas misiones de la NASA a Marte ponen de manifiesto la necesidad de asegurar la calidad del software embarcado en naves espaciales.

Esto hace que el diseño de los sistemas informáticos para el espacio sea muy conservador. Normalmente se utilizan componentes de hardware resistentes a la radiación, que además de ser mucho más costosos que los convencionales, tienen un ciclo de desarrollo mucho más prolongado. A título de ejemplo, el procesador ERC-32, actual estándar de la Agencia Espacial Europea (ESA) [#!ERC32!#], es una variante del SPARC v7 [#!SPARC!#], cuya versión convencional hace ya mucho tiempo que no se utiliza. La cantidad de memoria principal disponible suele ser limitada, debido a la necesidad de limitar el consumo de energía eléctrica, el peso y el volumen de los sistemas embarcados, y normalmente no se dispone de ningún tipo de memoria secundaria. Los subsistemas más críticos están duplicados con objeto de conseguir tolerancia de fallos mediante técnicas de redundancia.

En cuanto al software, normalmente se trata de asegurar la ausencia de fallos mediante técnicas preventivas, basadas sobre todo en el empleo de procesos de desarrollo adecuados [#!ECCSE40A!#] con métodos de garantía de calidad bien definidos. En la mayoría de los casos se somete el sistema --hardware y software-- a un proceso de certificación, realizado por un equipo independiente de los desarrolladores, que suele ser muy costoso y complejo. El objetivo del proceso de certificación es obtener una evidencia razonable de que el sistema está libre de fallos, para lo cual se utilizan técnicas como inspecciones de software, verificación formal, pruebas y análisis estático, según el grado de criticidad de los subsistemas que se analicen.

Estos requisitos han conducido, en general, al empleo de herramientas de software cerradas y costosas, con poco espacio para el software libre. Sin embargo, el panorama está empezando a cambiar. La calidad y robustez de herramientas como gcc, GNAT y GDB les han abierto las puertas del mundo del software crítico. Recientemente, la Agencia Espacial Europea ha puesto en marcha un programa para poner a la disposición de la industria espacial europea un conjunto completo de herramientas libres para computadores basados en ERC32.

En este artículo se describe una de estas herramientas, el núcleo de tiempo real ORK (Open Ravenscar Real-Time Kernel) [#!Puente_SPMamp_00a!#,#!Puente_SPMamp_00b!#], que permite desarrollar sistemas embarcados de tiempo real con tareas concurrentes en el lenguaje de programación Ada [#!Ada95!#]. En el apartado 2 se introduce de forma general la problemática de la construcción de sistemas de software de tiempo real con requisitos de seguridad críticos, y en el apartado 3 se describe el perfil de Ravenscar para sistemas de tiempo real concurrentes en el que se basa este trabajo. En el apartado 4 se describe la arquitectura del núcleo ORK. En el apartado 5 se explica en líneas generales la manera de utilizar ORK para construir un sistema de tiempo real. Por último se describe el estado actual del trabajo, los planes para el futuro próximo, y se comentan las conclusiones a las que se ha llegado.


next up previous
Siguiente: Sistemas de tiempo real Superior: Software libre para el Anterior: Software libre para el

Download this document: [src.tar.gz][ps.gz][html.tar.gz][dvi.gz]

Open Resources (www.openresources.com)
Last updated: 2000-11-11