Diseño y Desarrollo de un Sistema Operativo de Tiempo Real

Introducción

El proyecto ITRON (Industrial The Real-time Operating system Nucleus) se centra en la creación de estándares para especificaciones de sistemas operativos multitarea en tiempo real, cuya utilización está orientada especialmente a sistema embebidos. Dentro de este proyecto se plantea la realización de un sistema operativo siguiendo esta norma y que se denomina EROS (Embedded Real-time Operating System).

Se realizará un prototipo sobre una plataforma PC-INTEL. La implementación buscará facilitar su posterior migración a otra plataforma, como las placas existentes en el mercado para Set-Top-Box. Para ello se dividirá el código que dependa del hardware del que no.


Descripción

Como se indicó anteriormente, en la arquitectura MHP se define una capa de hardware y otra de software dependiente del hardware sobre las que se implementarán las API. Con el fin de cubrir adecuadamente esta parte de la arquitectura global del Set-Top-Box (STB), se debe desarrollar un software que gestione los recursos hardware de manera eficiente.

Teniendo en cuenta las características de un STB y sus exigencias, se observa que:

  • Es necesaria la Multitarea ya que habrá muchos procesos interdependientes en el sistema.

  • El tiempo que se tarda en dar una respuesta es tan importante como la respuesta en sí. Por ejemplo, al procesar el flujo de entrada de información. Así, se hace necesaria la característica de Tiempo Real.

  • Por último, debe tenerse en cuenta que en un STB se disponen de unos recursos limitados para una gran cantidad de aplicaciones en varios niveles. Esto obliga al SO a utilizar la menor cantidad de recursos tanto de memoria como de CPU.

Para realizar el Sistema Operativo de Tiempo Real y Multitarea (SOTRM) que se necesita, se ha decidido abordar un desarrollo propio adaptado a las necesidades de un STB. Se evita así tanto el uso de un sistema operativo existente no adecuado como el posible pago de royalties. Esto último iría en contra del objetivo de obtener un producto competitivo en el mercado, en una futura implementación comercial.

Para el diseño del Sistema Operativo se ha decidido utilizar la norma uITRON 3.02.00, que es de libre uso y de la que existen múltiples implementaciones en diferentes procesadores. Sus características de modularidad e independencia del hardware la hacen muy adecuada para cumplir los objetivos de adaptación a las características deseadas para un STB, y de poder portar fácilmente la implementación realizada de una plataforma a otra.


Objetivos

El objetivo del proyecto global es el de investigar en las tecnologías surgidas en torno a la televisión digital en general y del STB en concreto.

Por ello y con el objetivo de disponer de manera rápida y fácil de una implementación de Sistema Operativo con el que realizar pruebas, se ha decidido realizar un prototipo del SOTRM sobre una plataforma PC-INTEL.

Este prototipo debe implementar todas las funcionalidades que sean necesarias para el desarrollo del software de las capas superiores (gestión de tareas, definición de rutinas de servicio de interrupción, comunicación y sincronización entre tareas, etc.), así como de gestionar de manera eficiente todos los dispositivos hardware de que pueda disponer un STB (mando a distancia, decodificadores hardware, etc.).

Además, se ha tenido en cuenta en todo momento, como objetivo adicional, la idea de la portabilidad, aislando adecuadamente todas aquellas partes del sistema operativo dependientes del hardware, de tal manera que el sistema operativo que se desarrolle se pueda utilizar con los mínimos cambios posibles sobre la futura plataforma hardware de un STB comercial.


Método de Desarrollo

Se divide la implementación en dos partes:

  • En la primera se realiza todo lo necesario para que la plataforma PC-INTEL proporcione un entorno adecuado para la programación. Esta parte es dependiente del hardware.
  • En la segunda se realizará codigo que en su mayoría será portable a otra plataforma, siempre que posea un compilador de C.

Esta división no es perfecta, por lo que se tratará de explicar claramente los puntos conflictivos a la hora de una posterior migración a otra plataforma.


Código PC-INTEL

Se irá paso a paso, hasta conseguir un sector de arranque que cargue el sistema operativo desde un disket, pase a modo protegido y disponga todo lo necesario para permitir la entrada por teclado y la salida por pantalla. Además se verá como inicializar el sistema de interrupciones:

  • Un sector de arranque en Modo Real (MR).
  • Un sector de arranque que pase a Modo Protegido (MP).
  • Un sector de arranque que pase al MP y cargue el núcleo del SO.
  • Establecimiento del sistema de interrupciones.
  • Añadir el código necesario para poder ver textos en pantalla y recibir entrada por teclado.


Con todo esto ya se puede realizar un sistema de ejemplo general que cargue y ejecute un kernel en MP y permita el uso del teclado y la pantalla.


Código de EROS

Este código se basa en lo visto anteriormente, añadiendo las funcionalidades del SOTR.

Características

Las características básicas de la implementacón son:

  • Se utiliza el lenguaje C (gcc) y ASM (gas).
  • Se ha separado el código C del ASM en ficheros distintos.
  • La interfaz del SOTR es una librería en C, que es la encargada de realizar las llamadas al sistema.
  • Llamadas al sistema mediante el mecanismo de interrupciones.
  • Paso de parámetros en las llamadas al sistema mediante registros.
  • Tabla GDT inicializada por el sector de arranque (ASM) con dos segmentos, uno de datos y otro de código.
  • Tabla IDT inicializada por el kernel (C). Funciones en C para acceder a la IDT.
  • Asignación de pilas de tamaño fijo a cada proceso.

A continuación se mostrarán los pasos dados, orientados al objetivo inicial de un SOTR basado en la norma ITRON 3.0:

  • Implementación del mecanismo de llamadas al sistema.
  • Establecimiento de las interrupciones.
  • Creación de una aplicación que use las librerías.
  • Creación de un escenario de pruebas.
  • Creación de un sistema completo de pruebas.


Estado Actual

  • 22/10/2001 Se añaden llamadas al sistema para la Gestión de Semáforos. EROS v0.6
  • 5/10/2001 Aplicaciones de prueba con entorno gráfico. Se utiliza RR.
  • 15/9/2001 Se añaden llamadas al sistema para la Gestión de interrupciones. EROS v0.5
  • ------------------------
  • 5/6/2001 Entorno gráfico con intérprete de comandos para realizar pruebas.
  • 23/5/2001 Llamadas al Sistema de Sincronización Dependientes de la Tarea. EROS v0.2
  • 1/5/2001 Llamadas al Sistema de Gestión de Tareas. EROS v0.1
  • 8/5/2001 Controlador del teclado.
  • 1/5/2001 Impresón de textos en pantalla.
  • 23/4/2001 Cargador definitivo de EROS.
  • 15/3/2001 Cargador que pasa a modo Protegido inicializando GDT e IDT. Carga el núcleo y le pasa el control..