Autore Topic: Creare un driver?  (Letto 3022 volte)

Offline El Berto

  • Grande Gambero
  • ***
  • Post: 150
    • Mostra profilo
Creare un driver?
« il: 13 Aprile 2012, 10:12:08 »
Mi sono sempre chiesto una cosa: prendiamo un mouse, dentro c'è un componente che converte il segnale generato dalla pallina che rotola in USB (a dirla tanto grossolanamente).
Poi il sistema operativo riconosce che quel dispositivo USB è un mouse.

Adesso mi chiedo: come faccio a crearmi un'interfaccia?
Io vorrei fare un convertitore USB-SPI (x esempio), ho un componente (microcontrollore) con funzionalità USB: come faccio a dire al sistema operativo che quel dispositivo USB è un convertitore USB-SPI?
Come faccio a integrarlo nei miei script?
Grazie.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Creare un driver?
« Risposta #1 il: 13 Aprile 2012, 10:25:53 »
Mi sono sempre chiesto una cosa: prendiamo un mouse, dentro c'è un componente che converte il segnale generato dalla pallina che rotola in USB (a dirla tanto grossolanamente).
Poi il sistema operativo riconosce che quel dispositivo USB è un mouse.

Adesso mi chiedo: come faccio a crearmi un'interfaccia?
Io vorrei fare un convertitore USB-SPI (x esempio), ho un componente (microcontrollore) con funzionalità USB: come faccio a dire al sistema operativo che quel dispositivo USB è un convertitore USB-SPI?
Come faccio a integrarlo nei miei script?
Grazie.

L'interfacciamento tra gambas e la porta USB è un cruccio che sino ad ora nessuno (almeno tra di noi) è riuscito ad aggirare. Attualmente Gambas non permette di gestire porte USB mentre per le altre porte non ci sono particolari problemi.

Offline El Berto

  • Grande Gambero
  • ***
  • Post: 150
    • Mostra profilo
Re: Creare un driver?
« Risposta #2 il: 13 Aprile 2012, 10:31:25 »
Uhmmm, la mia domanda era un po' più in generale, prendendo ad esempio il caso dell'USB.
Se io mi costruisco una scheda (potrebbe essere un dispositivo USB, ma anche un PCI), come faccio a dire a Linux che quell'hardware mi serve a qualcosa? Nel caso di Windows, mi sembra che ci sia il rilevamento dell'hardware, ma senza driver mi dice che la periferica non è stata riconosciuta..... non so in Linux.
Poi ci sarà uno script che (x es.) mi invierà dei dati a quella periferica: come fa il mio script a sapere come usare quella periferica?
Dove potrei trovare qualche informazione?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Creare un driver?
« Risposta #3 il: 13 Aprile 2012, 10:34:21 »
Uhmmm, la mia domanda era un po' più in generale, prendendo ad esempio il caso dell'USB.
Se io mi costruisco una scheda (potrebbe essere un dispositivo USB, ma anche un PCI), come faccio a dire a Linux che quell'hardware mi serve a qualcosa? Nel caso di Windows, mi sembra che ci sia il rilevamento dell'hardware, ma senza driver mi dice che la periferica non è stata riconosciuta..... non so in Linux.
Poi ci sarà uno script che (x es.) mi invierà dei dati a quella periferica: come fa il mio script a sapere come usare quella periferica?
Dove potrei trovare qualche informazione?

In realtà il sistema di suo non sa cosa faccia la periferica. È il driver che si occupa di fare da intermediario tra i software dello strato alto e lqa periferica in se per se...

Ti faccio un esempio: se il sistema sapesse che le stampanti sono stampanti non avrebbe bisogno dei driver..invece ogni stampante ha il suo driver che va interrogato dai software che si occupano di stampare che inviano i dati per fargli stampare..

Il driver lo sviluppa chi produce la periferica e pertanto sa come funziona, cosa accetta e cosa sputa fuori.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Creare un driver?
« Risposta #4 il: 13 Aprile 2012, 12:30:21 »
non ho capito se tu stia parlando in generale o se hai bisogno di qualcosa di specifico, visto che parlavi di un microcontrollore
nel secondo caso se il microcontrollore ha la possibilità di essere connesso al pc tramite usb è molto probabile che comunichi in seriale (vedi ad esempio arduino)percui usi la porta usb esattamente come se fosse una porta seriale

Offline El Berto

  • Grande Gambero
  • ***
  • Post: 150
    • Mostra profilo
Re: Creare un driver?
« Risposta #5 il: 13 Aprile 2012, 14:13:47 »
Per capirci meglio, se io faccio una testiera, piuttosto che un mouse o una cosa qualsiasi, supponiamo con Arduino, io non devo lavorare ad alto livello con una seriale (del tipo apri la porta seriale, invia un certo codice, etc. etc,), ma vorrei fare una cosa del tipo: invia il dato 23 a quel dispositivo, l'apertura della seriale, la trasmissione del codice in una certa maniera, in pratica la gestione della seriale, mi viene fatta dal driver (suppongo).
Io vedo il dispositivo x come un dispositivo generico, ma a priori non se se è un dispositivo seriale o meno.....

Non so se mi spiego.....

X esempio, se voglio gestire un modem seriale, devo:
- aprire la porta seriale
- inviare il comando che mi legge tutti i messaggi
- individuare i messaggi che mi ha mandato una certa persona
- rilevare la posizione dei messaggi di quella certa persona
- leggere i messaggi nelle posizioni xy

La mia intenzione, con il driver, è di realizzare un comando in cui chiedo gli SMS di una certa persona, come se il modem fosse un dispositivo x, senza tutta la trafila...

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Creare un driver?
« Risposta #6 il: 13 Aprile 2012, 20:05:11 »
bho secondo me sei troppo generico :)

se vuoi creare un vero e proprio driver sicuramente gambas non è il linguaggio + adatto .

se vuoi realizzare un programma di interfaccia tra il pc ed una data apparecchiatura gambas va benissimo, ma se non entri esattamente nel dettaglio di cosa vuoi realizzare nessuno ti può aiutare.

se ad esempio parliamo di arduino, tu potresti benissimo realizzare un programma che poi anche chiamare driver che si occupa delle operazioni base , poi un secondo programma interrogherà il primo con un codice più semplificato .




Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Creare un driver?
« Risposta #7 il: 16 Aprile 2012, 14:21:29 »
Diciamo che per creare un driver devi:

1) conoscere come interfacciare il sistema operativo cui è destinato
2) conoscere come interfacciare la periferica che hai creato
3) impostare un protocollo che definisca la modalità di scambio dati tra sistema operativo e periferica
4) sottostare a determinati requisiti se la periferica venga usata tramite hardware standard (es. RS232/USB e parlo del connettore e piedinatura intrinseca)

Una volta stabiliti questi punti, si passa a codificare il driver...

Spero di chiarito almeno i punti di partenza...  :D