¿Escribir un controlador de dispositivo para Platform Bus en Embedded Systems?
arm linux-device-driver (1)
He pasado por la implementación de algunos controladores en Linux Kernel Source y puedo ver que estos son los controladores de la plataforma.
drivers/net/ethernet/smsc/smsc911x.c
static struct platform_driver smc911x_driver = {
.probe = smc911x_drv_probe,
.remove = smc911x_drv_remove,
.suspend = smc911x_drv_suspend,
.resume = smc911x_drv_resume,
.driver = {
.name = CARDNAME,
.owner = THIS_MODULE,
},
};
Arriba hay un controlador para el dispositivo de plataforma (controlador Ethernet basado en smsc) y los dispositivos de plataforma son dispositivos que no se sondean automáticamente durante el arranque del sistema a diferencia de los dispositivos heredados que se encuentran en el bus pci.
Creo que esta comprensión mía está bien aquí?
Ahora cuando digo que son los dispositivos de la plataforma, ¿significa que estos dispositivos (controlador de Ethernet) están ubicados en el bus de la plataforma y en la arquitectura de ARM el bus de plataforma predeterminado es AMBA.
Entonces, cuando soldamos el controlador Ethernet en una placa basada en ARM, ¿debería sentarse o interconectarse con el bus AMBA?
¿Cómo decidimos que el controlador que vamos a escribir es el controlador de Plataforma o el controlador Normal?
Desde mi experiencia limitada en el desarrollo de controladores de plataformas ARM, los dispositivos AMBA generalmente tienen registros de identificación al final de su interfaz de registro IO asignada en memoria.
En general, si mira el manual de referencia de su controlador de ethernet y el resumen del registro especifica los registros de identificación de componentes / periféricos (generalmente en los desplazamientos 0xFE0-0xFEC y 0xFF0-0xFFC), debe escribir un controlador de bus AMBA. Estos controladores pueden ser identificados automáticamente por el conductor del autobús.
De lo contrario, si la interfaz de registro no especifica ningún registro de ID en las compensaciones 0xFE0-0xFEC y 0xFF0-0xFFC, probablemente solo quiera escribir un controlador de plataforma. Estos dispositivos no pueden identificarse automáticamente y debe adjuntar específicamente un controlador al dispositivo.