2010-11-22 29 views
22

Chcę zaprogramować mikrokontroler (AVR) do sterowania niektórymi diodami przez USB. Po prostu nie jest zainteresowana budowaniem i programowaniem urządzeń USB. Istnieje kilka mikrokontrolerów AVR, które obsługują protokół USB lub mogę zaimplementować protokół USB w innym mikrokontrolle sam, ale zastanawiam się, co używać, aby napisać własne sterowniki na komputerze.Programowanie USB

Mój poziom w programowaniu systemowym: całkowita noobem (stąd pytanie)

Więc co to jest literatura byś ludzie porad, aby uzyskać dobrą znajomość technologii USB i jak pisać własne sterowniki i poza nią?

PS: Wiem:

  • C (prawdopodobnie będzie to potrzebne tutaj)

  • Java (prawdopodobnie nie będzie musiał go tutaj)

  • Python (nadzieja może go użyć tutaj)

  • asembler (miejmy nadzieję, że nie będzie go tutaj potrzebował XD).

  • ...

P.P.S: Rozwój kierowca różni się dla różnych systemów operacyjnych. Używam Linuksa i Windowsa, więc mile widziany jest każdy materiał związany z jednym lub dwoma tymi systemami.

Odpowiedz

0

Obszar dokumentacji Microsoft WDK (zestaw Windows Development Kit) jest niedawno dostępny w witrynie MSDN. Istnieje sekcja na temat USB, chociaż najlepiej będzie najpierw przeczytać wcześniejszą sekcję, w szczególności obszary "Pierwsze kroki". Zakładają, że będziesz używać C jako języka programowania dla rozwoju sterowników.

Dla systemu Linux, strona Linux USB powinien być w stanie wskazać w dobrym kierunku. W szczególności będziesz potrzebować Programming Guide for Linux USB Device Drivers.

+0

Link Podręcznik programowania nie działa – Benubird

0

Jedną z dobrych dróg jest opracowanie urządzenia HID, ponieważ sterownik jest wbudowany w systemy o wyższym poziomie głośności i jest dość elastyczny w przypadku prostego IO, o którym mówisz. Inną dobrą opcją jest użycie urządzenia lub oprogramowania USB RS232. Używam PIC, które mają szereg ładnych urządzeń z USB na pokładzie.

9

Cóż, chociaż można opracować i napisać własny sterownik USB, piękno USB polega na tym, że nie trzeba pisać własnego sterownika. USB Implementers Forum ma zdefiniowane specyfikacje klas dla wszystkich standardowych klas urządzeń. Jeśli możesz dopasować urządzenie do standardowej klasy urządzenia, sterownik jest już dla ciebie napisany!

Jeśli naprawdę chcesz poznać rozwój USB, powinieneś zacząć od przejrzenia USB approved class specification documents.

5

Jeśli pracujesz nad mikrokontrolerami AVR ze sprzętowym złączem USB, zapoznaj się z LUFA, a jeśli korzystasz z AVR z oprogramowaniem USB, zajrzyj do V-USB.Obaj zaimplementowali wiele klas USB, więc nie musicie robić tego samodzielnie - po prostu ich używajcie.

+2

Oba te projekty są bardzo pomocne w avr przestrzeni usb –

3

To brzmi jak świetny projekt! Proponuję zacząć od czegoś prostszego, ponieważ jesteś - jak mówisz - "total n00b". Nie jestem pewien, jaki sprzęt masz obecnie (lub masz na myśli), ale to, co chciałbym zaproponować dla całego początkującego, to STK500. Jest to płyta rozwojowa, która jest bardzo dobrze obsługiwana zarówno w Linuksie, jak iw Windowsie i zapewni Ci największą elastyczność. Jest wyposażony w diody LED i przełączniki wbudowane do twoich projektów, ale potrzebujesz mikrokontrolera. I do tego polecam ATMega32, świetny wielofunkcyjny układ scalony, który jest również dobrze obsługiwany i ma dużo dokumentacji w Internecie.

Gdy już to zrobisz, sugeruję, abyś rozwijał system Linux przy pomocy avr-gcc (upewnij się, że zainstalowałeś avr-libc). Jeśli korzystasz z Ubuntu, łatwo uzyskasz wszystkie potrzebne pakiety:

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

Te powinny Cię uruchomić. Proponuję Googling do pomocy w pisaniu swoich pierwszych programów, ale innym dobrym źródłem materiałów online dla this class at Cornell.

To wystarczy, aby zmoczyć stopy mikrokontrolerami AVR i narzędziami programistycznymi. Niebo jest w tym momencie ograniczeniem, ale odkąd mówisz, że chcesz wejść do USB, sugeruję użycie doskonałej architektury V-USB, aby Twój ATMega32 działał jak urządzenie USB. Po tym, jak mówią, kroki do odwracania diod LED to bułka z masłem :).

+0

dobra rada: v-usb - istnieją również dobre schematy - łatwe do diy –

1

Możesz nam libusb. Jest potężny i wieloplatformowy.

Ale to, co próbujesz zrobić, to raczej prosty interfejs sterowania. Można pominąć większość złożoności za pomocą HIDAPI, jak sądzę.

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

urządzenia HID często używać rodzajowe sterowniki, które są pakowane w OS. W ten sposób nie musisz pisać żadnych sterowników, wystarczy, że dostosujesz urządzenie do standardowego sterownika i dostosujesz do niego oprogramowanie klienckie.

Myślę, że tak właśnie dzieje się w dziedzinie elektroniki hobbystycznej, która jest tym, co was interesuje.

HIDAPI jest nawet zalecany do prostej komunikacji z urządzeniami HID w bibliotece libusb FAQ, ponieważ jest to nieco bardziej skomplikowane niż na platformach korzystających z libusb.

0

Zbudowałem własne łóżko testowe oparte na ARDUINO UNO i korzystałem z programatora jonlab typu usbasp i działało idealnie dobrze, ale nie pozwalało przekształcić TTL z powrotem na Rs-232, a więc nie mogłem t korzystać z funkcji takich jak serial.print() i musiałem zainstalować kabel ftdi, który pozwolił mi to zrobić. Sterownikami byli libusb 1.xx działający dobrze.

Jeśli chcesz zaprogramować AVR, możesz użyć pakietu oprogramowania ARDUINO lub stino, aby przesłać programy. Musisz znać c (tylko podstawy).

0

Stworzyłem adapter USB na klawiaturę w zeszłym roku na mój capstone. Nie zrobiłem programowania hosta, ale użyłem istniejącego kodu, który można znaleźć w Internecie. Ale zrobiłem programowanie strony urządzenia i na to mam dużo pomocy z tej strony internetowej Teensy Zajrzyj do ich "Biblioteki kodów", która ma kod dla Klawiatura, mysz i inne. Również podręcznik protokołu USB zawsze będzie przydatny i zawsze powinieneś się z nim zapoznać, gdy robisz coś z USB.

0

Zastanawiam się, czy Twój AVB działa jako host lub urządzenie. Domyślam się, że twoja płyta jest urządzeniem USB i musisz zapalić diody na twojej tablicy. Może to być dobry sposób na zainicjowanie płyty jako urządzenia HID. Aby osiągnąć ten cel, potrzebujesz stosu gadżetów HID działających na twojej tablicy. Referencje następująco: Ramy

  1. gadżet w Uboot
  2. HID specefication usb org
  3. narzędzi debugowania, takich jak USB Protocol Analyser
  4. libusb uruchomiony na komputerze PC do wysyłania pakietów