Extenso tratado sobre sistemas operativos
procesadores de la serie PowerPC8xx, como el modo de arranque del procesador. Las guías sobre codificación y depuración, además de cómo iniciar el sistema operativo y otros problemas de implementación, exploran el proceso de inicio para soluciones de sistemas integrados.
Palabras clave Inicio de mapeo de memoria del sistema operativo integrado MPC860
El desarrollo y la aplicación del sistema integrado son diferentes de la PC. El proceso de desarrollo involucra tanto hardware como software, y es necesario diseñar la plataforma de hardware. Teniendo en cuenta el desarrollo del sistema operativo y las aplicaciones de capa superior, la interfaz del programa de aplicación de PC ha personalizado el hardware y la plataforma del sistema operativo. Los desarrolladores solo necesitan llamar al sistema y a los servicios para completar las funciones correspondientes. Según la aplicación y las limitaciones de costos de la plataforma de hardware del sistema integrado, el host suele utilizar la personalización de la aplicación. memoria. Dispositivos periféricos como preguntas de opción múltiple, así como técnicas especiales de depuración de software guían el diseño de la plataforma y se vuelven muy complejos. Por lo tanto, al desarrollar sistemas integrados, es necesario realizar un análisis en profundidad del proceso de inicio del sistema, diferentes plataformas de hardware y modos operativos de software, realizar una inicialización eléctrica básica e integrar efectivamente el desarrollo de hardware y software para guiar la ejecución del sistema operativo. . El núcleo de este problema es el modo de inicio del sistema.
El código de arranque de un sistema integrado suele constar de dos partes: el código de arranque y el código de inicialización del entorno de ejecución del sistema operativo. El código de arranque generalmente consta de dos partes: la primera parte es el nivel de la placa. Código de inicialización a nivel de chip, la función principal es configurar registros para inicializar el hardware, como configurar el reloj. Interrumpa el registro de control para completar el mapeo de memoria. La función de inicializar la MMU, la segunda parte del cargador, es cargar o copiar imágenes del sistema operativo y las aplicaciones desde la memoria de solo lectura a la RAM del sistema y saltar al código apropiado antes de continuar. El código de la capa de abstracción de hardware HAL inicializa el código del entorno de ejecución del sistema operativo. El código de inicialización del controlador del dispositivo y el código de inicialización del archivo ejecutable del sistema operativo se componen de tres partes.
Este artículo toma como ejemplo el procesador Motorola MPC860 y el sistema operativo CRTOSII con derechos de propiedad intelectual independientes para estudiar la tecnología de diseño e implementación de programas de guía de sistemas integrados. El desarrollo de software integrado implica dos modos operativos: modo de depuración y modo de solidificación. El modo de depuración resuelve principalmente el problema de cómo depurar la corrección del programa no verificado en la placa de destino; el modo de solidificación resuelve principalmente el problema de cómo depurar con éxito el programa de inicio. Por lo tanto, el código de arranque debe diseñarse para ambos modos respectivamente.
1Modo de depuración, modo de inicio del sistema
1.1 La función del código de inicio del modo de depuración
1Modo de depuración, modo de inicio del sistema
1.1 La función del código de inicio del modo de depuración
Una solución de software integrada completa incluye aproximadamente los siguientes cuatro aspectos: ① Código de inicialización y de inicio para la configuración de la plataforma de hardware ② Código de inicialización para el entorno de ejecución del software del sistema operativo ④; solicitud.
Entre los cuatro aspectos anteriores, el código de inicio es el problema que este estudio intentará resolver. De hecho, se inicializa a nivel de placa. Sistema operativo, capa de abstracción de hardware. El controlador del dispositivo, el software y el BSP (paquete de soporte de placa) constituyen el cuerpo principal del sistema integrado. El código BSP está relacionado con el diseño de hardware de la placa de destino específica y los requisitos de diseño de la aplicación. Diferentes aplicaciones tienen diferentes requisitos, como diferentes controladores de dispositivo. El número de fuentes de interrupción. Diferentes arreglos de prioridad de interrupción. Ya sea para habilitar el mecanismo MMU, la parte BSP debe organizarse adecuadamente. Según las tres primeras partes, la cuarta parte es el funcionamiento normal de la aplicación y debe probarse repetidamente.
A través del análisis anterior, la corrección del BSP y el código de la aplicación no se puede garantizar al escribirlo por primera vez. Es necesario pasar por el proceso de depuración de "depuración repetida". establezca un entorno de depuración sólido sobre la base de Su código de inicio realiza ajustes de modo.
1.2 Método de depuración del código de arranque
En este estudio, el experimento utilizó una tecnología de depuración llamada BDM (Modo de depuración en segundo plano) OCD (Ejecución de depuración en chip). BDM es un depurador de hardware de Motorola, similar a la depuración JTAG. Aprovecha las capacidades de depuración del procesador para proporcionar un puerto de depuración. MPC860 utiliza un BDM-EPBDM especial, cuya operación es equivalente al manejo de interrupciones y excepciones del módulo de depuración integrado multiprocesador. El usuario puede especificar directamente la interrupción o excepción que ocurre en el procesador configurando el registro de habilitación de depuración. estado sin requerir controladores del sistema operativo. Después de ingresar al estado de depuración, el módulo de depuración integrado envía una señal para notificar a la interfaz de comunicación de depuración externa que ha sido monitoreado por el depurador de la interfaz de comunicación del host. El depurador puede permitir que el procesador ejecute comandos del sistema a través del módulo de depuración (equivalente a un privilegio). estado). Debido al uso de un dispositivo de interfaz de depuración a nivel de chip dedicado (BDI2000), no hay soporte de software (monitor) de agente de depuración ni de destino.
1.3 Implementación del código de inicio del modo de depuración
El código de inicio del modo de depuración es el núcleo del protocolo BDM y se utiliza para enviar señales a la microinstrucción de direccionamiento MPC860 a través de la interfaz de depuración para inicializar el entorno de depuración. En la arquitectura RISC de MPC860, la parte de inicialización es la configuración de los registros internos del procesador. Este proceso incluye tres aspectos:
(1) Inicialización del registro del procesador: registro de estado del procesador principal (MSR.SRR1. SIUMCR etc.), interrupción. Módulos relacionados con el reloj (SYPCR.SCCR.PLPRCR.TBSCR, etc.).
(2) Inicialización del puerto de depuración BDM: incluye el registro de habilitación de depuración DER y el registro de punto de interrupción de instrucciones de soporte ICTRL.
(3) Nivel superior. Inicialización de mapeo de memoria a nivel de placa: registro de mapeo de memoria interna IMMR, registro relacionado con el control de memoria o 0? 0R7.BR0? Selección de señal de selección de chip. Selección de controlador de memoria (UMPA, UMPB, GPCM). Las memorias utilizadas para controlar estas microinstrucciones son diferentes (SRAM, SDRAM, DRAM, etc.) a través de microinstrucciones UPM y UPM. Escribe tu propio código y escríbelo en la ubicación correspondiente del campo de memoria interna del MPC860 que necesites. para ser diseñado. Para los bancos de memoria que requieren actualización en tiempo real (como SDRAM), debe configurar la microinstrucción de control de actualización.
La ejecución del código de inicialización anterior depende del soporte de la interfaz de depuración de la máquina de destino MPC860 por un lado y del soporte del GDB host por otro lado. El sistema host puede elegir Linux y configurar GBD en Linux. También puede elegir Windows 2000 al mismo tiempo y usar la herramienta de depuración visual LambdaTools GDB (el producto de Coretek, que no admite puntos de interrupción de hardware) o usar BDI2000 (admite el simulador de puntos de interrupción de hardware). ). No importa qué herramienta de depuración utilice, puede utilizar un script que el depurador reconozca como el comando de inicialización para el almacenamiento de Wenbo.
Estos scripts son funcionalmente equivalentes y la descripción del comando generalmente toma el siguiente formato: El valor del registro de código de operación, como el fragmento de código de inicialización SDRAM de Linux incorporado: mpcbdm resistente = 0x1FF77C35mpcbdm SPR MDR = 0xEFEABC34mpcbdm SPR MDR = 0x1FB57C35 SPR... ... Windows 2000 usando el código BDI2000: 0x00000006 0x00000005 WUPM 0x1FF77C35WUPM 0xEFEABC34WUPM 0x00000007 0x1FB57C35 en ... Después de eso, la ejecución del script de descripción basado en MPC860 seguirá la descripción de las instrucciones preconcebidas que se pueden utilizar durante el funcionamiento normal. el El cargador en SDRAM se depura y ejecuta en SDRAM. El programa contiene una tabla de interrupciones. Las imágenes del sistema operativo y de la aplicación se componen de dos partes y tienen el formato bin.elf.coff. La Figura 1 muestra el proceso completo de descarga de imágenes de memoria.
Una vez completada la descarga, puede utilizar el comando de depuración para comenzar a depurar el puntero de la primera instrucción del segmento de código de imagen de la computadora (segmento de texto).
Inicie el sistema en modo de solidificación
2.1 Descripción general
Después de crear imágenes y depurar el sistema operativo, para garantizar la corrección de la aplicación de la capa superior en la imagen, no se puede ejecutar automáticamente. Debido a que el procesador se inicializa a través de la interfaz BDM, los programas descargados a través de la interfaz BDM en modo de depuración se ejecutan en la RAM. En el entorno de la aplicación real, la imagen debe almacenarse en una memoria no volátil, como Flash.EPROM, y el papel selecciona Flash. Cuando se inicia el sistema, el procesador ejecuta el gestor de arranque para reemplazar el script de depuración y cargar funciones en modo de depuración. Concéntrese en los siguientes puntos: (1) Cómo ejecutar el programa del sistema después del encendido y reinicio, y si el código de inicio que necesita inicializar el registro sigue siendo una parte asignada en memoria (2) Si cada parte del código en; las diversas partes del código de arranque se ejecutan total o parcialmente en Flash o RAM (3) Compensación entre eficiencia de tiempo y eficiencia de espacio;
2.2 Inicialización de encendido
En ambos modos de inicio, la inicialización de encendido es un paso necesario. Implica la inicialización de varios registros en el kernel. Manejar el mapeo de direcciones y otros problemas.
2.2.1 Mapeo de direcciones
El reinicio de MPC860 puede entenderse como el número de vectores de interrupción generados por la propia CPU mediante el procesamiento de aborto, es decir, 0x100. La dirección base de la tabla de vectores de excepción más el número del vector de reinicio es el vector de reinicio, que es donde la CPU comienza a ejecutar instrucciones. La escala puede ser anormal en dos ubicaciones del espacio de memoria: de 0x0000000 a 0xFFF00000, el vector de reinicio del PowerPC es 0x100 o 0xFFF00100, asumiendo que el vector de reinicio es 0xFFF00100. El sistema tiene 128 KB de memoria flash, que se asigna a la dirección 0xFE000000 en la memoria de la CPU. espacio. La señal de selección de chip CS0 interna del MPC860 es la señal de selección de chip de arranque del sistema predeterminada y está conectada a la línea de selección de chip de memoria flash. El controlador de memoria y fuente de alimentación ignorará todas las señales que participan en la lógica de selección 17, y la línea de dirección de CS0 siempre será válida. De esta manera, siempre se seleccionará Flash y la CPU leerá las instrucciones nativas de Flash con un desplazamiento de 0x100, y cada bloque de 128 KB se asignará a 4 GB de espacio de memoria en Flash.
2.2.2 Inicialización del registro
El método de curación es aproximadamente el mismo, pero el archivo de secuencia de comandos ya no se escribe, sino que se completa al inicio.
El programa de inicialización del modo de depuración completa el siguiente procesamiento:
(1) Inicializa el registro del núcleo de la CPU
(2) Establece el registro de estado de la máquina
( 3) Deshabilitar ceche;
(4) Inicializar IMMR;
(5) Inicializar la unidad de interfaz del sistema (SIU);
(6) Inicializar el reloj e interrumpir; registro de control;
(7) Inicializar el procesador de comunicación (CPM);
(8) Inicializar el controlador de memoria (UPM); la pila del lenguaje C.
2.2.3 Reasignación del espacio de direcciones
Después del encendido, solo una señal de selección de chip es válida y las direcciones de la memoria flash, RAM y otros dispositivos de memoria no son válidas y deben ser resuelto mediante la reasignación del espacio de direcciones. La reasignación del espacio de direcciones de MPC860 se completa configurando 16 registros 0R0?OR7.BR0?BR7. El espacio de direcciones de 4 GB consume energía flash, por lo que la dirección 0xFFF00100 sigue teniendo un desplazamiento flash 0x100. Al registrar SDRAM.MPC860, se inicializan el espacio de registro interno y la asignación de periféricos. Antes de estas operaciones, la ubicación de la memoria flash se fija, por ejemplo, se asigna a 0xFE000000, y se implementa la operación set o 0 en el registro BR0. Pero al escribir o 0, la CPU todavía tiene una instrucción de 0xFFF00000, y Flash se asignará al bloque 0xFE000000, por lo que se debe solucionar el fenómeno de "ejecución" del programa y debemos ajustar el contador del programa (PC). , la PC es para programadores. Es invisible, debes usar una instrucción de salto. La asignación de direcciones Flash se completa configurando OR1?OR7 puede completar la asignación de todos los espacios de almacenamiento de BR7. Se pueden asignar varios dispositivos de almacenamiento a cualquier ubicación en el espacio de direcciones de la CPU, pero no pueden entrar en conflicto entre sí.
2.3 Composición y funcionamiento del código de arranque
En el archivo ensamblador del registro de inicialización del código de arranque del sistema start.s, hay tres partes: programa de carga, sistema operativo y programa de aplicación. figura, boot El código solo contiene start.s y procedimientos de carga. El cargador es el componente de la imagen del sistema operativo donde la aplicación copiará de Flash a SDRAM y saltará a la primera instrucción de la imagen.
Dos modos de funcionamiento después de pasar la imagen:
Imagen residente flash: el cargador se copia a la RAM y se ejecuta directamente en el segmento de datos (datos BSS) de la imagen en la memoria flash. fragmento de código (texto).
Imagen basada en Flash: la imagen del cargador se mueve completamente a la RAM para su ejecución, incluido el segmento de código (texto) y el segmento de datos (segmento BSS de datos) en la imagen.
Las figuras 2 y 3 muestran dos imágenes de la imagen de almacenamiento y el proceso de carga de flash a SDRAM.
2.4 Compensación entre eficiencia de tiempo y espacio
En el proceso de sistemas integrados, para diferentes entornos de aplicaciones, existe un conjunto completo de códigos de arranque basados en soluciones MPC860 para satisfacer diferentes requisitos.
2.4.1 Límite de tiempo
El límite de tiempo incluye dos situaciones: el sistema requiere un inicio rápido después del inicio y el sistema requiere una ejecución de programa de alta velocidad.
Al ejecutar el programa de inicialización en el sistema de arranque rápido Flash, el tiempo debe acortarse tanto como sea posible. Si se utiliza la sintaxis en anillo, el programa debe minimizarse y cargarse en la RAM para su ejecución lo antes posible. posible La razón de esto es que el programa está en la memoria flash en ese momento. Hay una diferencia de orden de magnitud en el tiempo que lleva acceder a la memoria RAM. Sin embargo, se deben hacer ciertas concesiones sobre el tamaño del código y la memoria. Porque, aunque la velocidad de la RAM es abrumadora, la operación de copia del código Flash provocará una sobrecarga en una cierta cantidad de RAM. Se puede ver que el tiempo de ejecución está determinado por el tiempo de inicio del código de inicio de Flash.
El tiempo para que el código se copie de Flash a la RAM y el tiempo para que el código de inicio posterior se ejecute en la RAM se componen de tres partes. El tiempo mínimo de inicio es el más bajo de los tres.
La ejecución de alta velocidad del programa de inicio se debe principalmente a los requisitos del sistema para el procesador. Características de la memoria y velocidades de E/S, etc. En términos de software, se deben utilizar imágenes basadas en Flash para aumentar la velocidad de ejecución colocando segmentos de código en la RAM y ejecutándolos.
2.4.2 Limitaciones de espacio
Las limitaciones de espacio incluyen dos situaciones: el espacio de almacenamiento flash no volátil y el espacio de RAM volátil de ambos sistemas son limitados.
En los sistemas de memoria no volátil de alto rendimiento, los dispositivos de almacenamiento como la memoria flash no pueden ser demasiado grandes debido a factores de costo, pero es donde se almacenan los códigos de arranque y las imágenes del sistema operativo. Puede usar gzip y otras herramientas de compresión para comprimir la imagen al almacenarla y descomprimirla usando el algoritmo de descompresión inversa al cargarla en la RAM. El algoritmo de compresión se ejecuta en tiempo real y no debe ser demasiado complejo; de lo contrario, el proceso de compresión y descompresión consumirá mucho tiempo y entrará en serio conflicto con el tiempo de inicio limitado. La estrategia de compresión no necesariamente aumenta el tiempo de inicio del sistema, ya que el proceso de compresión y descompresión, aunque es noticia por un tiempo, en realidad puede reducir el tiempo consumido debido al tamaño reducido de la imagen que ocupa menos tiempo en la memoria flash.
Para sistemas que utilizan RAM de alto rendimiento, y debido a factores de costo, la RAM tiene ciertas limitaciones, generalmente se usa la imagen residente de Flash mencionada anteriormente: el segmento de datos se copia a la RAM al cargar la imagen del programa. mientras que el fragmento de código se ejecuta en el espacio Flash. Debido a que los fragmentos de código se ejecutan más lentamente en Flash, se ahorra espacio a expensas de tiempo.
Este artículo describe este enfoque, centrándose en los sistemas integrados, los modos de inicio de inicio del sistema operativo basado en procesador integrado y los diferentes tipos de inicio. Tomando como ejemplo el procesador CRTOSII MPC860C del sistema operativo, la guía presenta la composición del código de inicio en modo de depuración y modo de solidificación. Implementación, compensaciones de eficiencia temporal y espacial, y el papel de los diferentes modos y medios de lanzamiento. A finales de año, el código de inicio se escribió utilizando el emulador BDI2000 y se depuró, y el sistema operativo se ejecutó con éxito en el modo de depuración de inicio y en el modo de solidificación. Las acciones de seguimiento incluyen: continuar estudiando una variedad de métodos de arranque en diferentes plataformas de hardware y sistemas operativos como el ARM más popular. Vxworks.WinCE.