Instalando um driver de plataforma

1

Adquiri recentemente um driver de dispositivo para um timer watchdog integrado em uma placa x86 na qual estou executando um sistema Linux mínimo. O kernel é 3.6.11 e foi construído usando buildroot .

Minha instalação não é executada em udev , por isso, preciso executar manualmente insmod e mknod de todos os drivers necessários. Eu consegui fazer isso para um driver CAN, mas para este driver watchdog, eu sou capaz de cruzar o código-fonte para o alvo e estou conseguindo insmod o arquivo .ko resultante. Depois disso, não há erros gerados e uma chamada para lsmod informa que o módulo está carregado.

O problema que estou tendo é que eu preciso criar um nó de dispositivo em /dev para este driver e não tenho certeza de como proceder. Eu não sei como obter números maiores e menores do dispositivo como eu posso para dispositivos char.

A origem deste driver sugere que ele é um driver de dispositivo de plataforma, mas não tenho certeza do que isso significa. Só ouvi falar de dispositivos de caracteres e de blocos e, portanto, a noção de números maiores e menores é relevante para os dispositivos de plataforma? Se sim, como posso obter essa informação? Não há entrada em /proc para este nome de driver de dispositivo e não sei como proceder.

    
por mathematician1975 29.05.2013 / 16:40

1 resposta

4

Se ele usa a interface normal do watchdog do kernel, está em /dev/watchdog , que é 10, 130 aqui.

Também pode exportar outro ( /dev/watchdog0 , etc.). Você pode encontrar isso consultando sysfs:

$ cat /sys/class/watchdog/watchdog0/dev
253:0
$ cat /sys/class/watchdog/watchdog0/uevent 
MAJOR=253
MINOR=0
DEVNAME=watchdog0

E, de fato:

$ ls -l /dev/watchdog0 
crw------- 1 root root 253, 0 May 17 18:26 /dev/watchdog0

Esse número pode ser alocado dinamicamente (não tenho certeza), por isso pode ser diferente em sua máquina.

(Dispositivos de plataforma provavelmente também têm algo em /sys/devices/platform , o que pode permitir que você defina vários parâmetros)

edit: Você pode criar um dispositivo de caractere com mknod como este (como root):

mknod -m 0600 /dev/watchdog c 10 130

-m define o modo (permissões de arquivo, você tem que usar octal aqui); /dev/watchdog é o nome; c significa que é um dispositivo de caracteres c (em oposição ao bloqueio b ); 10 é o maior número; 130 é o menor.

    
por 29.05.2013 / 17:40