2010-11-22 21 views
22

Voglio programmare un microcontrollore (AVR) per controllare alcuni LED tramite USB. È solo per interesse su come costruire e programmare i dispositivi USB. Ci sono alcuni microcontrollori AVR che supportano il protocollo USB o io stesso posso implementare il protocollo USB in un altro microcontrollore, ma mi chiedo che cosa usare per scrivere i propri driver sul computer.Programmazione USB

Il mio livello di programmazione del sistema: totale niubbo (da qui la domanda)

Allora, qual è la letteratura che si dovrebbe persone consigli per ottenere una buona conoscenza della tecnologia USB e su come scrivere i propri driver e oltre?

PS: lo so:

  • C (probabilmente avrà bisogno qui)

  • Java (probabilmente non sarà necessario qui)

  • Python (speranza può usarlo qui)

  • assemblatore (si spera non ne abbia bisogno qui XD).

  • ...

P.P.S: lo sviluppo di driver è diverso per diversi sistemi operativi. Io uso Linux e Windows, quindi qualsiasi materiale relativo a uno o entrambi questi sistemi è il benvenuto.

risposta

0

L'area di documentazione Microsoft del WDK (Windows Development Kit) è di recente disponibile su MSDN. C'è una sezione su USB, anche se sarebbe meglio leggere prima le sezioni precedenti, in particolare le aree "Guida introduttiva". Assumono che userete C come linguaggio di programmazione per lo sviluppo dei driver.

Per Linux, il sito Linux USB dovrebbe essere in grado di indicarvi la giusta direzione. In particolare ti consigliamo il Programming Guide for Linux USB Device Drivers.

+0

Il collegamento guida di programmazione non funziona – Benubird

0

Un buon modo per andare è solo quello di sviluppare un dispositivo HID, dal momento che il driver è integrato in sistemi operativi di più alto livello e abbastanza flessibile per IO semplice come si sta parlando. Un'altra buona opzione è usare solo un dispositivo o un software RS232 USB. Uso i PIC che hanno un numero di dispositivi carini con USB onboard.

9

Bene, sebbene sia possibile sviluppare e scrivere il proprio driver USB, la bellezza dell'USB è che non è necessario scrivere il proprio driver. il USB Implementers Forum ha definito le specifiche di classe per tutte le classi di dispositivi standard. Se è possibile inserire il dispositivo in una classe di dispositivi standard, il driver è già stato scritto per te!

Se si vuole veramente familiarizzare con lo sviluppo USB, si dovrebbe iniziare con la revisione dello USB approved class specification documents.

5

Se si dispone di un framework per microcontrollori AVR con hardware USB, esaminare LUFA e, se si dispone di AVR con software USB, esaminare V-USB.Hanno entrambi implementato molte classi USB in modo da non doverlo fare da soli: basta usarle.

+2

Entrambi questi progetti sono di grande aiuto nello spazio usb avr –

3

Sembra un grande progetto! Suggerirei di iniziare con qualcosa di un po 'più semplice visto che sei - come dici tu - un "totale n00b". Non sono sicuro dell'hardware che hai attualmente (o che ho in mente), ma quello che suggerirei per il principiante assoluto è lo STK500. È una scheda di sviluppo molto ben supportata sia in Linux che in Windows e offre la massima flessibilità. Viene fornito con LED e interruttori integrati per i tuoi progetti, ma avrai bisogno di un microcontrollore. E per questo consiglio lo ATMega32, un ottimo IC multiuso ben supportato e con molta documentazione sul web.

Una volta ottenuti, suggerisco di eseguire lo sviluppo su Linux utilizzando avr-gcc (assicurati di installare anche avr-libc). Se stai usando Ubuntu è facile per ottenere tutti i pacchetti necessari:

% sudo apt-get install gcc-avr avr-libc avrdude 

Quelli dovrebbe ottenere installato e funzionante. Ti suggerisco di cercare su Google come aiuto per scrivere i tuoi primi programmi, ma un'altra buona risorsa sono i materiali online per this class at Cornell.

Questo è sufficiente per bagnare i piedi con i microcontrollori AVR e gli strumenti di sviluppo. Il cielo è il limite a quel punto ma dal momento che hai detto di voler entrare in USB ti suggerirei di usare l'eccellente framework V-USB per far funzionare il tuo ATMega32 come un dispositivo USB. Dopodiché, come si suol dire, i passaggi per lanciare i LED sono un gioco da ragazzi :).

+0

buon consiglio: v-usb - ci sono anche buoni schemi - facile da fai da te –

3

mi chiedo cosa usare per scrivere i propri driver sul computer

  1. libusb (here, here e here)
  2. wdk
  3. WinDriver

Per informazioni sulle varianti libusb leggi this

1

Si potrebbe farci libusb. È potente e multipiattaforma.

Ma quello che stai cercando di fare è un'interfaccia di controllo piuttosto semplice. Puoi aggirare la maggior parte della complessità utilizzando HIDAPI, penso.

http://www.signal11.us/oss/hidapi/

dispositivi HID spesso utilizzano driver generici che vengono confezionati nel sistema operativo. In questo modo non devi scrivere mai alcun driver, basta rendere il tuo dispositivo compatibile con il driver generico e adattare il software client ad esso.

Penso che questo sia quello che si fa di solito nel campo dell'elettronica hobbista, che è quello che ti interessa qui.

HIDAPI è persino raccomandato per comunicazioni semplici con dispositivi HID nelle FAQ libusb poiché è un po 'più complicato farlo su piattaforme che usano libusb.

0

Avevo costruito il mio banco di prova basato su ARDUINO UNO e stavo usando il programmatore ionlabs di tipo usbasp e funzionava perfettamente ma non permetteva di convertire il TTL in Rs-232 e quindi non potevo t utilizzare le funzioni come seriale.print() e ho dovuto installare il cavo ftdi che mi ha permesso di fare questo. I driver erano la libusb 1.xx funzionante.

Se si desidera programmare l'AVR è possibile utilizzare il pacchetto software ARDUINO o lo stino per caricare i programmi. Hai bisogno di sapere c (solo basi).

0

Ho creato un adattatore USB-tastiera l'anno scorso per il mio capstone. Non ho fatto la programmazione host ma ho usato il codice esistente che puoi trovare sul web.Ma ho programmato il lato dispositivo e per questo ho ricevuto molto aiuto da questo sito web Teensy Cerca nella loro "Code Library" che ha il codice per Tastiera, mouse e altri. Inoltre, il manuale del protocollo USB sarà sempre utile e dovresti sempre consultarlo quando lavori con USB.

0

Mi chiedo se il tuo AVB funge da host o dispositivo. Immagino che la tua scheda sia un dispositivo USB e devi accendere i led sulla tua scheda. Quindi, potrebbe essere un buon modo per inizializzare la tua scheda come dispositivo HID. Per raggiungere questo obiettivo, hai bisogno di uno stack di software gadget HID in esecuzione sulla tua scheda. Riferimenti come segue: quadro

  1. gadget in uboot
  2. HID Specefication usb org
  3. strumenti di debug, come USB Protocol Analyser
  4. libusb in esecuzione sul PC host per inviare i pacchetti