dirección física de la dirección virtual asignado a la kernel — chip de análisis viene junta AT91SAM9261EK controlador de controlador 9261 LCD
Este artículo analiza la junta AT91SAM9261EK 9261 chip controlador LCD viene conductor es cómo implementar la asignación de la dirección física del núcleo en dirección virtual. Cuando el sistema realiza /drivers/video/atmel_lcdfb.c en atmel_lcdfb_init (), llame platform_driver_probe (&atmel_lcdfb_driver, atmel_lcdfb_probe) la función, en primer lugar atmel_lcdfb_driver en () el nombre de " atmel_lcdfb " como base para buscar el dispositivo en el registro del sistema no hay tales platform_device, si usted tiene el equipo, la unidad de registro para el dispositivo al sistema. struct platform_driver estática atmel_lcdfb_driver = {.Remove = __ exit_p (atmel_lcdfb_remove), driver = {.name = ". atmel_lcdfb ", propietario = THIS_MODULE,} ,.}; Desde el /arch/arm/mach-at91/at91sam9261_devices.c La siguiente plataforma_device at91_lcdc_device, estructura estática platform_device_91_lcdc_device = {.name = " atmel_lcdfb '. .resource = lcdc_resources, .num_resources = ARRAY_SIZE (lcdc_resources),}; su nombre es también " " atmel_lcdfb, y at91_add_device_lcdc () la función ha sido registrada en el dispositivo al sistema, por lo que cuando se realiza la función atmel_lcdfb_probe () en el mapa cuando = platform_get_resource (PDEV, IORESOURCE_MEM, 1), para obtener los parámetros definidos a continuación, en el que lcdc_resources AT91SAM9261_LCDC_BASE es la dirección de inicio de la interfaz de usuario LCD 0x600000, es decir, la dirección física; AT91SAM9261_LCDC_BASE + SZ_4K- 1 a la dirección final. lcdc_resources recursos struct estáticas [] = {[0] = {.start = AT91SAM9261_LCDC_BASE, .end = AT91SAM9261_LCDC_BASE + SZ_4K - 1, .FLAGS = IORESOURCE_MEM,}, [1] = {.start = AT91SAM9261_ID_LCDC, .end = AT91SAM9261_ID_LCDC,. flags = IORESOURCE_IRQ,}, # si está definido (CONFIG_FB_INTSRAM) [2] = {.start = AT91SAM9261_SRAM_BASE, .end = AT91SAM9261_SRAM_BASE + AT91SAM9261_SRAM_SIZE - 1, .FLAGS = IORESOURCE_MEM,} #endif}; a continuación, logrado por la función ioremap () desde kernel mapeado dirección virtual a una dirección física, es decir sinfo- > mmio = ioremap (INFO-> fix.mmio_start, INFO-> fix.mmio_len); en donde INFO-> fix.mmio_start = regs- > iniciar (es decir AT91SAM9261_LCDC_BASE); INFO-> fix.mmio_len = regs- > final (es decir AT91SAM9261_LCDC_BASE + SZ_4K - 1) - regs- > start + 1;
1.Linux OS versión: RedHat AS 52. Configuración del entorno de red: Host (Linux): IP: 192.168.1.1
¿Se bloqueará el servidor Linux? Por supuesto, he estado expuesto a cierto tipo de servidor. Después
Hace diez años, se lanzó Red Hat Enterprise Linux, lo que marca la entrada oficial de Linux en las a
de Garbled (diamante, cuadrado) Debido a que la instalación de debian utiliza una instalación mínim
Linux secuencia de inicialización controlador del núcleo de ajuste
Sistema de archivos OCFS de Linux RAC e INODES
Sistema operativo Linux instalación del controlador de la tarjeta de sonido y configuración
Archivo de recuperación de la instancia de Linux eliminado
Cómo usar magent para construir un clúster memcached
Informe de errores de los comandos de Sudo cd y sudo ll
Linux shell diferente conversión de datos binarios (binario, octal, hexadecimal, base64)
sistema operativo Linux después de un fallo grave del modo de rescate
Limitaciones de recursos de Linux y consejos abiertos
Error de Windows 7: el sistema no reconoce la unidad de DVD
Vista sistema ocho habilidades avanzadas de aplicación
¿Qué debo hacer si Win10 Explorer se actualiza automáticamente?
Cómo recuperar la flecha en la parte superior derecha de Win8 Explorer
Grupo de cartas TGT Devil Garden Warlock de la leyenda de Hearthstone cómo combinar
Windows 8 cómo eliminar los consejos de marca de agua al método de marca de agua