Newsgroup: it.comp.os.linux.development
Titolo: Scrivendo un device driver...

Ciao a tutti.
Conosco bene il C (ho 15 anni di esperienza) ma non ho mai scritto dei
device driver.
Ora, vorrei iniziare a farlo: per un progetto devo utilizare
dell'hardware connesso al PC via USB 2.0 ma il fabbricante non vuol
neanche sentire parlare di Linux.
Immagino che sia come "partire in quarta" da zero, ma cosě é!
C'é in giro qualche "guru" che possa darmi delle indicazioni su quale
informazioni/conoscenze bisogna avere e dove trovarle (meglio in rete,
ma anche libri)?
Riangrazio anticipatamente qualunque aiuto.
Saluti,
G.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

cerca su google "Linux Device Driver.pdf" o direttamente sulla O'Reilly.
Il libro è scritto da Alessando Rubini (573 pagine) e ti spiega come
implementare i drv per il kernel linux v2.4. Ci sono anche degli esempi
Bye,
Raktzo

 neanche sentire parlare di Linux.
Ho avuto un'esperienza simile per un player mp3. IMO le operazioni da fare
sono:
*) Sniffare il protocollo su windows con sniffusb (mi pare si chiami cosě,
non ci giurerei) e cercare di capirlo
*) Usare libusb per creare il software (in userland, niente kernel)
*) Leggere almeno un poco della specifica USB, tanto per capire le cose
fondamentali
*) Pubblicare il protocollo se riesci a decodificarlo
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
    -<! And the will shall return And again hearts shall burn
         All the horns now will sing Leading you back to the metal winds !>-
                  Lost Horizon - Sworn In The Metal Wind

 *) Pubblicare il protocollo se riesci a decodificarlo
Questo potrebbe essere illegale negli USA, ma č legale in Italia.
-- 
Lorenzo `paulatz' Paulatto
Trieste
``Se Gauss fosse vivo oggi, sarebbe un hacker.''
      --Peter Sarnack (Princeton University)

 Questo potrebbe essere illegale negli USA, ma č legale in Italia.
Ahimč, in questo caso non posso, essendoci di mezzo un NDA...



Hai un NDA con il produttore? In che occasione l'hai sottoscritto?
Ti ha dato le specifiche del protocollo?
Io sto valutando l'ipotesi di fare reverse engeneering sul protocollo di
controllo di un centralino (ho l'impressione che il produttore non abbia
intenzione di venirmi incontro), ma ho molti dubbi sulle implicazioni
legali.
Alessandro.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Lorenzo `paulatz' Paulatto wrote:
| Giuseppe Corbelli wrote:
|
|> *) Pubblicare il protocollo se riesci a decodificarlo
|
|
| Questo potrebbe essere illegale negli USA, ma č legale in Italia.
|
La soluzione č semplice, lo metti su P2P o su freenet e voglio proprio
vedere come fanno a rintracciarti.
Ciao,
~  Luca
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with MultiZilla - 
http://enigmail.mozdev.org
iD8DBQFCB3PDliez+Z59f3URAkJPAKC6Z5raS9shqZlIW+nz3do1C91OQACeKPMu
0wIbHbFI/x+piZA99c2QSV8=
=lBTw
-----END PGP SIGNATURE-----

 Ahimè, in questo caso non posso, essendoci di mezzo un NDA...
Non vorrei fare le cose più facili di quelle che sono, ma se conosci il
protocollo non dovrebbe essere una cosa troppo difficile. Nei sorgenti del
kernel c'è uno scheletro di base da seguire per un driver usb:
drivers/usb/usb-skeleton.c
C'è anche della documentazione nella cartella Documentation/DocBook/, in
particolare writing_usb_driver, usb e kernel-hacking.
Poi naturalmente le usb spec che trovi su internet.
Se ti chiedi come compilare un modulo del kernel da una directory esterna,
qui c'è la risposta:
http://lwn.net/Articles/21823/
Hope that helps.
Pier
-- 
Remove nospam to email

 vedere come fanno a rintracciarti.
...e questo lo rende più legale?
-- 
Daniele Orlandi

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Daniele Orlandi wrote:
| ...e questo lo rende più legale?
No, tuttavia all'epoca della seconda guerra mondiale era illegale dare
ospitalità ad un ebreo... il fatto che una cosa sia legale o illegale la
rende automaticamente giusta?
Bye,
~  Luca
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with MultiZilla - 
http://enigmail.mozdev.org
iD8DBQFCB7Q8liez+Z59f3URArCtAJ4o07qaML55/2L8LY1+pEwpVwqyJACgsiak
3cfYqsfPu8whSuv/S/LiVKk=
=2eOR
-----END PGP SIGNATURE-----


Pero' quelle che stai paragonando sono cose un po' diverse.
Alessandro.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
test wrote:
| Pero' quelle che stai paragonando sono cose un po' diverse.
Questo è certamente vero, il mio esempio serviva solo ad affermare un
concetto molto semplice e cioè che la legalità o l'illegalità di una
determinata azione dipende da:
1) Latitudine e longitudine
2) Periodo storico
3) Tipo di governo
e probabilmente da molti altri fattori.
Se vuoi un altro esempio allora ti posso dire che l'essere gay giusto
qualche decennio fa era illegale ed è tuttora illegale in diversi stati
americani e non. Tanto è vero che Oscar Wilde (noto poeta/scrittore
irlandese) fu anche imprigionato per questo (ma non solo Wilde, anche
molti altri) e passò un paio di anni in galera (anni che gli rovinarono
completamente la vita e rubarono al mondo uno scrittore di raro ingegno).
Sempre rimanendo nel periodo storico di Wilde, bere assenzio (una
bevanda molto di voga fra gli artisti e autori di quel tempo e diversi
capolavori sono stati scritti sotto l'influsso di questa sostanza) era
perfettamente legale ed era servita in tutti i bar, oggi invece è
considerata una droga ed è quindi illegale.
Comunque, di esempi ne potrei fare a centinaia se quello che ho fatto
sopra ti sembra "fuori luogo"... tuttavia quello che mi premeva
sottolineare è che il fatto che una determinata cosa sia legale o
illegale non significa affatto che essa sia giusta o ingiusta.
Io personalmente ritengo di avere un cervello e di essere quindi
perfettamente in grado di stabilire quello che è giusto o sbagliato
secondo il mio punto di vista.
Per esempio ritengo assurdo che se io acquisto un determinato software
(o una canzone, o un libro, etc) io non possa fare di questa "cosa"
quello che mi pare e piace. Supponiamo che per esempio acquisti una
playstation, io ritengo che questo oggetto sia mio in quanto io ho
pagato per averlo e non ho posto condizioni sull'uso dei soldi che ho
fornito in cambio. Pertanto (come del resto un giudice italiano ha anche
confermato) posso tranquillamente fare ciò che voglio di essa, anche
installare un "modchip".
Per alcuni altri (per la Sony in questo esempio) installare un modchip è
illegale e sono certo che in molti Stati questo sia vero.
Io tuttavia ho la cattiva abitudine di difendere ciò che ritengo giusto
e quando qualcuno salta fuori e mi dice che per esempio condividere la
mia conoscenza con qualcun'altro è illegale allora io la condivido
ugualmente. Rischio la galera? Certo. Non hanno forse rischiato la vita
i nostri nonni per quello che ritenevano giusto? Perché mai non dovrei
farlo io?
Ecco quindi che la legalità o l'illegalità di una determinata azione,
per quello che mi riguarda, è accettabile solo ed unicamente se questo
non va in forte contrasto con quello che io ritengo sia giusto, con
quelli che sono i miei principi e con quelli che io ritengo siano i miei
diritti di uomo _nato libero_.
Del resto quando sono nato nessuno mi ha mai chiesto "ti va bene questa
legge" e nessuno ha mai chiesto la mia opinione al riguardo. La legge mi
è stata imposta dall'alto come è stata imposta a tutti gli altri. Io
semplicemente mi riservo il diritto di dissentire ed agire di conseguenza.
Poi naturalmente qualcun'altro avrà una visione diversa del mondo, ma
questa è la mia.
Ritengo inoltre che non si debba affatto avere paura di commettere
un'azione illegale quando l'illegalità di questa azione va contro i
propri principi (è ovvio che poi si valuterà caso per caso, una sentenza
di morte è certamente diversa da una sentenza a qualche mese in galera,
quindi è necessario valutare bene il rischio a cui si va incontro).
Se mi chiedessero di uccidere un bambino ebreo solo perché a chi ha
fatto le leggi gli ebrei facevano schifo io non avrei alcun problema ad
oppormi. Rischio la morte? Certo. Ne vale la pena? Secondo me si (del
resto prima o poi dobbiamo morire tutti ugualmente).
Tornando al caso del nostro amico se egli ha firmato un NDA è ovvio che
ha venduto/regalato i suoi diritti ad una azienda e quindi ora sarebbe
come minimo "immorale" (se questa parola ha un senso) tirarsi indietro e
pubblicare il protocollo.
Tuttavia se lui ha acquistato un oggetto elettronico e ha scoperto
qualcosa sul suo funzionamento senza prima firmare NDA o fare altre
"promesse" simili allora secondo me è liberissimo di condividere questa
conoscenza con gli altri, e se la legge asservita alle multinazionali
tenta di impedirlo ben venga l'uso di mezzi illegali.
Certo, anche nel suo caso dovrà valutare i pro e i contro, i rischi ci
sono sempre. Dovrà inoltre valutare se questi rischi valgono i diritti
che la legge vuole portargli via attraverso la censura. (Insomma, dovrà
valutare se il rischio vale la candela, e questo può farlo solo lui)
Comunque, il succo del discorso è che "legale" può anche essere diverso
da "giusto" e "illegale" può anche essere diverso da "ingiusto".
Per quello che mi riguarda, se a mio parere una legge è ingiusta ed
inoltre "il rischio vale la candela", io la violerò, con qualunque mezzo
io abbia a disposizione. Tu e gli altri potete naturalmente pensare in
modo diverso, siamo tutti uomini liberi ed ognuno, alla fine, pagherà
per le proprie azioni.
Quindi, per rispondere alla domanda di Daniele, quando ho postato questa
mia risposta, mai, nemmeno per un istante, ho pensato alla legalità o
meno di questa azione. Io ho solo suggerito un mezzo con cui rendere
possibile una determinata azione. La legalità o l'illegalità di
quest'ultima non mi interessa affatto perché:
1) Non mi coinvolge in prima persona, sarà infatti un'altra persona a
stabilire se seguire questa strada o meno
2) Non ritengo la legalità una scusante per la censura
Spero con questo di aver chiarito in modo sufficente il mio punto di
vista sull'argomento.
Bye,
~  Luca
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with MultiZilla - 
http://enigmail.mozdev.org
iD8DBQFCB/oVliez+Z59f3URAioFAKCqbqkzkay9No0k1DBkBrf8QjNzIgCfV8eS
z73Z5w/o6Fp7uDt91OTCwzg=
=62qW
-----END PGP SIGNATURE-----

 Pier
Fantastico!
Ottima informazione.
Grazieee!


 Alessandro.
In realtà ho un NDA che copre un'intero progetto di cui non posso
rivelate dati specifici, protocollo incluso.
Comunque, in questo caso, l'informazione é talmente specifica che non ha
interesse per la comunità.
Un'altro conto sono le conoscenze!
Se imparo a programmare dei device driver per Linux, non c'è nessun NDA
che mi possa impedire di programmare drivers per chiunque o qualunque
hardware!!!
In generale, gli NDA che firmo (o faccio firmare) coprono la
(im)possibilità di comunicare a terzi non autorizzati o rendere publiche
certe informazioni (dati), oppure certo tipo di carateristiche o il
funzionamento (principi, algoritmi, protocolli, ecc.) di prodotti, che
in mano alla concorrenza potrebbero dettare una perdita del vantaggio
del produttore.
Per il tuo caso, dipende dal uso che ne farai.
Io credo che se fai reverse engineering per poter usare il loro
centralino nel tuo sistema, non potranno farti nulla. Non stai rivelando
al mondo i loro "segretti".
Se poi il tuo sistema lo vendi come prodotto unico a terzi, credo non
cambi. Se invece diventa un prodotto "di serie" (cioè, ne venderai
diverse unità), non so come si possa comportare il fornitore; in fondo
guadagna anche lui dal tuo lavoro.
Però non sono un esperto!


 Poi naturalmente le usb spec che trovi su internet.
Personalmente credo che prendere questa strada non valga la candela. Primo
ti vai ad impelagare nel kernel, cosa non da poco (per me, sia chiaro,
magari non per te), secondo che vantaggi sostanziali ne ricavi? Terzo la
distribuzione del codice è più complessa.
Per quanto riguarda la pubblicazione del protocollo, io non sono certo
esperto di materie legali ma: tu firmi un NDA per avere accesso alle
specifiche del prodotto; se fai reverse engineering del protocollo
(quindi partendo da dati scambiati) non hai rapporto alcuno con il
produttore.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Battles Are Fought By Those With The Courage To Believe !>-
  		Manowar - Courage

 ...e questo lo rende piů legale?
Se non lo fosse ti evita di avere delle noie per una cosa buona e giusta.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**


 
Neanche io sono esperto, ma credo che le specifiche del prodotto contengano
il protocollo--nel qual caso non sono sicuro di capire cosa intendi.


 correggere la mia ingnoranza
Questo è proprio un brutto errore. Stasera sono distratto.


 ~ Luca
Ciao Luca,
questo post solo per esprimere la mia più assoluta approvazione di quanto da
te scritto sul rapporto tra ciò che è giusto è ciò che la legge detta e
soprattutto sulla necessità/dovere di ognuno di noi ad opporsi ad essa ogni
volta che la coscienza ce lo impone (ovviamente nei limiti del rischio che
si può correre e se il gioco ne vale la candela).
Saluti,
fabio de francesco
(fabiomdf)
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 il protocollo--nel qual caso non sono sicuro di capire cosa intendi.
Se hai firmato un NDA per della documentazione che contiene il protocollo
allora non lo puoi pubblicare. Se invece il protocollo non è descritto e tu
ne fai il rev-eng allora penso di sì.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! I Never Wanted To Be What They Told Me To Be
  		Fulfill My Fate Then I'll Be Free >!- Blind Guardian - Mordred's Song