¿El proceso de identificación del dispositivo mediante el controlador de Linux integrado?
(1) El propio controlador lleva la información del dispositivo, como la dirección inicial, el número de interrupción, etc. :El dispositivo se puede identificar basándose en esta información al cargar el controlador.
(2) El controlador en sí no tiene información del dispositivo, pero la información de muchos dispositivos se ha determinado (o se determinará) de otras maneras en el kernel al cargar el controlador, compare el controlador con estos dispositivos; uno por uno para determinar si coinciden. Si el controlador coincide con el dispositivo, puede operar el dispositivo a través del controlador. El kernel a menudo utiliza el segundo método para identificar dispositivos, que puede administrar varios dispositivos en un archivo. También es conveniente modificar el código cuando cambia la configuración de la placa de desarrollo. En el archivo del kernel include/Linux/platform_device.h, se definen dos estructuras de datos para representar estos dispositivos y controladores: la estructura platform_device se usa para describir el nombre, ID, recursos ocupados (como dirección/tamaño de memoria, número de interrupción, etc. ) dispositivo; la estructura Platform_driver se utiliza para describir varias funciones operativas, como funciones de enumeración, funciones de eliminación de dispositivos, nombres de controladores, etc. Después de que se inicia el kernel, primero crea una lista vinculada para organizar la estructura plataforma_dispositivo que describe el dispositivo y obtiene una lista de dispositivos. Cuando se carga la estructura platform_driver del controlador, se utilizan una o más funciones coincidentes para verificar si el controlador admite estos dispositivos. Una verificación común es simple: compare los nombres del controlador y del dispositivo.