PDA

Visualizza versione completa : Come fanno i driver a comunicare con le periferiche usb?



Andy86
28-09-12, 13: 45
:bai

Voglio togliermi una curiositÓ. Chi scrive i driver per le periferiche come fa a leggere i dati in ingresso dalle periferiche usb?

Funziona come una normale connessione remota su prompt dei comandi o bisogna interpretare i dati grezzi da codice sorgente? :m:

pierino_89
28-09-12, 20: 18
Dipende dalla periferica. Di per sÚ per la maggior parte delle cose Ŕ il driver del kernel che si occupa di mettere e togliere corrente dai 4 fili per parlare a basso livello con la periferica, ma ai livelli superiori possono avvenire cose molto diverse, per esempio:
- periferiche hid (mouse, tastiere, ecc.): il kernel crea un device in /dev/input/, da cui puoi leggere una serie di dati relativi a tasto premuto, posizione del cursore, ecc... (non con cat, otterresti cose incomprensibili)
- periferiche in emulazione seriale: viene creato un device /dev/ttyUSB0(1,2,3...) o un device ttyACM0(1,2,3...) e questo funziona esattamente come una porta seriale
- periferiche gestite con libusb: cose strane, se ne occupa il software in userspace

Se vuoi farti un'idea su come pi¨ o meno funziona un dispositivo esterno ti consiglio di guardare il bus SPI (che Ŕ molto pi¨ banale da capire).
Serial Peripheral Interface - Wikipedia (http://it.wikipedia.org/wiki/Serial_Peripheral_Interface)
Via spi puoi collegare periferiche tipo sensori di temperatura, l'orologio rtc, memorie nand, schede ethernet, lettori schede sd... ma credo che tu non lo possa trovare in nessun pc (anche se ho sentito dire ci sia sui pc per usi industriali).
N.B.: lo spi non ha niente a che vedere con la porta seriale (che in gergo Ŕ RS-232)