Publicado el 21 de Abril del 2019
650 visualizaciones desde el 21 de Abril del 2019
1,5 MB
97 paginas
Creado hace 22a (21/03/2003)
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS
INDUSTRIALES Y DE TELECOMUNICACIÓN
UNIVERSIDAD DE CANTABRIA
Proyecto Fin de Carrera
ENTORNO PARA LA INSTALACIÓN Y
UTILIZACIÓN DE MANEJADORES DE
DISPOSITIVOS EN MARTE OS
Para acceder al Título de
INGENIERO DE TELECOMUNICACIÓN
Francisco Guerreira Payo
Marzo 2003
INDICE
Capítulo 1
Introducción
1. 1. - Origen del sistema operativo MaRTE OS.
(MaRTE y el estándar POSIX)
1. 2. - Características y situación actual de MaRTE OS.
1. 3. - Uso de ‘drivers’ dentro de los sistemas operativos.
1. 4. - Objetivos del proyecto.
1. 5. - Organización de la memoria del proyecto
. . . . . . . . . . . .
1
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
4
7
8
10
Capítulo 2
Diseño del sistema de archivos para
dispositivos de entrada/salida en MaRTE.
2. 1. - Idea general sobre el nuevo sistema de archivos de
dispositivos de MaRTE.
. . . . . . . . . . . .
11
2. 2. - Comparación con sistemas de archivos de dispositivos
en otros sistemas operativos: Linux, Lynx, VxWorks.
2.2.1. Características de Lynx OS
2.2.2. Características de VxWorks
2.2.3. Características de Linux
2. 3. - Diseño y características del sistema de archivos a
desarrollar en MaRTE.
2.3.1. Características básicas en el diseño del sistema
de archivos de dispositivos de MaRTE OS
2.3.2. Explicación y diseño del sistema de archivos de
dispositivos de MaRTE OS
2. 4. - Implementación del sistema de archivos de MaRTE.
2.4.1. Tipos de datos internos al sistema de archivos de
dispositivos
2.4.2. Diseño de las tablas usadas para el manejo de
información referida al sistema de archivos de
dispositivos
2.4.3. Núcleo central del sistema de archivos de
dispositivos de MaRTE
(paquete ‘Kernel.File_System’)
2.4.4. Interfaz POSIX para el paso desde el ‘kernel’
hacia la aplicación
2.4.5. Funciones genéricas (uso de la función ‘Ioctl’)
2.4.6. Variaciones sobre el código inicial de MaRTE
2. 5. - Resumen y comentarios acerca del diseño del sistema de
archivos de dispositivos.
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
13
14
15
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
16
17
20
23
. . . . . . . . . . . .
26
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
29
33
34
40
Capítulo 3
Modo de uso de ‘drivers’ de dispositivos,
a través del sistema de archivos de MaRTE.
3. 1. - Instalación de ‘drivers’ en la tabla de dispositivos.
3.1.1. El paquete ‘Devices_Table’.
3.1.2. Modo de introducir un nuevo ‘driver’ en la tabla
3. 2. - Interfaz de un ‘driver’ de prueba realizado en Ada.
3. 3. - Interfaz de un ‘driver’ de prueba realizado en C.
3. 4. - Resumen acerca del primer uso de ‘drivers’ de
dispositivos.
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
42
46
48
51
55
Capítulo 4
Ejemplos de ‘drivers’ de dispositivos y
aplicaciones desarrolladas para su uso.
4. 1. - Primer contacto con las funciones de entrada/salida.
4.1.1. ‘Driver’ con cola circular para almacenamiento
de datos con tamaño configurable desde la
aplicación
4.1.2. Aplicación para un primer uso de funciones de
entrada/salida, utilizando el ‘driver’ con la cola
circular de tamaño configurable
4. 2. - Puerto paralelo.
4.2.1. ‘Driver’ para el puerto paralelo.
4.2.2. Aplicaciones para el uso del puerto paralelo.
4. 3. - Puerto serie.
4.3.1. ‘Driver’ para el puerto serie.
4.3.2. Aplicaciones para el uso del puerto serie.
4. 4. - Sincronización entre tareas, con uso de funciones de
entrada/salida bloqueantes.
4.4.1. ‘Driver’ con cola circular de tamaño fijo, con
funciones bloqueantes controladas con variables
condicionales.
4.4.2. Aplicación para la sincronización entre ‘threads’.
4. 5. - Resumen de la implementación de los ‘drivers’ de
dispositivos.
Capítulo 5
Conclusiones del proyecto.
5. 1. - Comentarios y conclusiones.
5. 2. - Línea futura de trabajo.
Referencias
. . . . . . . . . . . .
56
. . . . . . . . . . . .
58
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
61
64
71
77
. . . . . . . . . . . .
79
. . . . . . . . . . . .
. . . . . . . . . . . .
82
85
. . . . . . . . . . . .
. . . . . . . . . . . .
86
87
Capítulo 1
Introducción
Capítulo 1
Introducción
1. 1. - Origen del sistema operativo MaRTE OS.
(MaRTE y el estándar POSIX)
El origen y desarrollo del sistema MaRTE provienen del resultado de una tesis
doctoral que se desarrolló recientemente dentro del Grupo de Computadores y Tiempo
Real, adscrito al Departamento de Electrónica y Computadores de la Universidad de
Cantabria. Esta tesis doctoral “Planificación de Tareas en Sistemas Operativos de Tiempo
Real Estricto para Aplicaciones Empotradas” [1] propone una interfaz para sistemas
empotrados bajo la cual sea posible desarrollar aplicaciones en las que se puedan definir
internamente algoritmos de planificación de tareas, utilizando para su implementación las
bases establecidas en el estándar POSIX de sistemas operativos de tiempo real.
El hecho de cumplir la integración y compatibilidad con este estándar POSIX hace
que se facilite el uso de la interfaz para programadores familiarizados con este estándar, en
gran crecimiento debido a su alto grado de aceptación entre los fabricantes de sistemas
operativos. Además, incluso se podría tratar de realizar su incorporación a futura revisiones
del estándar POSIX, partiendo desde una base inicial bien establecida.
Para situar el estándar POSIX, comentemos sus orígenes. Se desarrolló en un
principio para unificar criterios en cuanto a los diferentes sistemas operativos, y con ello
lograr la portabilidad de las aplicaciones a nivel de código fuente entre los distintos
sistemas operativos, facilitándose así la adaptación de los programadores a nuevos entornos
de trabajo. La sucesiva aprobación, primero del estándar POSIX 1003.1b [2] en el año 1993
(extensiones de tiempo real), también conocido como POSIX.4, y posteriormente del
estándar POSIX 1003.1c [3] en el año 1995 (extensión de ‘threads’), también llamado
POSIX.4a, supusieron que ya se pudiera desarrollar aplicaciones con requisitos de tiempo
real sobre sistemas operativos POSIX.
El POSIX 1003.1b (extensiones de tiempo real) aportó al estándar dos tipos de
servicios con los cuales ya se podían ejecutar en un sistema POSIX aplicaciones que fueran
capaces de cumplir requisitos temporales:
- Servicios para facilitar la programación concurrente.
- Servicios necesarios para obtener un tiempo de respuesta predecible.
El POSIX 1003.1c (extensiones de ‘threads’) supuso el comienzo del uso de
‘threads’, a los que también se les podría calificar con el término ‘procesos ligeros’, como
unidades de concurrencia del POSIX, además de los ya existentes procesos. Con ello se
mejoró la eficacia, ya que los ‘threads’ suponen un uso de espacio de direcciones
compartido, teniendo a la vez diversos flujos de control concurrentes dentro de un único
proceso.
Grupo de Computadores y Tiempo Real
Entorno para la instalación y utilización de manejadores de dispositivos en MaRTE OS
- 1 -
Capítulo 1
Introducción
Pero un sistema que implemente el estándar POSIX de manera completa es un
sistema demasiado grande para su uso en pequeños sistemas empotrados y por ello se
aprobó en el año 1997 otro estándar, POSIX.13 [4], en el cual se definieron cuatro
subconjuntos de servicios del sistema operativo (“perfiles de entornos de aplicación”) para
que distintas plataformas pudieran usar distintos perfiles. Sus diferencias se encuentran en
la presencia o no presencia de un sistema de ficheros complejo y jerárquico, y en la
utilización o no utilización de múltiples procesos.
Perfil de aplicación
Sistema de
ficheros
Múltiples
procesos
Uso de
threads
Sistema de Tiempo Real Mínimo
Controlador de Tiempo Real
Sistema de Tiempo Real
Dedicado
Sistema de Tiempo Real
Multi-Propósito
Figura 1 . Características propias de los ‘perfiles de aplicación’ POSIX.13
De todos ellos, el perfil que interesa para la intenciones de desarrollo de MaRTE OS
es el “Sistema de Tiempo Real Mínimo”, usado en aplicaciones empotradas pequeñas, que
soportan unos servicios POSIX mínimos para reducir el tamaño de las aplicaciones
desarrolladas bajo este perfil. Las características que lo diferencian del resto de los perfiles
se encuentran en el hecho de que no requiere el soporte para múltiples procesos ni tampoco
un complejo sistema de ficheros jerárquico, eliminándose así la mayor parte del tamaño y la
complejidad del POSIX completo.
En el desarrollo de la citada tesis doctoral [1], una vez situada la base que conforma
el estándar POSIX para la implementación de esta interfaz para definir los algoritmos de
planificación, se llega a la conclusión de que no se encuentra ningún sistema operativo
POSIX apropiado para poder realizar la necesaria implementación de la interfaz
mencionada, de modo que se diseña e implementa un nuevo sistema operativo de tiempo
real bautizado como MaRTE [5] (“Minimal Real-Time Operating System for Embedded
Applications”), sobre el cual se va a desarrollar toda la base de este proyecto.
Grupo de Computadores y Tiempo Real
Entorno para la instalación y utilización de manejadores de dispositivos en MaRTE OS
- 2 -
Capítulo 1
Introducción
El código de MaRTE se ha realizado bajo las condiciones de libre distribución de
GPL (“GNU's Public License”). Este uso de las condiciones GPL de libre software [6] hace
del MaRTE OS un sistema operativo de código abierto, de gran utilidad para docencia y
futuras investigaciones en sistemas de tiempo real.
Esas condiciones establecidas para el proyecto GNU suponen que el pr
Comentarios de: Entorno para la instalación y utilización de manejadores de dispositivos en Marte OS (0)
No hay comentarios