Red de conocimiento informático - Material del sitio web - Cómo construir un sistema integrado eCos

Cómo construir un sistema integrado eCos

ECos es un excelente sistema operativo integrado en tiempo real. La arquitectura de ECos es una estructura en capas. La capa de extracción de hardware aísla el sistema operativo y el hardware, lo que proporciona comodidad para trasplantar ECos a diferentes plataformas de hardware. La idea principal del trasplante es completar la capa de extracción de hardware basada en el diseño modular de ECos.

Introducción

En la actualidad existen muchos tipos de sistemas operativos integrados, entre los que los más populares son VxWorks, Windows CE, Psos, ​​Palm OS, Linux integrado, etc. . Estos sistemas operativos integrados tienen sus propias características en términos de apertura, practicidad y rendimiento, pero la mayoría de ellos son productos comerciales. Además de los productos comerciales, también existen algunos sistemas operativos integrados gratuitos, uClinux es uno de los más populares y ECos es otra opción. Las características del sistema operativo configurable integrado (ECos) son configurables, restaurables, portátiles y en tiempo real. Una de sus principales características técnicas es un potente sistema de configuración que puede realizar la configuración y restauración del sistema a nivel de código fuente. Configuración y restauración En comparación con Linux, el método de configuración de eCos es más claro y conveniente, la jerarquía del sistema también es más clara que Linux y es más fácil trasplantar y agregar módulos de controladores. Es precisamente por estas características que eCos ha atraído cada vez más atención y ha atraído cada vez a más fabricantes a utilizar ECos para desarrollar su nueva generación de productos integrados.

Red Hat mantiene ECos y admite procesadores como ARM, StrongARM, XScale, SuperH, Intel X86, PowerPC, MIPS, AM3X, MOTOROLA 68/Coldfire, SPARC, Hitachi H8/300H, NEC V850. NEC V850, etc. El código fuente y las herramientas de desarrollo están disponibles en el sitio web de Red Hat http:/Sources.Redhat.Com/Ecos.

1 La estructura jerárquica de ECos

ECos adopta un diseño modular y consta de diferentes Compuesto por componentes funcionales, la estructura jerárquica del sistema eCos se muestra en la Figura 1.

Figura 1

La capa inferior de esta jerarquía es la capa de abstracción de hardware (HAL), que es responsable de operar y controlar la plataforma de hardware del sistema de destino, incluidas las interrupciones y excepciones. Manejo y soporte para el software de la capa superior. La capa proporciona la interfaz de operación del hardware. Todo el sistema ECos, incluidas las aplicaciones basadas en ECos, se puede migrar a la nueva plataforma de hardware simplemente proporcionando una capa de abstracción para el nuevo hardware.

2. Construya un sistema ECos

Al construir un sistema ECos, primero debe construir su propia capa de abstracción de hardware, luego crear el controlador y luego preparar la aplicación.

3. Trasplante de la capa de bombeo de hardware

La capa de bombeo de hardware se divide en tres submódulos diferentes, a saber, la capa de bombeo de arquitectura Arquitectura HAL, Variant HAL y la capa de bombeo de plataforma. Plataforma HAL.

Arquitectura HAL. Las diferentes series de procesadores compatibles con ECos tienen diferentes arquitecturas, como la serie ARM, la serie PowerPC, la serie MIPS, etc. La capa de abstracción arquitectónica abstrae y define la estructura básica de la CPU. Además, incluye manejo de interrupciones, cambio de contexto, inicio de CPU y entrega del conjunto de instrucciones para dichas arquitecturas de procesador.

La capa de extracción de variantes se refiere a las características especiales de los procesadores de la familia de procesadores, incluida la caché, MMU, FPU, etc. La capa de extracción variante ECos extrae y encapsula estas características especiales.

La capa de extracción de plataforma extrae la plataforma de hardware del sistema actual, incluido el inicio de la plataforma, la selección y configuración del chip, los dispositivos de sincronización, el acceso a los registros de E/S y los registros de interrupción.

No existen límites claros entre estos tres submódulos de la capa de extracción de hardware.

Esta distinción es algo borrosa para las diferentes plataformas de destino. Por ejemplo, en una plataforma, la MMU y la caché pueden pertenecer a la capa de extracción de arquitectura, mientras que en otra plataforma pueden estar bajo el alcance de la capa de extracción variante. Por ejemplo, el controlador de memoria e interrupciones puede ser un dispositivo en chip que pertenece a la capa de bombeo variante, o puede ser un dispositivo fuera del chip que pertenece a la capa de bombeo de plataforma. El trasplante de ECos se completa a través de estos tres submódulos, a saber, el trasplante de la capa de bombeo de la plataforma, el trasplante de la capa de bombeo variante y el trasplante de la capa de bombeo de la arquitectura. eCos admite las CPU integradas más utilizadas y ya cuenta con capas de bombeo de hardware que admiten varias arquitecturas. Por lo tanto, la migración de eCos rara vez requiere escribir una capa de abstracción arquitectónica.

4. Trasplante de la capa de bombeo de la plataforma

En términos generales, el trabajo principal del desarrollo y trasplante de ECos radica en la capa de bombeo de la plataforma. Esto se debe a que ECos ha implementado la CPU integrada más popular. Arquitectura de capa de bombeo y variante de capa de bombeo. El trabajo principal realizado por la capa de bombeo de la plataforma incluye el diseño de la memoria, la inicialización temprana de la plataforma, el controlador de interrupciones y el controlador serial simple.

La forma más sencilla de construir un nuevo sistema de plataforma es utilizar la capa de abstracción de hardware de la plataforma de referencia con la misma arquitectura y modelo de CPU proporcionados por el código fuente de ECos como plantilla, copiar y modificar todos los archivos relacionados con el nueva plataforma. Si ECos no tiene dicha plataforma, también se pueden usar como plantillas capas de abstracción de hardware similares para otras arquitecturas o modelos de CPU. Por ejemplo, eCos ofrece una plataforma SNDS4110 centrada en la CPU ARM Samsung S3C4510B, que es un buen punto de partida para migrar ECos a la CPU ARM S3C44B0.

El mejor lugar para comenzar es RedBoot, y el primer objetivo es lograr que RedBoot se ejecute en la nueva plataforma. RedBoot es el código de arranque que viene con ECos y es más simple que ECos. No utiliza interrupciones ni mecanismos de programa, pero contiene la mayoría de las funciones más básicas.

Tome como ejemplo la construcción de una nueva plataforma de S3C44B0. La construcción de RedBoot para la plataforma de destino generalmente sigue los siguientes pasos.

Copie la plataforma de referencia seleccionada del código fuente de ECos, cambiando el nombre de directorios y archivos según sea necesario. El contenido principal del cambio de nombre incluye el nombre del directorio de la nueva plataforma, archivos de definición de componentes, CDL, archivos de diseño de memoria, MLT y archivos fuente y archivos de encabezado utilizados para la inicialización de la plataforma.

Archivo de definición de componentes, CDL, ajustes seleccionados. Esto incluye el nombre de la selección, el reloj/contador en tiempo real, la variable CYGHWR_MEMORY_LAYOUT, los parámetros del puerto serie y algunas otras selecciones. Inicialmente, la entrada de la plataforma de destino solo puede contener el paquete de capa de abstracción de hardware y más adelante se pueden agregar otros paquetes de soporte de hardware. Después de la modificación, la nueva plataforma se puede seleccionar para su configuración en el programa de configuración de ECos.

④ Modifique el archivo MLT de diseño de memoria en Include/Pkgconf. Modifique el archivo MLT de acuerdo con el diseño de memoria de la nueva plataforma de hardware. Los archivos MLT para cada tipo de inicio tienen tres sufijos diferentes: archivos H, archivos Ldi y archivos Mlt. Al modificar manualmente, modifique solo el archivo H y el archivo Ldi, y asegúrese de que los dos archivos se modifiquen simultáneamente. El contenido principal de la modificación es la dirección inicial de la ROM, la dirección inicial de la ROM y la dirección inicial de la RAM

⑤ Modifique la definición de macro Io de la plataforma. Contiene el archivo /Plt_io.H para completar varias definiciones de macros de IO de la plataforma, incluidos varios registros de configuración del sistema de CPU, registros de configuración de memoria, registros de configuración de puerto serie, registros de configuración de LCD, registros de configuración de Ethernet y otras direcciones de E/S.

6 Modifica el código de caché de la plataforma. Incluya el archivo /Hal_cache.H y modifique la definición de macro de Cache. En las primeras etapas de desarrollo, es mejor desactivar la caché y luego activarla una vez que el puerto esté estable.

7 Un controlador de puerto serie realmente sencillo.

La inicialización, recepción y transmisión del puerto serie se completan en el archivo Src/Hal_diag.C. Las funciones principales son las siguientes

Haga clic para ver la imagen original

⑧Modificar o agregar el programa de inicialización de la plataforma. La inicialización de la plataforma se completa en tres archivos: ˇsrc/S3C44B0_misc.C, Include/Hal_platform_setup.H e Include/Hal_platform_ints.H.

Hal_platform_ints.H completa la definición de la macro de interrupción del sistema. En diferentes plataformas, la cantidad y el tipo de dispositivos son diferentes, y la decodificación de interrupciones también es diferente, lo que debe ajustarse según la situación específica.

Hal_platform_setup.H completa principalmente la configuración inicial del hardware del sistema. Aquí, generalmente es necesario apagar el mecanismo de vigilancia y las interrupciones después de configurar la frecuencia del reloj del sistema y los parámetros de inicialización de ROM y RAM.

El archivo S3C44B0 _misc.C completa la inicialización adicional de la placa de destino, el manejo de interrupciones, las rutinas de retardo y la configuración del reloj del sistema operativo.

Después de las modificaciones anteriores, la capa de bombeo en la parte inferior de la plataforma básicamente se completa y luego la herramienta de configuración ECos se puede usar para generar pruebas de RedBoot. Después de que la prueba RedBoot sea exitosa, la plataforma pudo completar correctamente la operación de inicialización y el controlador del puerto serie también puede funcionar normalmente, y luego se pueden completar las pruebas de interrupción y caché. Puede utilizar algunos subprogramas multiprograma para probar si la configuración del reloj es correcta y si la interrupción puede funcionar correctamente.

5. Diseño del controlador

Una vez completada la capa de bombeo de la plataforma, el siguiente paso es completar el controlador del dispositivo del sistema. El módulo de interrupción del controlador del dispositivo ECos se divide en tres niveles: rutina de servicio de interrupción ISR, rutina de servicio de retardo de interrupción DSR y programa de interrupción. La llamada ISR debe interrumpirse inmediatamente después del DSR. La solicitud de llamada del programa de interrupción llamado por el ISR es el programa cliente del controlador. El programa es el programa cliente del controlador.

Las interrupciones de hardware se transmiten al ISR para su procesamiento en el menor tiempo posible. La capa de bombeo de hardware decodifica la fuente de interrupción de hardware y llama a la interrupción ISR correspondiente. El ISR puede realizar operaciones simples en el hardware y debe acortar el tiempo de procesamiento de ISR tanto como sea posible. Cuando el ISR regresa, puede colocar su propia rutina de servicio diferido de interrupción, DSR, en el programador de tareas del sistema operativo. DSR puede funcionar de forma segura sin interferir con el funcionamiento normal del planificador. Como se muestra en la Figura 2, los controladores de dispositivos ECos generalmente se pueden dividir en tres partes.

Figura 2

El controlador de dispositivo utilizado por ECos se describe mediante entradas de la tabla de dispositivos. Las entradas de la tabla de dispositivos se pueden generar usando la macro DEVTAB_ENTRY(). El formato es ˇ

Haga clic para ver la imagen original

Los controladores en la entrada del dispositivo contienen un conjunto de funciones de interfaz del controlador del dispositivo, que es un puntero a la tabla de funciones del dispositivo DEVIO_TAB. Contiene un puntero a una función de interfaz del controlador de dispositivo. Puntero a una función de grupo. La tabla de funciones de E/S del dispositivo está definida por la macro DEVIO_TAB y el formato es el siguiente

Durante el proceso de inicialización de ECos, todos los dispositivos en el sistema llamarán a sus funciones Init() correspondientes, es decir, es decir, la inicialización registrada por la función macro DEVTAB_ENTRY, todas las operaciones de E/S del dispositivo se completan a través del controlador.