LCD &desarrollo framebuffer experiencia de

  

dispositivo frame buffer un dispositivo de caracteres, el uso de y " -; archivo de interfaz de capa controlador y ". Linux es una interfaz de memoria intermedia de trama capa de controlador de dispositivo se define estructura struct fb_info. En el nivel de archivo, Linux define por las siguientes funciones operativas: struct file_operations

Software procesos en ejecución: Read

en el nivel de archivo, el usuario llama a la operación file_operations función struct en los file_operations struct . struct fb_ops funciones de llamada indirectos para operar hasta el núcleo cuando un FB dispositivo de hardware, también registró fb_ops puntero struct fb al abrir el dispositivo, los primeros fb_drivers de llamadas [] de xxxfb_init () para inicializar el dispositivo;
< . p> 1, la etapa de desarrollo y el marco

file involucrados: fb.h, fbmem.c, xxxfb.c

fb.h: define una estructura para, y variables macro;

fbmem.c: entrada primaria y para la inicialización del dispositivo, como file_operations struct;

puntos de entrada:

struct estática {

const char * nombre;

int (* init) (void);

int (* configuración) (char *);

} fb_drivers [] = {__initdata

#ifdef CONFIG_FB_YOURCARD

{" driver_name ", xxxfb_init, xxxfb_setup}, España

#endif

operaciones de archivo:

estática file_operations struct fb_fops = {

propietario: THIS_MODULE, España

leer: fb_read, España

w rito: fb_write, España

ioctl: fb_ioctl, España

mmap: fb_mmap, España

abierto: fb_open, España

liberación: fb_release, España

#ifdef HAVE_ARCH_FB_UNMAPPED_AREA

get_unmapped_area: get_fb_unmapped_area, España

#endif

};

xxxfb.c: añadir archivos del controlador de dispositivo a sí mismos, tales como el fb_info estructura;

La función de punto de entrada: xxxfb_init; xxxfb_setup;

fb_ops static struct xxxfb_ops = {

propietario: THIS_MODULE, España

fb_open: xxxfb_open, /* Sólo si usted lo necesita hacer algo * /

fb_release: xxxfb_release, /* sólo si lo necesita para hacer algo * /

fb_get_fix: fbgen_get_fix, España

fb_get_var: fbgen_get_var , España

fb_set_var: fbgen_set_var, España

fb_get_cmap: fbgen_get_cmap, España

fb_set_cmap: fbgen_set_cmap, España

fb_pan_display: fbgen_pan_display, España

fb_ioctl: xxxfb_ioctl , /* opcional * /

};

2, lo que es un dispositivo framebuffer

framebuffer capaz de extraer un dispositivo de hardware de gráficos, una interfaz gráfica de usuario en el pozo interfaz. Con uso de este dispositivo, la aplicación del usuario no necesita la comprensión en profundidad de los factores subyacentes que será capaz de hacer buenos gráficos.

Para el usuario, que es el otro y /dev aparato después de que no hay diferencia, el usuario puede

uso de este dispositivo como una memoria, los datos pueden ser escritos en esta memoria, es también los datos se pueden leer desde esta memoria.

Se registra por primera vez el menor uso de este dispositivo es igual a 0, el segundo es para ser registrada framebuffer menor igual a 1, y así sucesivamente.

3, framebuffer estructura interna

Estructura de datos: Equipo de uso de este dispositivo se basa en gran medida en los cuatro siguientes estructuras de datos. Estas tres estructuras en fb.h en un comunicado.

Struct fb_var_screeninfo

Struct fb_fix_screeninfo

Struct fb_info

La primera configuración se utiliza para describir las características de la tarjeta gráfica. Se encuentra por lo general un usuario. Incluye una resolución de una pantalla de visualización, el número de bits por píxel y el momento de algunas variables. Xres las variables que definen el número de píxeles de la pantalla ocupada por su partido, Yres define el número de píxeles ocupada por una pantalla, bits_per_pixel define cada pixel con el número de bits para representar.

La segunda estructura define las características de hardware de la tarjeta gráfica no se pueden cambiar, el usuario selecciona qué tarjeta gráfica, sus características de hardware se establecerán. Contiene la dirección física y la duración de la memoria tampón de pantalla.

La tercera estructura es una memoria intermedia de trama para las interfaces definidas capa de controlador de dispositivo Linux. Contiene no sólo la función subyacente, sino también el estado del aparato de registro de datos. Cada memoria intermedia de trama y un dispositivo correspondiente son fb_info estructura. Modename en el que el nombre de la variable miembro para el dispositivo, fuente de visualización FontName, fbops puntero para señalar a la función operativo subyacente. Define el estado actual de los gráficos framebuffer independiente del dispositivo, y una tarjeta gráfica puede tener dos framebuffer, en este caso, es necesario fb_info dos estructuras. Esta es la única estructura en el espacio del núcleo visible.

4, diseñar su propio uso de este dispositivo controlador de dispositivo

el usuario primero tiene que añadir el siguiente código a fbmem.c

static struct {

const char * nombre;

int (* init) (void);

int (* configuración) (char *);

} fb_drivers [] = {__initdata

#ifdef CONFIG_FB_YOURCARD

{" driver_name ", xxxfb_init, xxxfb_setup}, España

#endif

a continuación reasignar tamaño de la memoria en función de sus necesidades en el xxfb.c. Por ejemplo:

VIDEOMEMSIZE #define (1 * 1024 * 1024) /* 1 MB * /

información var de nuevo de acuerdo con sus respectivas modificaciones de hardware. Los principales cambios

xxfb_set_var (struct fb_var_screeninfo * var, con int, * info estructura fb_info) función.

5, la forma de agregar controladores de dispositivo framebuffer

En make menuconfig en la primer entrada Dispositivos de caracteres, compruebe el interior de la Virtualterminal. Si desea que la consola en la salida del LCD, compruebe el soporte para la consola virtual de terminal.
(Msh seleccionado (shell minix), luego se coloca en un rc en un sh < /dev /ttyS0, la entrada de tecla a través del puerto de serie de la salida de la pantalla se puede visualizar en la pantalla LCD.)

retiró una interfaz de capa podemos ver la opción de dispositivo de consola, introduzca el cursor va a caer en el uso de este dispositivo de apoyo, pulse la tecla eNTER para entrar, se puede seleccionar el dispositivo de framebuffer que necesitan en ese país. El tipo de controlador de dispositivo a sí mismo añade (si en uClinux, * debe ser seleccionada en lugar de M seleccionado), que tendrá un archivo .o correspondiente en tiempo de compilación.

En el bajo nivel avanzado se puede configurar bpp lleno de soporte de píxeles, y luego seleccionar las fuentes Selectcompiled-in puede ser. Después

etc. verá el sistema operativo que se ejecuta
fb este dispositivo en /dev continuación. Debería ser de la mayor de 29 años, primer menor de dispositivo debe ser cero.

Copyright © Conocimiento de Windows All Rights Reserved