CENTRO DE INVESTIGACIÓN Y DE ESTUDIOS AVANZADOS DEL INSTITUTO POLITÉCNICO NACIONAL UNIDAD ZACATENCO DEPARTAMENTO DE COMPUTACIÓN “Micronúcleo de sistema operativo para tiempo real sobre la arquitectura Intel de 32 bits” Tesis que presenta William Martínez Cortés Para obtener el grado de Maestro en Ciencias en Computación Directores de la Tesis: Dr. Pedro Mejía Álvarez Dr. Luis Eduardo Leyva del Foyo México, Distrito Federal. Noviembre, 2012 Dedicatoria A mis padres, que a pesar de la distancia me acompañan en este momento tan importante y tan esperado para ellos. A mi abuela Batistina, que siempre se ha preocupado por mí. A la memoria de mi abuelo Pablo Martínez Jarque, quien siempre se mostró muy orgulloso de mí. Con amor a Janet Rodríguez Bufanda. Agradecimientos Ante todo agradezco a mis padres, por su preocupación y por el apoyo que siempre me han brindado, sin el cual hubiese sido imposible la realización de estos estudios. Quiero realizar un agradecimiento especial a mi tutor Luis E. Leyva del Foyo, quien me ha servido de guía desde mis años de estudios de licenciatura. A mi asesor Pedro Mejía, por al apoyo que me brindó durante todo el tiempo que duró la maestría, y no solo durante el trabajo de tesis. Al CINVESTAV y en particular al Departamento de Computación, por brindarme la oportunidad de estudiar en tan prestigioso centro. Al Consejo Nacional de Ciencia y Tecnología (CONACyT), por el apoyo económico brindado. A Liliana Puente Maury, por su amistad y sus sugerencias para mejorar el presente documento. A todos mis compañeros de grupo, y en especial a Pau, Julio Cesar, Daniel, Ana Helena, y Antonio Pico, que a pesar de las diferencias culturales siempre me hicieron sentir como uno mas de ellos. A Janet Rodríguez Bufanda, por acompañarme, apoyarme, y por enseñarme facetas de México desconocidas para mí. A todos los hombres y mujeres comprometidos con la ciencia, por servirme de inspiración y ejemplo. A todos lo que de una forma u otra han ayudado a la realización de este trabajo, o me han apoyado durante mi estancia en este hermoso país llamado México, Muchas gracias. Contenido ÍNDICE DE FIGURAS .............................................................................................................................................. VII ÍNDICE DE TABLAS .................................................................................................................................................. IX RESUMEN .............................................................................................................................................................. XI ABSTRACT ............................................................................................................................................................ XIII CAPÍTULO 1 INTRODUCCIÓN ................................................................................................................................... 1 1.1 OBJETIVOS ............................................................................................................................................................... 2 1.2 RESULTADOS DEL TRABAJO Y ACTIVIDADES DESARROLLADAS ............................................................................................... 3 1.3 ESTRUCTURA DEL DOCUMENTO DE TESIS ........................................................................................................................ 4 CAPÍTULO 2 PANORÁMICA DE LOS SISTEMAS OPERATIVOS PARA SISTEMAS DE TIEMPO REAL .............................. 7 2.1 SISTEMAS EMBEBIDOS Y DE TIEMPO REAL ....................................................................................................................... 7 2.2 SISTEMAS OPERATIVOS DE TIEMPO REAL ......................................................................................................................... 8 2.3 SISTEMAS OPERATIVOS DE TIEMPO REAL DE AMPLIO USO ................................................................................................... 8 2.3.1 QNX Neutrino............................................................................................................................................ 9 2.3.2 VxWorks .................................................................................................................................................. 10 2.3.3 Windows NT............................................................................................................................................ 11 2.3.4 Linux ....................................................................................................................................................... 12 2.3.5 LynxOS .................................................................................................................................................... 13 2.3.6 eCos ........................................................................................................................................................ 13 2.3.7 Windows CE ............................................................................................................................................ 14 2.4 MANEJO DE INTERRUPCIONES EN SISTEMAS OPERATIVOS DE TIEMPO REAL .......................................................................... 15 2.4.1 Hilos de interrupción ............................................................................................................................... 16 2.4.2 Manejo de interrupciones en dos niveles................................................................................................ 17 2.4.3 Reducción del costo de enmascaramiento de interrupciones ................................................................. 18 2.5 PARTEMOS ......................................................................................................................................................... 18 2.5.1 Arquitectura de PARTEMOS .................................................................................................................... 19 2.5.2 Manejo de interrupciones en PARTEMOS ............................................................................................... 21 CAPÍTULO 3 PANORÁMICA DE LA ARQUITECTURA INTEL DE 32 BITS RELEVANTE A PARTEMOS ............................ 25 3.1 ARQUITECTURA DE LA CPU ....................................................................................................................................... 25 3.1.1 Registros básicos de ejecución ................................................................................................................ 26 3.1.2 Modelo de administración de memoria de IA-32 ................................................................................... 28 3.1.3 Modelo de administración de interrupciones de IA-32 ........................................................................... 31 3.1.4 Protección ............................................................................................................................................... 34 3.1.5 Soporte para depuración de la arquitectura IA-32 ................................................................................. 34 3.1.6 Otras características de la arquitectura IA-32 ........................................................................................ 36 3.2 ARQUITECTURA DEL CONTROLADOR DE INTERRUPCIONES................................................................................................. 37 3.2.1 Formas de activación de interrupciones ................................................................................................. 37 3.2.2 Arquitectura del controlador de interrupciones 8259 ............................................................................ 38 3.2.3 Arquitectura del controlador de interrupciones APIC ............................................................................. 40 3.3 DECISIONES DE DISEÑO PARA PARTEMOS SOBRE LA ARQUITECTURA IA-32....................................................................... 49 vii Micronúcleo de sistema operativo para tiempo real sobre la arquitectura Intel de 32 bits CAPÍTULO 4 ENTORNO PARA EL DESARROLLO DE SISTEMAS OPERATIVOS DE 32 BITS .......................................... 53 4.1 REQUERIMIENTOS DE UN ENTORNO PARA EL DESARROLLO DE SISTEMAS OPERATIVOS ............................................................ 53 4.2 ALTERNATIVAS PARA LOS COMPONENTES DEL ENTORNO ................................................................................................. 55 4.2.1 Plataforma de desarrollo ....................................................................................................................... 55 4.2.2 Compilador/Enlazador de C para 32 bits .............................................................................................. 55 4.2.3 Ensambladores para la arquitectura IA-32 ........................................................................................... 57 4.2.4 Cargador ................................................................................................................................................ 57 4.2.5 Simuladores de la plataforma de ejecución ........................................................................................... 58 4.2.6 Otras Herramientas................................................................................................................................ 60 4.2.7 Herramientas para desarrollo en 16 bits ............................................................................................... 61 4.3 USO DEL ENTORNO DE DESARROLLO ........................................................................................................................... 62 4.3.1 Compilador GCC cruzado ........................................................................................................................ 63 4.3.2 Creación y compilación de un núcleo con arranque a través de GRUB .................................................. 63 4.3.3 Creación y uso de bibliotecas de enlazador ........................................................................................... 68 4.3.4 Scripts de compilación ............................................................................................................................ 69 4.3.5 Ejecución del núcleo ............................................................................................................................... 70 CAPÍTULO 5 DESARROLLO DE LA CAPA DE ABSTRACCIÓN DE HARDWARE ............................................................ 71 5.1 COMPILACIÓN CONDICIONAL ..................................................................................................................................... 71 5.2 DESCRIPCIÓN DEL MARCO DE PRUEBA ......................................................................................................................... 73 5.3 DESARROLLO DEL HAL DE INTERRUPCIONES ................................................................................................................. 75 5.3.1 Papel del INTHAL en el modelo integrado de prioridades ...................................................................... 75 5.3.2 Simplificación a la interfaz del INTHAL ................................................................................................... 76 5.3.3 Implementación del INTHAL de 32 bits sobre PIC 8259 ......................................................................... 77 5.3.4 Implementación del INTHAL sobre controladores APIC......................................................................... 80 5.3.5 Soporte de interrupciones activadas por nivel ....................................................................................... 89 5.3.6 Pruebas al INTHAL .................................................................................................................................. 89 5.4 DESARROLLO HAL DE EXCEPCIONES ............................................................................................................................ 90 5.5 DESARROLLO DEL HAL DE CPU ................................................................................................................................. 91 5.5.1 Análisis del modelo de conmutación de contexto previo ....................................................................... 91 5.5.2 Nueva conmutación de contexto ligera ................................................................................................. 92 5.5.3 Cambios al CPUHAL ................................................................................................................................ 94 5.5.4 Notas de implementación ...................................................................................................................... 95 5.5.5 Pruebas al CPUHAL................................................................................................................................. 95 5.6 HAL DE MEMORIA .................................................................................................................................................. 97 5.7 ARCHIVOS DE LA CAPA HAL ...................................................................................................................................... 97 5.8 PROCEDIMIENTO PARA PORTAR EL HAL A OTRAS ARQUITECTURAS .................................................................................... 98 5.8.1 Trabajo preliminar ................................................................................................................................. 98 5.8.2 Técnicas y carpetas de trabajo ............................................................................................................... 99 5.8.3 Pasos para portar el código del HAL .................................................................................................... 101 CAPÍTULO 6 DESARROLLO DEL NÚCLEO DE PARTEMOS ...................................................................................... 107 6.1 CAMBIOS EN EL CÓDIGO PARTEMOS ...................................................................................................................... 107 6.1.1 Restructuración de carpetas. ............................................................................................................... 107 6.1.2 Cambios relacionados a los tipos de datos .......................................................................................... 107 6.1.3 Otros cambios menores ....................................................................................................................... 109 viii Contenido 6.1.4 Cambios asociados a las modificaciones realizadas al HAL .................................................................. 110 6.1.5 Cambios en el tratamiento de procedimientos asíncronos................................................................... 111 6.1.6 Corrección de errores ............................................................................................................................ 112 6.2 MACROS DE MANIPULACIÓN DE LA PILA DE EJECUCIÓN .................................................................................................. 114 6.3 ARCHIVOS ESPECÍFICOS DE LA PLATAFORMA ................................................................................................................ 115 6.4 MODULO DE CONFIGURACIÓN ................................................................................................................................. 116 6.5 FUNCIONES DE SALIDA ............................................................................................................................................ 117 6.5.1 Técnicas de salida de caracteres individuales....................................................................................... 117 6.5.2 Módulo “conio.c” .................................................................................................................................. 119 6.5.3 Módulo “boshlog.c” .............................................................................................................................. 119 6.5.4 Administrador de ventanas “screen.c” ................................................................................................. 120 6.5.5 Emisión de trazas .................................................................................................................................. 121 6.6 ESTRUCTURA DE CARPETAS ...................................................................................................................................... 123 6.7 COMPILACIÓN DE PARTEMOS ............................................................................................................................... 124 6.8 DEPURACIÓN DE PARTEMOS................................................................................................................................. 126 6.8.1 Uso del depurador Peter-Bochs ............................................................................................................ 127 6.8.2 Uso de registros de depuración ............................................................................................................ 132 6.9 GUÍA PARA PORTAR PARTEMOS A OTRAS PLATAFORMAS ............................................................................................ 134 6.9.1 Cambios necesarios .............................................................................................................................. 134 6.9.2 Notas sobre posibles cambios en el núcleo........................................................................................... 136 6.10 EVALUACIÓN DE LA PORTABILIDAD DE PARTEMOS ................................................................................................... 137 6.10.1 Cálculo del esfuerzo de portado de PARTEMOS ............................................................................... 138 6.10.2 Análisis de portabilidad .................................................................................................................... 139 CAPÍTULO 7 DESARROLLO DE APLICACIONES EN PARTEMOS .............................................................................. 143 7.1 API DE PARTEMOS ............................................................................................................................................. 143 7.2 EJEMPLO DE APLICACIÓN PARTEMOS ...................................................................................................................... 144 7.3 COMPILACIÓN DE LA APLICACIÓN .............................................................................................................................. 146 7.4 EJECUCIÓN DE LA APLICACIÓN ................................................................................................................................. 147 CAPÍTULO 8 VALORACIÓN DEL TRABAJO REALIZADO .......................................................................................... 149 8.1 VALORACIÓN DEL TRABAJO DE PORTABILIDAD DE PARTEMOS ...................................................................................... 149 8.1.1 Logros del trabajo realizado para la portabilidad de PARTEMOS ........................................................ 149 8.1.2 Limitaciones del trabajo realizado ........................................................................................................ 150 8.1.3 Recomendaciones ................................................................................................................................. 151 8.2 VALORACIÓN DE LA VERSIÓN ACTUAL DE PARTEMOS ................................................................................................. 152 8.2.1 Ventajas de la versión actual de PARTEMOS ........................................................................................ 152 8.2.2 Limitaciones de la versión actual de PARTEMOS .................................................................................. 152 CONCLUSIONES ................................................................................................................................................... 155 REFERENCIAS ...................................................................................................................................................... 157 ANEXO A INSTALACIÓN DEL ENTORNO DE DESARROLLO .................................................................................... 159 A1. CREACIÓN DE DIRECTORIOS EN LA MÁQUINA DE DESARROLLO.................................................................................. 160 A2. INSTALACIÓN DE CYGWIN ................................................................................................................................ 160 A3. INSTALACIÓN DE CYGWIN DESDE EL CD DE INSTALACIÓN DEL ENTORNO .................................................................... 162 A4. COPIA DEL COMPILADOR CRUZADO PREINSTALADO ............................................................................................... 163 ix Micronúcleo de sistema operativo para tiempo real sobre la arquitectura Intel de 32 bits A5. CREACIÓN DEL COMPILADOR CRUZADO DESDE EL CÓDIGO FUENTE ........................................................................... 163 A6. CONFIGURARACIÓN DE DIRECTORIOS PARA USO DEL ENTORNO ............................................................................... 164 A7. CREACIÓN DE UN CD DE INSTALACIÓN DEL ENTORNO ............................................................................................ 165 ANEXO B INSTALACIÓN Y USO DE OTROS COMPONENTES DEL ENTORNO .......................................................... 167 B1. INSTALACIÓN DE LA MÁQUINA VIRTUAL BOCHS Y DEPURADOR PETER BOCHS ............................................................. 167 B2. TRABAJO CON DISCOS VIRTUALES ...................................................................................................................... 168 B3. INSTALACIÓN DE GRUB EN UNA MEMORIA USB ................................................................................................. 169 ANEXO C CÓDIGO EJEMPLO DE APLICACIÓN PARTEMOS .................................................................................... 171 ANEXO D LISTADO DE ARCHIVOS DE PARTEMOS32 PARA ANÁLISIS DE PORTABILIDAD ...................................... 175 x
Description: