Investigación y trasplante de MiniGUI en el entorno de Linux incorporado

  

En los últimos años, con la extensa combinación de dispositivos integrados y la demanda del mercado, la aplicación de teléfonos móviles, PDA y otros productos presentan mayores requisitos para la simplicidad y comodidad de la interfaz de operación visual. Esto requiere un sistema GUI de alto rendimiento estable y confiable para proporcionar soporte. La popularidad de la Interfaz gráfica de usuario (GUI) es uno de los logros importantes de la tecnología informática actual. Facilita enormemente el uso de usuarios no profesionales y las personas pueden operar fácilmente a través de ventanas y menús. Los requisitos básicos del sistema integrado para la GUI incluyen peso ligero, bajo consumo de recursos, alto rendimiento, alta confiabilidad y configurabilidad. MiniGUI es uno de los sistemas GUI más utilizados. En comparación con otras GUI, la característica más destacada de MiniGUI es su peso ligero y bajo consumo de recursos. En los últimos años, MiniGUI ha sido muy maduro y estable. Muchos productos y proyectos se han puesto en práctica.

1 Características y arquitectura de MiniGUI

1. 1 Características de MiniGUI

MiniGUI es un sistema de gráficos ligeros desarrollado por la ex maestra de la Universidad de Tsinghua Wei Yongming. Un sistema de soporte de interfaz gráfica de usuario para sistemas integrados o en tiempo real. Sigue la convención GPL y es un sistema de soporte de GUI multiventana basado en las bibliotecas SVGALib y LinuxThread. Puede abarcar una variedad de sistemas operativos
, que se ejecutan principalmente en Linux y todos los sistemas compatibles con POSIX con soporte de subprocesos POSIX, incluyendo Linux, eCos, uC /OS-II, VxWorks y otros sistemas integrados comunes, es el más antiguo de China Uno de software libre.

Las características principales de MiniGUI son: (1) software completamente gratuito que cumple con los términos GPL; (2) proporciona un mecanismo completo de ventanas múltiples; (3) compatibilidad con conjuntos de múltiples caracteres y múltiples fuentes, actualmente compatible con ISO8859-1 , GB2312 y Big5 y otros juegos de caracteres, y son compatibles con una variedad de fuentes de mapa de bits y TrueType, Type1 y otras fuentes de vectores; (4) hechizos completos y cinco golpes y otros caracteres de entrada de caracteres chinos; (5) BMP, GIF, JPEG y PCX y otros archivos de imagen comunes Soporte (6) Windows
soporte de archivos de recursos, como mapas de bits, iconos, cursores, temporizador, temporizadores y aceleradores; (7) buena portabilidad.

1.2 Arquitectura MiniGUI

1.2.1 Diseño en capas de múltiples subprocesos

Desde la estructura general, MiniGUI es un diseño en capas, la estructura se muestra en la Figura 1. Mostrar En la parte inferior, GAL (capa de abstracción gráfica) e IAL (capa de abstracción de entrada) y controlador de mouse y teclado; la capa intermedia es la capa central de MiniGUI, incluidos los diversos módulos necesarios para el sistema de ventanas; la capa superior es la API, es decir, la interfaz de programación . GAL e IAL proporcionan la interfaz GUI y la interfaz de entrada de la consola Linux subyacente o X Window para MiniGUI, y Pthread se usa para proporcionar una biblioteca de funciones en C admitida por un subproceso de nivel de kernel. Con GAL e IAL, la portabilidad de MiniGUI se mejora en gran medida, y se facilita el desarrollo y la depuración del programa.

MiniGUI se ejecuta en modo de subprocesos múltiples y muchos de sus módulos se ejecutan como subprocesos separados. Al mismo tiempo, MiniGUI también utiliza subprocesos para admitir varias ventanas. Esencialmente, cada subproceso tiene una cola de mensajes, que es una estructura de datos clave que implementa el intercambio y la sincronización de datos de subprocesos. Un hilo envía un mensaje a la cola de mensajes, y otro hilo recibe el mensaje de esta cola de mensajes. Las ventanas creadas en el mismo hilo pueden compartir la misma cola de mensajes. Un hilo envía un mensaje a la cola de mensajes, y otro hilo recibe el mensaje de esta cola de mensajes. Las ventanas creadas en el mismo hilo pueden compartir la misma cola de mensajes. Usando el mecanismo de sincronización entre colas de mensajes y multithreading, se puede implementar el mecanismo de microclient /servidor descrito a continuación.


1.2.2 Arquitectura de micro-cliente /servidor

En un entorno de subprocesos múltiples, similar al mecanismo de comunicación entre múltiples procesos, también existe la necesidad de interacción y sincronización entre los subprocesos. . Por ejemplo, el subproceso utilizado para administrar la ventana mantiene una lista global de ventanas, mientras que otros subprocesos no pueden modificar directamente estas estructuras de datos globales. En su lugar, deben procesar la solicitud de cada subproceso de acuerdo con el principio de "primero que llegue, primero atendido", que es Modelo general cliente /servidor. MiniGUI utiliza la operación de sincronización entre subprocesos para implementar el mecanismo de micro-cliente /servidor entre el subproceso del cliente y el subproceso del servidor.

2 Entorno de desarrollo

La placa de desarrollo H2410EB fue diseñada y desarrollada por Beijing Hengyi Hi-Tech Co., Ltd. Se basa en el procesador integrado ARM S3C2410A20 de Samsung. El S3C2410A20 incorpora el núcleo ARM920T con un MMU de rendimiento completo. Cuenta con alto rendimiento, bajo consumo de energía, bajo costo y tamaño pequeño. Es adecuado para dispositivos portátiles y automóviles.

Además de SDRAM y Flash de gran capacidad, H2410EB también expande la interfaz serial RS-232C, la interfaz Ethernet de 10Mbps, la interfaz de pantalla táctil, la interfaz de entrada /salida de audio, el host USB, el esclavo USB, la interfaz UART. , Interfaz IIC, teclado definido por el usuario, pantalla LCD, diseño fácil de usar y de referencia. Es compatible con el funcionamiento del sistema operativo Linux incorporado, es compatible con la reproducción de MP3 /MPEG, GUI, servicios web y otros servicios, y puede desarrollar software específico y controladores de dispositivos según las necesidades del usuario.

El sistema operativo adopta el Linux reducido, la versión del Kernel de Linux es v2.4.18, y el compilador cruzado usado por el sistema es arm-Linux-gcc. Además, hay módulos de código como el código fuente del controlador y el código fuente del programa de prueba.

3 puertos MiniGUI

El sistema host utilizado en este artículo es Red Hat Linux 9.0, el sistema objetivo de puertos es Linux 2.4.18 y la versión MiniGUI es 1.6.9. Compile de forma cruzada la biblioteca de enlaces MiniGUI en el host y luego grabe el archivo de biblioteca compilado para la máquina de destino en el espacio de RAM de la placa de destino junto con el sistema de archivos raíz, y luego vincule directamente la interfaz gráfica de usuario que se ejecuta en la placa de destino con la biblioteca. Ejecutar el host de forma independiente.

3.1 Construcción de entornos de compilación cruzada de Linux

La compilación de GUI se realiza generalmente en una PC, es decir, el compilador en sí puede ejecutarse en una PC, mientras se compila el código fuente generado Los archivos binarios deben ser ejecutables en la máquina de destino, y a estos compiladores se les suele llamar compiladores cruzados. Para la plataforma ARM, instalamos cross-arm-binutils-2.10-1.i386.rpm, cross-arm-gcc-2.95.3-2.i386.rpm, cross-arm-glibc-2.1.3-2.i386 .rpm estos tres paquetes. Estos paquetes están disponibles gratuitamente en línea. El paquete arm-binutils generalmente contiene algunas herramientas binarias para la plataforma ARM, como arm-strip, arm-ar y otros comandos; el paquete arm-glibc contiene la versión ARM de la biblioteca de funciones C estándar y los archivos de encabezado correspondientes; Incluido en arm-gcc está el compilador cruzado en x86 que genera el código de la plataforma ARM. Ejecute el comando rpm para instalar estos paquetes en la PC. Si no está en el directorio de búsqueda predeterminado del sistema, debe agregar el directorio de instalación a la variable de entorno PATH del sistema, para que el sistema pueda encontrar el compilador cada vez que compile.

Inicie sesión en el sistema Linux como usuario root. Instale la herramienta compilador cruzado con el comando rpm en el host. Arm-linux-gcc se instalará en /usr/local/arm/2.95.3/. En este punto, gcc es /usr/local/arm/2.95.3/bin/arm-linux-gcc, y su inclusión es /usr/local/arm/2.95.3/arm-linux/include, la correspondiente lib es /usr/local/arm/2.95.3

- /arm-linux /lib. Luego, agregue variables de entorno a su bashrc. Ejecute vi .bashrc y agregue la última línea a la ruta: export PATH = $ PATH: /usr/local/arm/2.95.3/bin. Después de guardar y salir, ejecute source .bashrc.

Además, debe tenerse en cuenta que la versión de la biblioteca de funciones utilizada en el momento de la compilación debe ser la misma que la versión de la biblioteca de funciones utilizada cuando se ejecuta en la versión de destino. Después de los pasos anteriores, se ha establecido un entorno de compilación cruzada, y el siguiente paso es realizar la configuración de opciones y la compilación cruzada de MiniGUI.

3.2 Configuración y compilación cruzada de MiniGUI

Podemos obtener el paquete de compresión de archivos de recursos MiniGUI-1.6.9 de Internet (http://www.minigui.com/download) de forma gratuita, MiniGUI1 El paquete fuente para .6.9 incluye las siguientes tres partes: libminigui-1.6.9.tar.gz-MiniGUI código fuente de la biblioteca; miniguires-1.6.9.tar.gz-MiniGUI recursos utilizados, incluyendo fuentes básicas, iconos, Mapa de bits, método de entrada, etc; mde-1.6.9.tar.gz-MiniGUI programa de demostración integrado.

Copyright © Conocimiento de Windows All Rights Reserved