Dispositivi e Drivers

14 / 100
()

101.3 Dispositivi e Drivers

Bisogna subito fare una differenza tra dispositivi Hot Plug e Cold Plug

I dispositivi Cold Plug sono dispositivi collegabili e scollegabili solo a computer spento a differeenza dei dispositivi Hot Plug.
I dispositivi Hot Plug, sono ad esempio dispositivi USB,Firewire, e comunque sono dispositivi collegabili e scollegabili anche a computer acceso.
In linux e’ possibile vedere un elenco dei dispositivi pci collegati digitando:

$ lspci

Si otterra’ un file ad elenco dove potremo leggere l’indirizzo pci a cui e’ collegato e il nome della periferica.

E’ possibile anche vedere una struttura ad albero digitando :

$ lspci -t

Otterremo gli indirizzi di tutte le periferiche pci, e il risultato che si ottine ci aiuta a capire che cosa e’collegato e dove. Dal kernel 2.6 i device vengono creati dinamicamente. Per capire questo bisogna considerare la cartella

/dev/sd?

Che sta a indicare la cartella che possiede tutti i dispositivi che iniziano con sd e che possiedono un solo carattere successivamente.
Come risultato della ricerca otterremo


/dev/sda


Infatti collegato c’e’ solo un disco e questo perche’ nel kernel 2.6 UDEV crea automaticamente i devices in /DEV man mano che vengono collegati

Quindi se non e’ collegato un device, non lo troveremo sotto /dev a differenza delle versioni precedenti che necessitavano avere tutte le voci in /dev gia’ presenti. Pertanto anche se non erano collegate potevamo osservare un interminabile elenco di devices anche se poi erano vuoti
Con udev vengono dinamicamente create e rimosse invece periferiche aggiuntive e i loro relativi drrivers.

Se ad esmpio collegassimo una chiavetta USB potremmo notare che ci sara’ una nuova cartella , avremo infatti


/dev/sda e /dev sdb


Una volta che scolleghero’ la chiavetta il file /dev/sdb scomparira’
Indipèendentemente quindi che siano devices HOTPLUG o COLDPLUG questi hanno sempre di un driver per poter essere utilizzati.

Con il comando


$ lsmod

Si potranno elencare tutti i drive caricati, in memoria.
Se si volesse filtrare o isolare la ricerca bastera’ digitare

$ lsmod |grep pcs*

Per svolgere una ricerca mirata e selettiva.

Per rimuovere un driver dalla memoria si dovra’ digitare :

rmmod < nome del modulo >

Ad esempio


su rmmod pcspkr per rimuovere i driver degli speaker.
Digitando lsmod | grep pcs?
osserveremo che tali drivers non saranno piu’ presenti nel listato di risposta. Viceversa a rmmod e insmod
Quindi insmod pcspkr ma in tal caso insmod richiede il full path ovvero il percorso completo nel file system per il modulo che si va a caricare.

Ma dove lo carichiamo, come possiamo rintracciare l’esatta collocazione di un driver nel file system ?

Tutti i moduli si trovano in lib/ modules quindi:

ls /lib/modules
verranno elencate due directories o anche di piu’ in base al numero di kernel installati.Bisogna entrare nella versione del kernel attuale.

Come ?

Con uname -r

Potremmo anche cercarlo con il comando find : cosi –

find /lib/modules $(uname -r)/ -iname “pcspkr.ko*”

Sara’ visualizzato il percorso completo da copiare e incollare a insmod successivamente.

Esiste anche una alternativa piu’ semplice che e’ modprobe.
Digitando modprobe -r pcspkr ( per rimuovere )
Digitando modprobe pcspkr ( per installare )

Supponiamo che si abbia la necessita’ di cambiare la configurazione di un modulo ad esempio configurare gli interrupts o l’indirizzo DMA da usare con un certo modulo
Questo e’ possibile farlo all’interno di modprobe.conf o in un singolo file con il nome del modulo dentro a etc/modprobe.d

Sempre parlando di Hardware, il nostro user space e le normali applicazioni senza privilegi di root possono accedere all’hardware indirettamente tramite il sysfs filesystem montato in e-sys

vedi fig 1

mount grep | sys

Entrando all’interno( cd /sys/ si potra’ notare l’elenco dei devices suddivisi per categoria.Possiamo vedere che e’ un filesystem di tipo sysfs montato dentro sys

Cio significa che se entriamo all’interno con

cd /sys/ls

Possiamo vedere che abbiamo device suddivisi per categoria,

vedi fig 2

Con cat size si puo vedere la grandezza di un device
Con cat stat si puo vedere caratteristiche di capacita’ e lo status delle allocazioni di memoria di un device
Con cat ro si interroga lo status del device se read only oppure no ( se eseguo cat /ro vedo che e’ 0

– cio’ significa che il dispositivo non e’ in sola lettura, a differenza se avessi trovato 1)

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?