View Full Version : Scrivere drivers sotto Linux
Web Wolf
24-07-2003, 17:16
Qualcuno saprebbe dirmi da quale parte dovrei rivolgermi per la scrittura di un driver sotto Linux ?
Quello che intendo io é riguardo alla documentazione (libri possibilmente in italiano) e alle mappe dei registri relativi all'hardware (senza le quali ovviamente non si può fare nulla).
peter_pan
24-07-2003, 17:22
Understanding the linux kernel, seconda edizione, Bovet & Cesati + Linux Device Drivers, seconda edizione, Rubini & Corbet. Sono però in inglese ;)
per un'infarinata sulla programmazione di sistema, in italiano,
http://gapil.firenze.linux.it/
Web Wolf
24-07-2003, 23:57
Grazie a tutti per le risposte, ma non c'é qualche buon libro in italiano ?
Originariamente inviato da Web Wolf
Grazie a tutti per le risposte, ma non c'é qualche buon libro in italiano ?
forse, ma se sei davvero interessato a certi argomenti non si sfugge, l'inglese lo devi conoscere bene (almeno a livello di comprensione di testi scritti)
Web Wolf
25-07-2003, 00:44
D'accordo, d'accordo, l'inglese lo conosco, ma se permetti, la lettura di un testo in inglese é decisamente più difficoltosa della lettura di uno in italiano :D
Web Wolf
25-07-2003, 00:51
Per quello che riguarda le mappe dei registri, mi sapete dire qualche cosa su dove poterli trovare ?
Il fatto é che i drivers per Linux fanno solitamente schifo :mad:
D'accordo, molti potrebbero dire: é già tanto che queste periferiche funzionino, che altro vuoi di più ?
A questo punto stavo decisamente pensando di scrivermi qualche cosa per conto mio, visto che solitamente le case non ci pensano.
Anche quando ci sono i drivers per linux, sono sempre di molto inferiori a quelli per Windows: es. quanto cavolo può costare mettere un installer automatico e un pannello di controllo grafico (es. schede grafiche) invece di far passare le notti insonni agli utenti ?
Ah già, dimenticavo, se così fosse molti userebbero solo il pinguino ;)
Secondo me il pinguino é sotto principalmente perché non é in grado di sfruttare a dovere l'hardware (molti dispositivi non li vede neanche).
Voi che ne pensate ?
Originariamente inviato da Web Wolf
D'accordo, d'accordo, l'inglese lo conosco, ma se permetti, la lettura di un testo in inglese é decisamente più difficoltosa della lettura di uno in italiano :D
questione di abitudine... dopo quattro esami consecutivi con i libri di testo in inglese ormai non mi accorgo più delle differenze :sofico:
peter_pan
25-07-2003, 02:04
Originariamente inviato da Web Wolf
Per quello che riguarda le mappe dei registri, mi sapete dire qualche cosa su dove poterli trovare ?
I registri a cui puoi accedere sono quelli messi a disposizione dal produttore di hardware. I driver servono appositamente per fornire una visione uniforme al sistema operativo dell'hardware sottostante. Pertanto ogni produttore di hardware sceglierà i propri indirizzi hw, che registri implementare nello spazio di IO, modalità di accesso e procedure di utilizzo. Non esiste quindi un "elenco universale dei registri hardware per x86" (se così fosse si potrebbe scrivere driver per _ogni_ periferica...). Per cui dovresti:
1) Capire su quale periferica vuoi lavorare
2) Definire qual'è il produttore e il modello di periferica su cui vuoi lavorare
3) Reperire le specifiche tecniche del prodotto. Queste devono essere mostruosamente dettagliate, non ti puoi fermare a "periferica che va a 133Mb/s" ma che registri usa, modalità di indirizzamento, procedure di accesso etc. Tipicamente le case non regalano/rilasciano le specifiche/dettagli relativi ai loro prodotti hardware. Per capire queste specifiche si opera per mezzo di tecniche di reverse engineering piuttosto complesse, a volte impossibili.
4) Scrivere il dev driver.
Originariamente inviato da Web Wolf
Il fatto é che i drivers per Linux fanno solitamente schifo :mad:
D'accordo, molti potrebbero dire: é già tanto che queste periferiche funzionino, che altro vuoi di più ?
Scrivere un driver da parte dell'azienda che ha prodotto l'hw è __molto__ più facile che non per uno che deve innanzi tutto capire come mai l'oggetto funziona in cotal modo.....;)
Originariamente inviato da Web Wolf A questo punto stavo decisamente pensando di scrivermi qualche cosa per conto mio, visto che solitamente le case non ci pensano.
Buona fortuna! :sofico:
Originariamente inviato da Web Wolf Anche quando ci sono i drivers per linux, sono sempre di molto inferiori a quelli per Windows: es. quanto cavolo può costare mettere un installer automatico e un pannello di controllo grafico (es. schede grafiche) invece di far passare le notti insonni agli utenti ?
A quanto mi risulta, la mia scheda grafica ha un ottimo supporto (powerdesk) per la gestione della stessa (anche se, personalmente, prediligo l'ottimo vi per mettere a posto le configurazioni).Inoltre quasi tutti gli WinManager hanno tool di configurazione grafica per la gestione dello schermo e della scheda grafica :rolleyes:
Originariamente inviato da Web Wolf Ah già, dimenticavo, se così fosse molti userebbero solo il pinguino ;)
Secondo me il pinguino é sotto principalmente perché non é in grado di sfruttare a dovere l'hardware (molti dispositivi non li vede neanche).
Uhm, punti di vista. A mio avviso è sotto principalmente perchè gli utenti sono abituati a collegarsi ad internet solo usando il mouse e spiegargli che è possibile farlo anche con la tastiera è un'impresa disperata ;)
Ikitt_Claw
25-07-2003, 07:55
Originariamente inviato da Web Wolf
Il fatto é che i drivers per Linux fanno solitamente schifo :mad:
Puo` darsi che qualcuno faccia schifo, ma in generale non mi sembra affatto.
I driver per le periferiche che ho usato io mi son sempre sembrati adeguati, anzi, quello per le Realtek 81x9 e` eccellente considerando quel che spreme dalla scheda ;)
A questo punto stavo decisamente pensando di scrivermi qualche cosa per conto mio, visto che solitamente le case non ci pensano.
Buona fortuna!
es. quanto cavolo può costare mettere un installer automatico
In QUALE formato? .tgz? .rpm? .deb? script di shell? Mica e` cosi` banale...
e un pannello di controllo grafico (es. schede grafiche)
A parte che configurar el'HW e` compito dell'OS (_mediante_ i driver), AFAIK, il problema e` il solito: che si usa? Xlib direttamente? QT? GTK? TK?
invece di far passare le notti insonni agli utenti ?
semplicemente modi di fare diversi...
Secondo me il pinguino é sotto principalmente perché non é in grado di sfruttare a dovere l'hardware (molti dispositivi non li vede neanche).
Secondo me no, affatto. O perlomeno per l'HW che uso (ed ho visto usare) io.
ilsensine
25-07-2003, 08:22
Originariamente inviato da Web Wolf
Il fatto é che i drivers per Linux fanno solitamente schifo :mad:
(...)
Anche quando ci sono i drivers per linux, sono sempre di molto inferiori a quelli per Windows
Tua opinione...
es. quanto cavolo può costare mettere un installer automatico e un pannello di controllo grafico (es. schede grafiche) invece di far passare le notti insonni agli utenti ?
Cosa c'entra questo con i driver? E' un problema da affrontare in user space; alcuni produttori fanno tali strumenti, altri no.
Normalmente se hai una periferica _supportata_ da linux (ovvero con driver liberi direttamente dentro il ramo del kernel), non devi neanche porti il problema.
Web Wolf
25-07-2003, 08:49
Innanzitutto grazie per la partecipazione, poiché sta diventando una diiscussione interessante, comunque per dire la mia, pensate a che cosa succederebbe se ati o nvidia fornissero i loro drivers con le istruzioni su dove copiare i files e come configurare i drivers per essere caricati da Windows :D :D :D
L'interfaccia di installazione che dico io é quella che molti programmi per Linux già hanno, come open office, Borland Jbuilder ecc. e che invece hanno TUTTI i programmi per Windows.
Ciao
;)
ilsensine
25-07-2003, 09:08
Originariamente inviato da Web Wolf
Innanzitutto grazie per la partecipazione, poiché sta diventando una diiscussione interessante, comunque per dire la mia, pensate a che cosa succederebbe se ati o nvidia fornissero i loro drivers con le istruzioni su dove copiare i files e come configurare i drivers per essere caricati da Windows :D :D :D
Pensa invece cosa succederebbe se la _smettessero_ di fornire i driver per linux, e decidessero una buona volta di rilasciare direttamente agli sviluppatori le specifiche delle loro schede. Ma questo è un altro discorso.
L'interfaccia di installazione che dico io é quella che molti programmi per Linux già hanno, come open office, Borland Jbuilder ecc. e che invece hanno TUTTI i programmi per Windows.
TUTTI i programmi per linux hanno un processo standard di installazione:
da sorgenti -> autoconf ecc.
da rpm, deb ecc. -> rpm, apt-get e loro front-end grafici, alcuni dei quali MOLTO più potenti di qualsiasi cosa vista dotto windows (mai provato ad es. rpmdrake?)
_questi_ sono gli standard sotto linux, come sotto windows lo standard è "setup.exe" + windows installer.
Se "altri" vogliono distribuire i programmi in forme non-standard, deve essere LORO CURA fornire degli installer, come ad es. la Borland ha fatto. E' un pò come se non vuoi usare Windows Installer sotto Windows: liberissimo di farlo, ma devi fornire uno strumento equivalente se non vuoi obbligare l'utente a copiarsi i file a mano e scrivere le chiavi con regedit.
Web Wolf
25-07-2003, 11:35
Più o meno é il discorso che facevo io, cioé relativo ad un aggiornamento degli installer presenti sotto Linux, cioé una installazione del tipo di quelle fatte con installshield che, parliamoci chiaro, sono molto più evolute degli rpm, poi se uno é fanatico del pinguino e ama tutto ciò che li si fa a prescindere, beh, é un'altra cosa. ;)
Non ho invece capito a che cosa ti riferisci riguardo allo smettere lo sviluppo dei drivers per Linux, anche perché mi risulta che la maggior parte dei drivers forniti dalle case (es. nvidia) possono essere compilati anche dai sorgenti, quindi non ci dovrebbero essere problemi a modificarli, o no ? :confused:
ilsensine
25-07-2003, 11:44
Originariamente inviato da Web Wolf
Più o meno é il discorso che facevo io, cioé relativo ad un aggiornamento degli installer presenti sotto Linux, cioé una installazione del tipo di quelle fatte con installshield che, parliamoci chiaro, sono molto più evolute degli rpm, poi se uno é fanatico del pinguino e ama tutto ciò che li si fa a prescindere, beh, é un'altra cosa. ;)
L'InstallShield è un ottimo programma, rpmdrake lo è altrettanto. Ripeto, vale veramente la pena che tu lo provassi.
Non ho invece capito a che cosa ti riferisci riguardo allo smettere lo sviluppo dei drivers per Linux, anche perché mi risulta che la maggior parte dei drivers forniti dalle case (es. nvidia) possono essere compilati anche dai sorgenti, quindi non ci dovrebbero essere problemi a modificarli, o no ? :confused:
La parte compilabile è solo "l'interfaccia" del driver. Il driver vero e proprio è in formato binario e senza sorgenti.
Lukather
25-07-2003, 11:49
Originariamente inviato da Web Wolf
Più o meno é il discorso che facevo io, cioé relativo ad un aggiornamento degli installer presenti sotto Linux, cioé una installazione del tipo di quelle fatte con installshield che, parliamoci chiaro, sono molto più evolute degli rpm, poi se uno é fanatico del pinguino e ama tutto ciò che li si fa a prescindere, beh, é un'altra cosa. ;)
Guarda uso windows dalla prima versione (e prima l'ms-dos :) ) mentre sono 'pinguinato' da un mesetto e mezzo circa (forse meno però avevo fatto altra installazione anni addietro, sempre seguite poco però :( ) e non vedo tutta questa differenza tra l'installer windows e l'installer rpm (anzi gli rpm ti controllano le dipendenze evitando di installarti una roba che non potresti poi far funzionare, solitamente hanno allegato un bel file dove sono indicati chiaramente TUTTI i file che andranno ad installare e le rispettive directory)
PS
Se ho scritto cagate "corriggetemi" :P
Ikitt_Claw
25-07-2003, 12:03
Originariamente inviato da Web Wolf
cioé una installazione del tipo di quelle fatte con installshield che, parliamoci chiaro, sono molto più evolute degli rpm, poi se uno é fanatico del pinguino e ama tutto ciò che li si fa a prescindere, beh, é un'altra cosa. ;)
OK: in cosa installshield e` superiore a *rpm*?
"E` piu` semplice" non vale, perche` tra millanta front-end grafici e l'arido
urpmi nomepacchetto
apt-get nomepacchetto
non ci vuole chissache ad usare rpm. Anzi.
Tralasciando commenti a giudizi "superficiali" sulla qualità dei drivers Linux e sul supporto che esso offre a nuove periferiche 8ti ricordo che le nuove tecnologie sono spesso disponibili e supportate prima da Linux che da W$n), posso chiederti se hai l'eperienza e la capacità per realizzare un driver di una qualunque periferica? Non credo che basti un libro...
peter_pan
25-07-2003, 14:25
Originariamente inviato da Web Wolf
Più o meno é il discorso che facevo io, cioé relativo ad un aggiornamento degli installer presenti sotto Linux, cioé una installazione del tipo di quelle fatte con installshield che, parliamoci chiaro, sono molto più evolute degli rpm, poi se uno é fanatico del pinguino e ama tutto ciò che li si fa a prescindere, beh, é un'altra cosa. ;)
Questa è la tipica discussione del "secondo voi è meglio la pizza o il gelato?". Ci saranno 2 schiere che risponderanno cose tipo "il gelato"->"no la pizza!!"->"il vostro stupido gelato si squaglia dopo poco"->"e la vostra pizza allora, che dopo un'attimo è fredda e insapore!" salvo poi il comparire di qualcuno all'urlo "W le patatine fritte forever!" :D :D :D Discussione piuttosto arida, ognuno sostiene la propria posizione avendo ogni controparte perfettamente ragione (quando si parla del sesso degli angeli tutti hanno ragione, tutti hanno torto). ;)
Venendo alla nostra, io potrei risponderti "gli rpm sono meglio" al chè tu replichi con "no, è meglio installshield" e proseguiamo sul pattern prima esposto .....
Da cui, accodandomi alla domanda di Ikitt_Claw: perchè "installshield che, parliamoci chiaro, sono molto più evolute degli rpm"?
Al momento lavoro al 99% sotto linux e mi capita spesso di usare rpm (quando ho bisogno di un installazione $rapida&&$veloce). Ma, in passato, ho lavorato (a fondo) sotto win. E francamente non ho mai avuto problemi neppure li (parlo sempre di installazione/rimozione del sw).Se devo fare una valutazione a mente lucida, il sistema di linux mi sembra più pulito. Almeno personalmente, mi è capitato più di una volta di rimuovere un sw da windows salvo poi scoprire che la disinstallazione aveva lasciato nel registro 2tonnellate di chiavi (inutilizzate), librerie sparse per il file-system (e quando il filesystem non ha uno specifico ordine e ogni cartella è buona per contenere file/librerie/configurazioni, rimuovere a mano è un divertimento!:) ) cartelle del progr. rimosso, etc. A volte mi è capitato di rimuovere un programma, questo si rimuoveva dall'elenco dei programmi presenti in "installa/disinstalla applicazioni" mentre il programma era ancora completamente presente nel sistema!!! Di pro installshield ha simpatiche icone colorate, schermate molto carine, stondate, messaggi popup di ottimo design, presentazioni in background molto curate, etc.... :D
Con rpm questi problemi non mi sono mai capitati. L'obiezione classica agli rpm è "generano troppe dipendenze". Questo, a mio avviso, è anche un bene. Il fatto di avere moduli condivisi nel so diminuisce il carico sugli hd e il quantitativo di mem. occupata (o si preferisce il vecchio modello di win, dove ogni programma (anche ora qualcuno) aveva la sua bella copia di librerie mfc?)
Originariamente inviato da ilsensine Pensa invece cosa succederebbe se la _smettessero_ di fornire i driver per linux, e decidessero una buona volta di rilasciare direttamente agli sviluppatori le specifiche delle loro schede. Ma questo è un altro discorso.
:D Chissà se i miei nipoti riusciranno a vedere un mondo simile (e sono anche piuttosto giovane! :D )
ilsensine
25-07-2003, 14:32
A volte mi è capitato di rimuovere un programma, questo si rimuoveva dall'elenco dei programmi presenti in "installa/disinstalla applicazioni" mentre il programma era ancora completamente presente nel sistema!!!
Vabbè qui è chi ha configurato l'installazione del programma che è un cane :D
Originariamente inviato da Web Wolf
Il fatto é che i drivers per Linux fanno solitamente schifo :mad:
D'accordo, molti potrebbero dire: é già tanto che queste periferiche funzionino, che altro vuoi di più ?
Ti rendi conto di quello che hai detto?
Anche quando ci sono i drivers per linux, sono sempre di molto inferiori a quelli per Windows: es. quanto cavolo può costare mettere un installer automatico e un pannello di controllo grafico (es. schede grafiche) invece di far passare le notti insonni agli utenti ?
1. nessuno ti obbliga ad usare linux
2. se vuoi qualcosa pagando trovi senza problemi chi te lo fa
3. pensi sia più facile fare del reverse engineering o scrivere un driver con tutta la documentazione fatta dagli ingegneri che han fatto quella scheda?
4. L'hw di cui è disponibile la documentazione a chi di dovere è supportato, quelle aziende che ne pagano direttamente lo sviluppo si ritrovano un gran supporto (vedi adaptec 7xxx).
Secondo me il pinguino é sotto principalmente perché non é in grado di sfruttare a dovere l'hardware (molti dispositivi non li vede neanche).
In fatto di performance c'è ben poco da criticare. Probabilmente tu ti stai riferendo alle schede video, vedi i punti dal 2-3 scritti sopra.
Web Wolf
25-07-2003, 18:06
Bé, sul fatto che le installazioni/disinstallazioni per Linux sono molto più pulite di quelle per Windows sono perfettamente d'accordo, poiché in effetti Windows é pulito soltanto in apparenza, poiché all'interno é molto poco controllabile e abbastanza caotico :rolleyes:
Web Wolf
25-07-2003, 23:37
Comunque, alla fine di tutto, il mio discorso non può essere che di lode (come in realtà ho già detto prima) a chi perde tempo gratuitamente a scrivere drivers per il pinguino, ma il mio discorso era più generale e sicuramente non voleva accusare nessuno, ma si limitava semplicemente a costatare i fatti, cioé:
a parte le ditte che se li fanno da soli e pochissime eccezioni, solitamente i drivers per linux sono inferiori a quelli per Windows e ciò é un dato di fatto e non perché amo Windows ;)
la mia "critica", se così si può chiamare, era soltanto teorica, poiché il problema potrebbe essere risolto (a mio avviso), soltanto quando le aziende produttrici di hardware si metteranno in testa che il pinguino é un s.o. a tutti gli effetti e non un esperimento che alcuni dilettanti si divertono a programmare :mad:
Comunque la discussione é stata interessante :D
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.