¿A qué características deberían prestar atención los desarrolladores de sistemas operativos en tiempo real?
El soporte de operación de interfaz gráfica (mC/GUI) es uno de los sistemas de interacción persona-computadora más populares en la actualidad. Puede proporcionar una plataforma amigable para la interacción persona-computadora y hacer que los microprocesadores sean utilizables y aceptables para la mayoría de las personas. herramientas. A diferencia de la PC, mC/OS-II es básicamente un sistema operativo de "caja negra". El control y desarrollo de la interfaz hombre-máquina requiere tecnología de control de sincronización y programación relativamente compleja, y el sistema de control en tiempo real integrado ARM7 requiere mC/GUI. Superior, incluido el peso ligero, el bajo consumo de recursos, el alto rendimiento, la alta confiabilidad y configurabilidad, la configurabilidad, etc. Por lo tanto, cómo combinar orgánicamente ARM7, mC/GUI, mC/OS-II, controladores de pantalla táctil y aplicaciones para ejecutarse en ARM7 y completar las tareas que los usuarios desean lograr se ha convertido en una tecnología clave en el desarrollo de sistemas operativos integrados.
Trasplante del sistema operativo integrado mC/OS-II
Como núcleo del sistema operativo, la tarea principal de mC/OS-II es completar la programación y sincronización de múltiples tareas y coordinar varias tareas. No habrá conflictos entre las fuentes de hardware. En comparación con otros sistemas operativos integrados, tiene las características de transparencia del sistema, restauración desmontable e interfaz simple. La siguiente es una breve introducción sobre cómo trasplantar y modificar el sistema operativo en S3C44B0:
(1) Vuelva a modificar el archivo OS_CPU.H
a) Defina el tipo de datos: mC/OS-Ⅱ no utiliza C. Los tipos de datos relacionados con el tipo de procesador, como short, int y long en el lenguaje, se reemplazan por tipos de datos con gran portabilidad. Esto es intuitivo y fácil de trasplantar b) Definir el tipo de crecimiento de la pila y el modo de operación ARM: aunque el procesador ARM admite el crecimiento de la pila tanto hacia arriba como hacia abajo, el compilador ADS solo admite el crecimiento de la pila de arriba a abajo y debe ser Totalmente; pila reducida, por lo que el valor de la constante OS_STK_GROWTH utilizada para definir el método de crecimiento de la pila en el archivo es 1 c) Se requieren declaraciones de funciones externas: por ejemplo, en el archivo de encabezado mC/OS-Ⅱ.h, algunas funciones que necesitan; Se han declarado funciones a trasplantar, incluidas OSTaskStkInit(), OSIntCtxSw(void), OSStartHighRdy(void).
(2) Modificar el archivo OS_CPU_C.C
a) Función de inicialización de la pila de tareas OSTaskStkInit(): Antes de escribir la función de inicialización de la pila de tareas OSTaskStkInit(), debe basarse en la estructura y la estructura del procesador determinan la estructura de pila de la tarea; b) Funciones de enlace: para facilitar a los usuarios escribir sus propios códigos, mC/OS-II preestablece algunas funciones de enlace (como OSTimeTickHook) en las funciones del sistema. Todas estas funciones pueden ser funciones vacías durante el trasplante. También se pueden agregar según las necesidades del usuario.
(3) Concéntrese en escribir el archivo OS_CPU_A.S a) Función de interrupción de encendido/apagado: en el núcleo del procesador ARM7, esto se puede lograr cambiando el bit de control correspondiente en el registro de estado del programa CPSR; ) OSStartHighRdy (void): la función OSStart() llama a OSStartHighRdy() para iniciar la tarea con la mayor prioridad entre las tareas en estado listo c) OS_TASK_SW (void): μC/OS-II completa la programación de tareas llamando a OSSched(); función OSSched() primero La dirección de la tarea de mayor prioridad se carga en OSTCBHighRdy, y luego el cambio de tarea a nivel de tarea se realiza llamando a OS_TASK_SW() para completar principalmente la protección de la escena, completar las tareas utilizadas y restaurar la. escena; d) OSIntCtxSw (void): OSIntExit() pasa Llame a OSIntCtxSw() para realizar la función de cambio de tarea en la rutina del servicio de interrupción.
e) Función de ritmo de reloj: En este puerto, solo se utiliza la interrupción IRQ de ARM. Dado que los sistemas de interrupción de diferentes chips ARM no son exactamente iguales, es imposible escribir un código de trasplante de interrupción y superación que sea común a todos los procesadores que utilizan núcleos ARM. Sin embargo, este es el foco de la gestión de tareas posteriores que deben ser procesadas por. el sistema operativo. El código de implementación de OSTickISR es el siguiente que se muestra en la lista del programa.
Lista de programasOSTickISR()
OSTickISR
STMFD SP!, {R0-R3,R12,LR}
BL OSIntEnter
BL user_function;Llame al controlador de interrupciones manejado por el usuario
.
BL OSIntExit
LDMFD SP!,{R0-R3,R12,LR}
Programación del controlador de pantalla táctil S3C44B0
Este artículo usos En el modo de voltaje de referencia fijo, durante el proceso de desarrollo del controlador, debe prestar atención a las características de sincronización del terminal del reloj, el terminal de entrada y el terminal de salida. Primero detecte si PENIRQ está bajo. Este bit estará bajo solo cuando haya contacto con la pantalla táctil. Utilice el software para simular la sincronización de transmisión en serie de tres cables en DIN, DOUT y DCLK, envíe la palabra de control del valor de coordenadas X o Y leído en serie al ADS7843 y luego lea el valor de coordenadas de la función correspondiente para obtener el valor de coordenadas. El programa fuente es el siguiente:
int TOUCH_X_MeasureX(void)
{
X=ReadTouchXY(CHX);
return. X;
p>}
int TOUCH_X_MeasureY(void)
{
Y=ReadTouchXY(CHY);
devolver Y;
}