2010-11-22 12 views
22

Ich möchte einen Mikrocontroller (AVR) programmieren, um einige LEDs über USB zu steuern. Es ist einfach nicht interessant, wie man USB-Geräte baut und programmiert. Es gibt einige AVR-Mikrocontroller, die das USB-Protokoll unterstützen, oder ich könnte das USB-Protokoll selbst in einem anderen Mikrocontroller implementieren, aber ich frage mich, was ich verwenden soll, um eigene Treiber auf dem Computer zu schreiben.USB-Programmierung

Mein Niveau in der Systemprogrammierung: total Noob (daher die Frage)

Also, was die Literatur ist, dass Sie Menschen raten würden gute Kenntnisse der USB-Technologie zu erhalten und wie Sie Ihre eigenen Treiber zu schreiben und darüber hinaus?

PS: Ich weiß:

  • C (wahrscheinlich es hier brauchen)

  • Java (wahrscheinlich wird es hier nicht brauchen)

  • Python (Hoffnung können es verwenden, hier)

  • Assembler (hoffentlich wird es hier nicht brauchen XD).

  • ...

P.P.S: Treiberentwicklung unterscheidet sich für verschiedene Betriebssysteme. Ich verwende Linux und Windows, daher ist jedes Material, das mit einem oder beiden dieser Systeme in Verbindung steht, willkommen.

Antwort

0

Der Microsoft-Dokumentationsbereich des WDK (Windows Development Kit) ist seit kurzem auf MSDN verfügbar. Es gibt einen Abschnitt über USB, obwohl Sie die ersten Abschnitte zuerst lesen sollten, insbesondere die Bereiche "Erste Schritte". Sie gehen davon aus, dass Sie C als Programmiersprache für die Treiberentwicklung verwenden.

Für Linux, die Linux USB Website sollte in der Lage sein, Sie in die richtige Richtung zu weisen. Insbesondere möchten Sie die Programming Guide for Linux USB Device Drivers.

+0

Die Programmieranleitung Link funktioniert nicht – Benubird

0

Ein guter Weg zu gehen ist nur ein HID-Gerät zu entwickeln, da der Treiber in den meisten höheren Betriebssystemen eingebaut ist und ziemlich flexibel für einfache IO wie Sie sprechen. Eine weitere gute Option ist nur ein USB-RS232-Gerät oder eine Software zu verwenden. Ich benutze PICs, die eine Reihe von netten Geräten mit USB onboard haben.

9

Nun, obwohl Sie Ihren eigenen USB-Treiber entwickeln und schreiben können, ist das Schöne an USB, dass Sie keinen eigenen Treiber schreiben müssen. Die USB Implementers Forum hat Klassenspezifikationen für alle Standardgeräteklassen definiert. Wenn Sie Ihr Gerät in eine Standardgeräteklasse einbinden können, wurde der Treiber bereits für Sie geschrieben!

Wenn Sie sich wirklich mit der USB-Entwicklung vertraut machen möchten, sollten Sie mit der Überprüfung der USB approved class specification documents beginnen.

5

Wenn Sie in Framework für AVR-Mikrocontroller mit Hardware-USB sind, dann werfen Sie einen Blick in LUFA, und wenn Sie in AVRs mit Software USB sind, dann schauen Sie in V-USB.Sie haben beide viele USB-Klassen implementiert, so dass Sie es nicht selbst machen müssen - benutzen Sie sie einfach.

+2

Beide dieser Projekte sind von großer Hilfe im avr usb Raum –

3

Das klingt nach einem tollen Projekt! Ich würde vorschlagen, mit etwas einfacherem zu beginnen, da Sie - wie Sie sagen - ein "total n00b" sind. Ich bin mir nicht sicher, welche Hardware Sie derzeit haben (oder im Sinn haben), aber was ich für den gesamten Anfänger vorschlagen würde, ist die STK500. Es ist ein Entwicklungsboard, das sowohl in Linux als auch in Windows sehr gut unterstützt wird und Ihnen die größte Flexibilität bietet. Es kommt mit LEDs und Schaltern für Ihre Projekte, aber Sie müssen einen Mikrocontroller bekommen. Und dafür empfehle ich die ATMega32, eine großartige Mehrzweck-IC, die auch gut unterstützt wird und eine Menge Dokumentation im Web hat.

Sobald Sie diese bekommen, schlage ich vor, dass Sie Ihre Entwicklung unter Linux mit avr-gcc (stellen Sie sicher, dass auch AVR-libc installieren). Wenn Sie Ubuntu verwenden ist es einfach, alle Pakete, die Sie brauchen:

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

Die sollten Sie zum Laufen bekommen. Ich würde vorschlagen, dass Sie nach Hilfe suchen, um Ihre ersten Programme zu schreiben, aber eine weitere gute Ressource sind die Online-Materialien für this class at Cornell.

Das reicht, um mit AVR-Mikrocontrollern und den Entwicklungswerkzeugen die Füße nass zu machen. Der Himmel ist die Grenze an diesem Punkt, aber da Sie gesagt haben, dass Sie in USB einsteigen möchten, würde ich vorschlagen, das ausgezeichnete V-USB Rahmenwerk zu verwenden, um Ihr ATMega32 als ein USB-Gerät zu fungieren. Danach, wie sie sagen, sind die Schritte zum Umdrehen von LEDs ein Kinderspiel.

+0

guter Tipp: v-usb - es gibt auch gute Schaltpläne - einfach zu diy –

3

Ich frage mich, was Ihre eigenen Treiber auf dem Computer

  • wdk
  • WinDriver
    1. libusb (here, here und here) zu verwenden, um zu schreibenFür libibus Varianten lesen Sie this

    1

    Sie könnten uns libusb. Es ist leistungsstark und plattformübergreifend.

    Aber was Sie versuchen, ist eine ziemlich einfache Steuerschnittstelle. Sie können den größten Teil der Komplexität umgehen, indem Sie HIDAPI verwenden, denke ich.

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

    HID-Geräte verwenden oft generische Treiber, die in das Betriebssystem kommen verpackt. Auf diese Weise müssen Sie eigentlich nie irgendwelche Treiber schreiben, Sie machen Ihr Gerät nur mit dem generischen Treiber kompatibel und passen die Client-Software darauf an.

    Ich denke, das ist, was normalerweise im Bereich der Hobby-Elektronik getan wird, woran Sie hier interessiert sind.

    HIDAPI wird sogar für die einfache Kommunikation mit HID-Geräten in den libusb FAQ empfohlen, da es etwas komplizierter ist, dies über Plattformen mit libusb zu tun.

    0

    Ich hatte mein eigenes Testbett basierend auf dem ARDUINO UNO gebaut und ich benutzte den Ionlabs-Programmierer vom Typ usbasp und es funktionierte einwandfrei, aber es erlaubte nicht, das TTL zurück zu Rs-232 zu konvertieren und somit konnte ich nicht t Verwenden Sie die Funktionen wie seriell.print() und ich musste das ftdi-Kabel installieren, das mir dies ermöglichte. Die Treiber waren die Libusb 1.xx funktioniert gut.

    Wenn Sie den AVR programmieren möchten, können Sie das ARDUINO Software Bundle oder das Stino zum Hochladen der Programme verwenden. Sie müssen c (nur Grundlagen) wissen.

    0

    Ich habe letztes Jahr einen USB-Tastaturadapter für meinen Capstone erstellt. Ich habe nicht die Host-Programmierung gemacht, sondern existierender Code, den Sie im Web finden können. Aber ich programmierte die Geräteseite und dafür bekam ich eine Menge Hilfe von dieser Website Teensy Schauen Sie in ihre "Code Library", die Code für hat Tastatur, Maus und andere. Auch das USB-Protokoll-Handbuch wird immer nützlich sein und Sie sollten es immer konsultieren, wenn Sie Sachen mit USB machen.

    0

    Ich frage mich, ob Ihre AVB als Host oder Gerät fungiert. Ich denke, dein Board ist ein USB-Gerät und du musst die LEDs auf deinem Board anzünden. Es kann also eine gute Möglichkeit sein, dein Board als HID-Gerät zu initialisieren. Um dieses Ziel zu erreichen, benötigen Sie einen HID-Gadget-Software-Stack, der auf Ihrem Board ausgeführt wird. Referenzen wie folgt:

    1. Gadget Rahmen in uboot
    2. HID Specefication usb org
    3. Debug-Tools wie zum Beispiel USB-Protokoll-Analysatoren
    4. libusb auf Host-PC läuft Pakete senden