2009-02-17 4 views
7

Ich versuche, über den USB-Host-Anschluss eines Atmel-Prozessors eine Verbindung zu einem einzelnen USB-Gerät herzustellen. Ich habe ein Embedded-System mit begrenztem Speicher und kein Betriebssystem. Ich möchte einen einfachen dedizierten Host für die Schnittstelle zu einem einzelnen USB-Slave-Gerät implementieren.Einfacher USB-Host-Stack

Kann mir jemand zu einer einfachen USB-Host-Implementierung führen?

Der Prozessor ist der Atmel AT91SAM9261S.

Antwort

1

Zuerst, wenn ich mich richtig erinnere AT91SAM9261S haben OHCI usb controller an Bord und Sie müssen mindestens einfache Host-Controller-Treiber implementieren (Sie können einen Blick auf Linux-Implementierung). Abhängig von den Übertragungsarten, die Ihr Gerät verwenden wird, ist es möglicherweise nicht sehr schwer - bis sehr schwer :) Es gibt keine einfache Möglichkeit, USB-Stack zu implementieren. Nach der Implementierung eines Controller-Treibers müssen Sie vorsichtig sein, beachten Sie Kapitel 9 von USB spec. Und erst danach können Sie mit der Implementierung Ihrer Gerätelogik beginnen.

Für den vereinfachten Anwendungsfall gibt es eine Menge Code, der weggelassen werden könnte, aber ohne guten USB-Hintergrund ist schwer zu entscheiden, was relevant ist und was nicht.

Jeder Weg, wenn Sie nach einer kommerziellen Lösung suchen my company kann eine bieten.

0

Dies wäre so viel einfacher, wenn Ihr Gerät kein Host sein müsste :-P, da Atmel einen Beispielquellcode für USB-Geräte bereitstellt. Wenn ich Sie wäre, würde ich versuchen, eines der USB-liebenden RTOS auf Atmel's AT91SAM third party Seite zu verwenden, die den USB-Stack von jungo beinhalten könnte, wie von Ilya vorgeschlagen.

Wenn Sie Ihren eigenen OHCI-Treiber schreiben, könnte libusb als eine Implementierung der oberen Schichten des USB-Stacks hilfreich sein.

1

Ich habe den RTUSB-32 Stapel von On-Time verwendet. Es ist ein kleiner Footprint-Stack und war einfach in unsere Umgebung zu integrieren und die Dokumentation ist gut. Sie abstrahieren die benötigte Unterstützung, so dass sie vollkommen plattform- und OS-neutral ist und eine relativ kleine Anzahl an Haken hat, die Sie dafür benötigen - dh: Sie ist gut gekapselt.

Da Sie die gesamte Quelle erhalten, werden Sie sehen, dass der Code nicht der am besten konstruierte Code der Welt ist, aber er kann ohne viel Arbeit entziffert werden, wenn es benötigt wird. Auf jeden Fall "funktioniert" es einfach "ohne Probleme". Wir haben es seit ein paar Jahren in einigen Produkten laufen lassen und sind nur auf ein Kompatibilitätsproblem mit dem Stack gestoßen, wo es mit einem bestimmten USB 2.0-Hub nicht ganz automatisch Auto-Discovery gemacht hat. Wir haben ihnen eine Probe des Hubs geschickt und sie hatten innerhalb weniger Tage einen Patch dafür. Das ist schwer zu überbieten. Alles in allem halte ich es für ein gutes Preis-Leistungs-Verhältnis und bezwingt das Hinsetzen, um das Ding von Grund auf neu zu schreiben.