Come sviluppare driver di periferica

July 31

Come sviluppare driver di periferica


Un driver di periferica è un pezzo di software che semplifica l'interazione tra i programmi applicativi e di un dispositivo hardware collegato al computer. Un driver di periferica è specifica hardware e dispositivo. In alcuni casi, l'attuazione di un driver può essere separata in strati logici e fisici, permettendo una porzione del codice che sarà di una classe simile dispositivo, ad esempio una stampante o un monitor. Il sistema operativo (OS) definisce meccanismi specifici che consentono alle applicazioni di apprendere la disponibilità e la capacità di un dispositivo hardware, e integrare le sue caratteristiche in comportamenti del programma.

istruzione

1 Studiare i manuali che descrivono i meccanismi previsti dal dispositivo hardware per controllare le sue caratteristiche. Interazioni tipicamente assumono la forma di segnali che mappano ai comandi che producono comportamenti supportati.

2 Nozioni di base di scrittura di un driver di periferica per il sistema operativo di destinazione. Questo fornisce un'idea globale del processo da seguire per rendere servizi hardware accessibili. Il quadro conducente specifica i dettagli di usare le eccezioni previste per consentire ai conducenti di operare a livello di kernel di solito limitato al sistema operativo.

3 Scrivi semplice driver guscio che fornisce i meccanismi di base per collegare un driver di dispositivo a un'applicazione. La maggior parte dei quadri forniscono esempi e il codice tutorial che produrranno una semplice implementazione che può essere utilizzato come base per il driver. Questo guscio dovrebbe fornire i meccanismi per avviare correttamente e arrestare il conducente, prima e dopo le invocazioni specifiche.

4 Determinare la semplice funzione di hardware possibile è possibile implementare. Questo esercizio fornisce i fondamenti della programmazione un'interazione, verificare che l'hardware sia collegato correttamente al computer e comunicare. È comune per iniziare con una semplice richiesta unidirezionale che attiva un meccanismo di luce o suono per confermare avvenuta trasmissione del messaggio. Questo processo vi insegna come avviare, inviare e chiudere una interazione con il dispositivo.

5 Tackle interazioni più avanzate, uno alla volta, basandosi sulle conoscenze acquisite alle fasi precedenti. Gli esempi includono operazioni che attendere una risposta di dati da restituire al conducente, in modo sincrono o asincrono. Queste interazioni possono richiedere meccanismi che bloccano esecuzione finché viene ricevuta una risposta o entrando in uno stato che permette la ricezione di una risposta e la reazione in un secondo tempo di esecuzione.

6 Implementare manipolazioni di dati per produrre i risultati nella forma prevista dal l'applicazione chiamante. Alcuni quadri del driver permettono la separazione del codice in livelli di kernel e degli utenti. Il livello utente, in cui le applicazioni operano, è più ristretto, ma meno in grado di provocare instabilità del sistema. Se il sistema operativo supporta questa funzione, queste manipolazioni sono candidati da attuare a livello di utente se hanno bisogno senza eccezioni livello di kernel.

7 Restituire i dati per l'applicazione e le risorse correttamente stretti che sono stati utilizzati dal driver. In alcuni casi, il conducente può supportare l'interazione diretta con il dispositivo dall'applicazione. In questo caso, il conducente deve mantenere le risorse disponibili fino specificamente indicato di chiudere in un secondo momento.

Consigli e avvertenze

  • E 'più facile da imparare i concetti di base e modelli di ingresso seriale / output (I / O) di elaborazione, utilizzando le interfacce di sistema a livello utente di interagire con semplici file di testo. driver a livello di kernel di I / O interfacce sono sostanzialmente simili.
  • Un driver di periferica virtuale è una variante speciale di driver software che emula servizi che possono essere forniti da hardware senza alcuna connessione ad un dispositivo fisico.
  • bug del software a codice scritto a livello di kernel comportano un elevato rischio di creare instabilità del sistema. E 'fondamentale che la logica del software essere attentamente sviluppato e testato da un ingegnere del software specializzato che può ridurre il rischio attraverso attente strategie di sperimentazione.