Forum: Mikrocontroller und Digitale Elektronik AVR USB Client mit C? (und vernünftiger Lizenz)


von Bartholomäus S. (sam_vdp)


Lesenswert?

Hallo,

vor einiger Zeit bin ich über die Möglichkeit gestolpert praktisch ohne
weitere Hardware mit einem AVR ein USB Client-Device zu bauen (à la
Obdev.at, IgorPlug oder AppNote309).
Mein Problem ist folgendes: Ich würde soetwas gerne nachbauen, traue
mir allerdings nicht zu das ganze selber zu entwickeln (also USB
Spezifikation, etc.). Das Konzept von Igor bzw. das abgeleitete AppNote
von Atmel sind leider Assemblercode, den ich kaum in C Projekte
integrieren kann (oder?).
Obdevs AVRUSB sieht geradezu prädestiniert aus. Allerdings würde mich
die Lizenz verpflichten, jedes noch so kleine Projekt zu
veröffentlichen, mindestens 12 Monate vorzuhalten und Obdev ein
unbegrenztes Nutzungsrecht einräumen, was ich ziemlich lächerlich
finde.
Gibt es ein ähnliches Projekt mit einer "normalen" Bastlerlizenz?

Mit besten Grüßen,
Bartl

P.S.: Klar, interessiert wohl keinen ob ich die Lizenz verletze, aber
ehrlich währt am längsten.

von Martin Enke (Gast)


Lesenswert?

hallo Bartholomäus,

so spontan kenne ich auch kein lizenzfreies C-Beispiel, aber:
Ich persönlich finde Assembler sehr einfach zu programieren. Natürlich
würde ich nicht bei Null anfangen sondern ein funktionierenden Code
abändern.
Um das Studium der USB-Spezifikation kommst Du auf keinen Fall drumrum
aber man braucht auch nicht alles zu wissen. Wahrscheinlich haste mal
in ein Buch gesehen und dann ist Dir schwindelig geworden, jedenfalls
ging mir das anfangs so...

Meine Empfehlung
- Jan Axelson, USB für Entwickler (=deutsch!) oder USB complete
(=englisch)

- Versuche unbedingt Dein Client als HID zu implementieren, ich kann
mir kaum ein Gerät vorstellen mit dem das nicht geht. Das halbiert
benötigte das USB-Wissen.

Martin

-

von Sven (Gast)


Lesenswert?

Hi,

suche mal mit google nach USB Joystick und avr. da gab es
ein Projekt als HID Device soweit ich weiss. (cz-seite glaube ich)
Oder unter http://www.mictronics.de da war auch alles verlinkt...

Gruß Sven

von Sven (Gast)


Lesenswert?

Kleine Ergänzung: Da das Timing sehr kritisch ist, wurde zu den oben
genannten Lösungen zu assembler gegriffen. Da in diesen Fällen
ja das USB-Protokoll in Software gelöst werden muss !!!

von Bartholomäus S. (sam_vdp)


Lesenswert?

@Sven: Den USB Joystick kenn ich (falls du den meinst:
http://www.mindaugas.com/projects/MJoy/ ), ist aber auch in ASM.
Ohne Assembler gehts wohl auch nicht (hat Obdev ja auch verwendet) und
ist auch kein Problem, solange es inline asm in C ist. Nur das ganze
Projekte in Assembler zu machen wäre nicht so mein Ding.

@Martin: Danke für die Buchtipps, werde ich mir zu Gemüte führen.
Lizenzfrei müsste der Code ja garnicht sein, nur den Zwang das Projekt
zu veröffentlichen (vor allem mit einem Jahr Vorhaltezeit) und die
Tatsache, dass ich was ich bau faktisch an Obdev abtrete finde ich
nicht in Ordnung. GPL wäre garkein Problem.
Bleibt mir wohl nur, den AppNote Code auf C mit inline assembler
umzubiegen. Ich werd's mal versuchen :)
Wegen dem HID-Gerät: Wenn man auf der PC-Seite einen generischen
USB-Treiber hat (z.B. libusb-win32) dürfte es doch keinen großen
Unterschied machen, was für ein Gerät der AVR ist, oder irre ich mich
da? Ich wollte das ganze unter anderem aber eh für einen Gamecontroller
verwenden, also ist HID eh erste Wahl.

Beste Grüße,
Bartl

von Martin Enke (Gast)


Lesenswert?

Hallo Bartholomäus,

natürlich spart Dir ein vorhandener Treiber das Selberschreiben was aus
Sicht eines ökonomisch denkenden Menschen eh Wahnsinn ist. Ob Du die
HID-Schnittstelle nutzt oder nicht hängt mehr davon ab was genau Du
vorhast: Wird das Gerät nur insg. 1 bis 3 mal installiert und noch dazu
von Dir selbst dann kannsu auch irgendwelche schrägen Treiber benutzen.
Sobald aber "Fremde" Dein Gerät nutzen dann kannsu sicher sein, dass
die die Treiberinstallation vermasseln. Echtes Plug&Play funzt m.E. nur
mit HID. Außerdem ist das PC-seitig easy zu programmieren: Mit
DeviceIOControl für die Control-Requests und ReadFile für die Daten
über die "schnelle" Pipe. Dann gibt's noch ein paar
Enumerationsroutinen, das war's.

Außerdem: Das Entwickeln ist einfacher weil es jede Menge Tools gibt
die HIDs testen (usbview, HidTest...)


Martin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.