Nozioni di base di Device Driver Linux

September 25

Un driver di periferica Linux è significativamente diverso dalla sua controparte di Windows. driver Linux sono creati esclusivamente per fornire un'interfaccia per l'hardware. Essi non fanno alcuna ipotesi su come verrà utilizzato l'hardware. Inoltre, di solito non forniscono alcun tipo di interfacce grafiche per l'hardware. La maggior parte dei driver per Linux supportati hardware fanno parte dei sorgenti del kernel di Linux e sono mantenuti dalla comunità di sviluppo di Linux.

Funzione

la funzione di un driver di periferica è quello di fornire l'accesso a un pezzo di hardware. In Windows, questo viene fatto attraverso l'Application Binary Interface (ABI) chiama che Microsoft fornisce allo sviluppatore del driver. Il driver di periferica per Windows viene fornito all'utente come un'applicazione binaria.

In Linux, non vi è alcuna ABI o Application Programming Interface (API) per i driver di periferica. Invece, il kernel Linux fornisce un'interfaccia userspace stabile per le applicazioni. I driver di periferica vengono creati come moduli del kernel Linux che nascondono i dettagli di come funziona il dispositivo. Questi moduli sono conformi ad una serie di chiamate standardizzate indipendenti dei driver di periferica stessi.

lineamenti

Una delle caratteristiche principali di driver di periferica Linux è che sono modulari. Essi possono essere e sono costruiti separatamente dal resto del kernel. Ciò significa che ogni modulo (o guida) possono essere utilizzati o rimossi dal kernel a runtime seconda di quale hardware è disponibile.

I driver sono anche costruiti con la distinzione tra meccanismo e la politica. Meccanismo è ciò che sono previste le capacità, e la politica è come le capacità devono essere utilizzati. Il driver di periferica Linux è politica di libero. Il conducente accede l'hardware, ma non dice che l'utente come può o dovrebbe essere usato.

classi di unità

Il kernel di Linux separa dispositivi hardware in tre tipi principali: dispositivi a caratteri, dispositivi a blocchi e le interfacce di rete. Un dispositivo a caratteri è possibile accedere come un flusso di caratteri o byte, simile a un file. Questi dispositivi comprendono la console di testo, la tastiera e le porte seriali.

Un dispositivo a blocchi è un dispositivo che può essere raggiunto solo in blocchi di dati (di solito un kilobyte o un'altra potenza di 2) e può ospitare un filesystem, come un'unità disco. Linux consente alle applicazioni di leggere e scrivere ai dispositivi a blocchi, come un dispositivo a caratteri, in modo che sono gestiti in modo particolare dal kernel.

Un dispositivo di rete consente lo scambio di dati con altri host. Questi dispositivi sono generalmente hardware, ma può anche essere puramente software. Il kernel ha un modo diverso per comunicare con i dispositivi di rete che con dispositivi a caratteri o blocchi. Invece di lettura e scrittura del dispositivo, gestisce la trasmissione dei pacchetti.

patenti di guida

Il kernel Linux è sotto licenza GNU General Public License (GPL), che significa che è open source e liberamente disponibile per chiunque di scaricare, modificare e ridistribuire fino a quando il codice ridistribuito anche sotto licenza GPL. Tuttavia, questo non vale per i driver di periferica Linux.

Dato che il kernel è modulare, il driver di periferica non diventa parte del kernel. Invece, accede il kernel attraverso un'interfaccia ben definita. Se il driver di periferica utilizza solo l'interfaccia del modulo, non deve essere rilasciato sotto licenza GPL. Tuttavia, se il driver dispositivo utilizza effettivamente parte del codice kernel per lavorare, anziché l'interfaccia disponibile, deve essere coperto dalla GPL.

La fusione con il kernel

Una volta che un driver di periferica viene accettato come "lavoro" da parte del team di sviluppo di Linux Kernel, che entrerà a far parte della struttura di linea principale di Linux dei sorgenti del kernel. Ciò significa che sarà tenuto aggiornato attraverso modifiche successive del kernel, lavorerà con tutte le unità centrali di elaborazione (CPU) supportati da Linux, e verrà risolto e migliorato dalla comunità di sviluppo di Linux.

L'albero dei sorgenti del kernel tiene i moduli per la maggior parte dell'hardware supportato da Linux. Per questo motivo, fino a quando si utilizza Linux supportato hardware, è possibile caricare il sistema operativo e avere il vostro lavoro hardware senza installare alcun software driver aggiuntivo.