2009-06-10 9 views
8

Voglio codificare i driver in C in linux os, anche se penso che sia molto difficile. Posso avere qualche suggerimento su come iniziare o libri da seguire? I driver possono essere dalla mia porta USB alla scheda grafica !!come codificare i driver?

So dove posso cercare i libri, vorrei sapere quali sono le conoscenze di base con cui iniziare. Devo avere una conoscenza dell'hardware e quali libri specifici sono adatti a principianti come me?

+9

inizia con non terminare ogni frase con "!!". ;-) –

risposta

4

provare amazon !! ci sono molti libri lì per i conducenti. alcuni hanno campioni 2 !!

+5

Perché il downvote? Mi piace come lo stile corrisponde alla domanda. – aib

+1

Perché non è considerato * utile *, penso. – Roddy

7

"Linux Device Drivers" (il libro di O'Reilley) di Rubini e Corbet è il libro definitivo per Linux Device Drivers.

Cool! guarda la versione pdf gratuita nella risposta di Roddy & commento di kristina!

+1

La terza edizione è anche disponibile gratuitamente online su http://lwn.net/Kernel/LDD3/. – kristina

3

Prima di iniziare a progettare i driver, è necessario acquisire competenze C eccezionali e probabilmente un po 'di know-how nel kernel di Linux. I driver originali non sono banali e potrebbero spaventarti se non sei abituato a programmare a basso livello.

Potrei consigliare The C programming Language se non sei abituato a C così com'è, a mio avviso, il primer su C se hai qualche background di programmazione.

+4

Le skill in Solid C sono sicuramente una buona idea, ma non c'è nulla di spaventoso nello sviluppo del kernel e del driver. La posta in gioco è appena superiore quando commetti un errore. :-) –

0

Basta guardare i codici sorgente dei driver correnti. Ho scritto il mio driver USB rndis leggendo solo i commenti sopra i codici.

Ottieni il codice sorgente del kernel e guarda la directory/drivers. I driver USB sono nella directory usb, tuttavia i driver USB relativi alla rete sono residenti in/net/usb.

Puoi imparare un sacco leggendo i commenti.

2

Driver differiscono notevolmente per complessità a seconda del dispositivo. I driver USB sono sul lato semplice dello spettro; I driver GPU sono estremamente complessi e persino gli autori di quei driver di solito non sanno tutto quello che fanno. La mia raccomandazione sarebbe concentrarsi sui driver per l'hardware che ti interessa personalmente, piuttosto che cercare di essere un jack-of-all-hardware; sarà più facile a lungo termine.

Le risposte di tutti gli altri sulle fonti di documentazione e le varie cose da leggere sono azzeccate e dovresti davvero accettarne una.

Molte delle comunità di driver più complesse hanno le proprie informazioni specifiche per il dominio. Se vuoi scrivere un driver GPU, le community DRI/DRM e Mesa hanno i loro wiki e le loro mailing list che ti aiuteranno molto, oltre alla loro documentazione. http://dri.freedesktop.org/ è un buon punto di partenza, così come lo è http://wiki.x.org/.

Spero che questo aiuti!