En primer lugar, la inicialización del sistema, el registro de conexión con la plataforma:
platform_bus struct device = {.bus_id = " plataforma ",};
struct tipoDeBus platform_bus_type = {.name = " quot;, plataforma y fósforo = platform_match, .suspend = platform_suspend, .resume = platform_resume ,.};
int __init platform_bus_init (void) {device_register (&platform_bus); bus_register retorno ( &platform_bus_type);}
registrado
dispositivo
platform_device struct estática * smdk2410_devices [] __initdata = {&s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis }; //la estructura anterior del aparato definido en la devs.c, el siguiente es un ejemplo: /* NAND Controller * /
struct s3c_nand_resource recurso estático [] = {[0] = {.start = S3C2410_PA_NAND, .end = S3C2410_PA_NAND + S3C24XX_SZ_NAND, .FLAGS = IORESOURCE_MEM,}};
struct platform_device s3c_device_nand = {.name = " S3C2410-nand ", id = -1, .num_resources = ARRAY_SIZE (s3c_nand_res. . Ource), recursos = s3c_nand_resource,};
Así que podemos añadir el dispositivo que queremos por el método anterior
=============. =============================
//dispositivo de estructura estática en la lista anterior se añadieron a la placa base s3c24xx_board smdk2410_board __initdata = {.devices = smdk2410_devices, .devices_count = ARRAY_SIZE (smdk2410_devices)};
static void __init smdk2410_map_io (void) {s3c24xx_init_io (smdk2410_iodesc, ARRAY_SIZE (smdk2410_iodesc)); s3c24xx_init_clocks (0); s3c24xx_init_uarts ( smdk2410_uartcfgs, ARRAY_SIZE (smdk2410_uartcfgs)); s3c24xx_set_board (&smdk2410_board); //Tenga en cuenta que este paso
}
smdk2410_init_irq static void __init (void) {s3c24xx_init_irq ();}
==== ====================================== //esto es crear una estructura a través de un MACHINE_START macro (SMDK2410, " SMDK2410 ") /* @TODO: solicitar un nuevo identificador y el interruptor * a SMDK2410 * //* Mantenedor: Jonas Dietsche * /phys_ram = S3C2410_SDRAM_PA, .phys_io = S3C2410_PA_UART, .io_pg_offst = (((U32). S3C24X X_VA_UART) > > 18) &0xFFFC, .boot_params = S3C2410_SDRAM_PA + 0x100, .map_io = smdk2410_map_io, .init_irq = smdk2410_init_irq, .Timer = &s3c24xx_timer, MACHINE_END
//macro se define como sigue: /** conjunto de macros para definir la arquitectura características del este está integrado en * una mesa por el enlazador * /#define MACHINE_START (_type, _name) \\ const struct machine_desc __mach_desc _ ## _ tipo \\ __ atributo __ ((__ sección __ (" .. .ARCH .info.init "))) = {\\ .nr = MACH_TYPE _ ## _ tipo, \\ .name = _name,
#define MACHINE_END \\};
para obtener de ese modo una llamada _ _mach_desc_SMDK2410_type, tipo de estructura struct machine_desc
===================== mirada s3c24xx_set_board (&smdk2410_board).
(en la CPU. c)
/* La información de planchar * /
estática struct s3c24xx_board * bordo;
void s3c24xx_set_board (struct s3c24xx_board * b) {int i;
tablero = b; //establecer la variable global
si (b- >! clocks_count = 0) {struct clk ** ptr = b- > relojes;;
para (i = b- > clocks_count; i > 0; i--, ptr ++) s 3c24xx_register_clock (* ptr);}}
y la siguiente función de inicialización de esta variable será utilizada static int __init s3c_arch_init (void) {int ret;
//hacer lo correcto para init cpu
si (CPU == NULL) de pánico (" s3c_arch_init: NULL cpu \\ n ");
ret = (CPU > init) (); si (ret =! 0) return ret;
si (tablero = NULL) {struct platform_device ** ptr = bordo- y dispositivos gt;!; int i;
//plataforma de desplazamiento para cada uno de los dispositivos (i = 0; i < bordo- > devices_count; i ++, ptr ++) {//registrar en conexión con la plataforma a la vez, por lo que se puede encontrar el dispositivo //plataforma de .ret = platform_device_register (* ptr al cargar la unidad ), si (r) {printk (KERN_ERR " s3c24xx: Error al agregar el dispositivo de la placa% s (% d)
@% p \\ n ", (* ptr) - > nombre, ret, * PTR);}}
/* enmascarar cualquier error, es posible que no necesite todos estos dispositivos de planchar * * /ret = 0;}
ret retorno;}
arch_initcall (s3c_arch_init);
================================== =
/*** platform_device_register - añadir un dispositivo a nivel de plataforma * @pdev: dispositivo de plataforma estamos añadiendo ** /int platform_device_register (struct platform_device * pdev) {int i, ret = 0;
if (! pdev) volver -EINVAL;
//dispositivo principal asociado si (pdev- >! dev.parent) pdev- > dev.parent = &platform_bus;
pdev- > dev.bus = &platform_bus_type;
//ID == -1 tratada, pero si diferentes nombres (pdev- > id = -1!) snprintf (pdev- > dev.bus_id, BUS_ID_SIZE, ".% s% u ", pdev- > nombre, pdev- > id);zh-CN"],null,[0.94743574],zh-CN"]]]
Windows CE es un sistema operativo integrado desarrollado por Microsoft que se puede utilizar en una
1 se reinicia el servidor 2 al principio de la guía, en la interfaz de inicio (ver abajo) y por en
El lenguaje Go (es decir, Golang) es un lenguaje de programación desarrollado originalmente por Goo
Configuración de la partición del disco duro: C: Win7 (Formato NTFS — — instalado)
Tutorial de instalación y configuración de Redis
Configuración básica de seguridad del sistema VPS de Linux tutorial básico
Tcpdump utilizar resumen simple
Varios scripts de monitoreo de Linux de uso común
Parámetros del comando df de Linux detallados
Implementación de Ubuntu del montaje permanente de la partición
Le enseñará cómo instalar software de aplicación en Linux
Instalación y uso de CentOS Gearman versión sin errores
Steam host habilitará el sistema Linux
Cómo resolver el problema de la pantalla azul de win10
Icono de red Win10 signo de exclamación cómo hacerlo
Sistema Win10 bajo el sistema Win10 para abrir este método de computadora
Evite el error de configuración de red de win7, elimine Bonjour
¿Cómo proteger la seguridad de los datos del disco duro? El software TrueCrypt lo ayuda a
El brillo de la pantalla del sistema Win10 no se puede ajustar solución
Win7 mi documento restaura el método de ubicación de directorio predeterminado
¿Cómo ajusta Meitu Xiu Xiu el tamaño de la imagen? Ajustar el tamaño de la imagen tutorial