Hallo, ich möchte mich intensiver mit USB beschäftigen und suche gute Literatur zu dem Thema. Natürlich gibts die Spezififkation, doch die überfordert mich teilweise etwas. Ich habe jedoch festgestellt, daß bei dem Thema immer wieder folgende Bücher erwähnt werden: 1) USB Complete: Everything You Need to Develop Custom USB Peripherals Jan Axelson scheint wohl DIE Bibel zu sein 2) USB 2.0 Handbuch für Entwickler Jan Axelson deutsche Übersetzung von 1) ? 3) USB 2.0 und USB 1.1 Hans-Joachim Kelm Kennt jemand diese Bücher oder gibts Alternativen bzw. was würdet ihr empfehlen? Gruß Thorsten
Meiner Meinung nach ist 2) das Buch, wenn es um den USB geht. Danach kannst Du auch locker die Specification lesen. Buch 3) habe ich auch hier, aber das war rausgeschmissenes Geld. Im Übrigen ist 2) tatsächlich nur die Übersetzung von 1), aber sehr gut gelungen (IMO).
zu 1) USB Complete: Everything You Need to Develop Custom USB Peripherals Jan Axelson Hab ich, ist ok, behandelt alles was nötig ist zu 2+3) kenn ich nicht Ich dann noch: USB Design by Example John Hyde ISBN 0-471-37048-7 einfach geschrieben , behandelt nicht nur das Gerät sondern auch das drumherum Gruss
Um einen Überblick zu erlangen "Hyde - USB Design by Example". Ist aber in Details und vor allem, wenn es um reale Beispiele geht, arg dürftig. Obendrein ist zumindest mein Exemplar im doppelten Sinne des Wortes ziemlich angestaubt - es ist recht alt, beschreibt nur USB1.1 und kennt so gut wie keinen derzeit üblichen USB-Controller. Auf meinem ist daher auch eine physikalische Staubschicht ... Partiell hilfreich sind sicherlich auch die Dokumentation und Application notes zum ExUSB-Controller von Cypress (früher AnchorChips), den gibt es schon recht lange und es wird nach wie vor recht viel damit entwickelt. In etwa in welche Richtung geht Dein Interesse? Möchtest Du eher allgemein wissen, was mit USB möglich sein kann, interessiert Dich die Treiberentwicklung für Host-Rechner (Windows/Linux/Mac) oder interessiert Dich die Entwicklung von USB-Devices?
Danke für eure Antworten. @Rufus Ich spiele zur Zeit etwas mit dem PIC18F4550. Auf Basis des HID-Referenzdesigns von Microchip kann ich jetzt schon Text auf ein LCD ausgeben und LEDs toggeln :) Aber so wirklich viel verstanden habe ich von dem ganzen Kram nicht. Leider ist HID sehr langsam, mehr als ein paar hundert Byte/s gehen wohl nicht. Aber da fängt es schon an: warum geht nicht mehr? Also m. a. W. ich möchte ein umfassendes Verständnis bekommen, so das ich dann in der Lage bin, ein USB-Device zu entwickeln, welches USB auch eineigermaßen sinnvoll ausnutzt. Dazu gehört dann auch die Treiberentwicklung auf PC-Seite (WinXP). Nur ich denke, es macht keinen Sinn mit Treiber anzufangen, wenn man die Hardware nicht verstanden hat. Ich habe einfach zu viele USB-Bruchstücke im Kopf, die ich nicht geordnet bekomme :) Als erstes Device dachte ich an eine MP3-Box mit nem PIC18F4550 und einem VS1001 drin, der dann über USB seine Streams bekommt. Naja, was besseres ist mir jetzt nicht eingefallen. Hab dafür alle Bauteile und ist mal ein erster Anfang. Da könnte ich dann auch mal den isochronen Transfer ausprobieren :)) @All Ich freue ich auf weitere Buchempfehlungen. Gruß Thorsten
> Leider ist HID sehr langsam, mehr als ein paar hundert Byte/s gehen
wohl nicht.
Da gehen 8 Byte alle 10 ms bei Low-Speed Geräten oder 64 Byte pro ms in
Full-Speed Geräten.
Ich sehe das aber auch so: Bevor Du einen Treiber programmierst, mußt
Du wissen, wie der USB funktioniert. Ich bleibe dabei: Mit Axelsons
Werk bist Du sehr gut bedient. Das Thema HID behandelt er übrigens
ausführlichst.
Treiberprogrammierung kommt in allen mir bekannten USB Büchern jedoch
nicht vor; das ist wieder ein Thema für sich. Das Werk dazu ist aber
das Buch 'Microsoft Windows Driver Model' von Walter Oney (davon gibt
es AFAIK keine Übersetzung).
@Rufus
Setzt Du die Cypress Dinger selbst ein? Die werden hier ja nun des
öfteren empfohlen, und ich schaue auch jedesmal bei Cypress rein. Aber
wie ich das sehe, haben die noch nichtmal FLASH. Das heisst dann doch
für mich, daß ich entweder grundsätzlich einen Treiber mitliefern
(selbst für HIDs) oder aber, wie vor Jahren, mit externen Speicher
hantieren muß. Zum Thema Debuggen finde ich irgendwie auch nicht so
recht was passendes, und darauf möchte ich eigentlich nicht mehr
verzichten. Was zeichnet diese Bausteine denn aus, was haben die für
Vorteile?
Nein, mit den Cypress-Controllern habe ich selbst nur am Rande mal etwas herumgespielt. Für eine komplette Neuentwicklung -auch gerade in Hinsicht auf das Debuggen- würde ich mir die Teile auch nicht unbedingt antun wollen; der MCS51-Kern hat ja auch so seine Grenzen. Vorteile sehe ich in der Verfügbarkeit und dem recht geringen Preis. Und der Tatsache, daß es die Teile schon 'ne ganze Weile lang gibt und also einiges an Erfahrung darüber zu finden ist. Und wer schon immer MCS51 programmiert, dem gefällt's halt, weil vertraut. Eine interessante Alternative gibt es von Atmel; die AT91SAM7xxx-Familie hat einen ARM7-Kern, 64 bis 256 kByte Flash-ROM, 16 bis 64 kByte RAM, diversem Kleinkram und eben einem USB-Devicecontroller. Der ARM7-Kern lässt sich über das JTAG-Interface sehr schön debuggen; es gibt brauchbare Compiler für ARM7 und obendrein gibt es auch noch ein bisschen mehr Rechenleistung (ist halt ein 32-Bit-Prozessor). Allerdings ist diese Prozessorfamilie (die spezifische Atmel-Variante, nicht der ARM7) noch sehr neu; welcher Händler die bereits verkauft, entzieht sich meiner Kenntnis. Olimex jedenfalls hat vor, eine Entwicklungsplatine mit diesem Prozessor herauszubringen.
Oh ja, die schauen sehr interessant aus! Die sind mir auf der Atmel-Seite noch gar nicht richtig aufgefallen. Die werde ich garantiert noch genauer unter die Lupe nehmen. USB-51er gibt es zwar auch von anderen Herstellern, aber das Argument mit dem Preis zieht. Daran habe ich gar nicht mehr gedacht. Ich verbaue aber auch nicht millionen von Controllern im Jahr. :-)
Von Atmel gibt es übrigens auch Flash-lose AVRs (AT76C712/713*) mit USB-Device-Controller. Bei denen läuft das Programm im RAM, das ähnlich den EzUSB-Chips per USB-Bootloader oder aus einem externen EEPROM geladen wird. Netter Abfalleffekt ist hier die deutlich höhere Geschwindigkeit (48 MHz) im Vergleich zu flashbasierten AVRs (RAM ist deutlich schneller als Flash-ROM). Nein, die Harvard-Architektur bleibt auch bei diesen Teilen unangetastet; das Programm-RAM ist nach dem Laden per Bootloader wie gewohnt unantastbar und liegt in einem anderen Adressraum als das normale RAM. Ein JTAG-Interface haben diese Teile übrigens auch. Allerdings ist auch hier die Frage der Bezugsquelle mehr als ungeklärt. *) http://www.atmel.com/dyn/products/product_card.asp?part_id=3579
> Was hat das jetzt mit Bücher über USB zu tun? :) Man muß auch mal abschweifen dürfen. :-) Aber im Ernst: Gesagt ist alles. Aktuelle Bücher für den USB gibt es halt nicht wirklich viele. Die Franzis-Werke sind IMO nicht gelungen, Axelson ist großartig und 'USB Design by example' ist nett, aber nicht wirklich tiefgründig. Auch der Verweis zu den AppNotes der Hersteller kam, und die sind durchweg erstklassig. Aber da fällt mir ein: Wenn Du nicht lesen möchtest, kannst Du Dir auch 'Universal Serial Bus System Architecture' anschauen: http://www.amazon.de/exec/obidos/ASIN/0201309750/qid=1113468985/sr=1-1/ref=sr_1_0_1/302-5808579-9631266 Das Buch ist auch nicht so der Bringer, aber das Video auf der CD ist spitzenmäßig. Der Autor erklärt Dir dann in ca. 1.5 h den USB. ;) @Rufus Diesen hatte ich auch schon entdeckt. JTAG hat der zwar, aber der mir vorliegende mkII unterstützt diesen Typen schonmal nicht. Und das mit dem RAM gefällt mir irgendwie auch nicht. Da macht der ARM schon einen wesentlich besseren Eindruck. :) Kaufen können werde ich den hoffentlich beim Distributor. Wenn die den nicht besorgen können, wer dann? BTW: Momentan habe ich den F320 von SiLabs im Einsatz: http://www.silabs.com/tgwWebApp/appmanager/tgw/tgwHome?_nfpb=true&_pageLabel=GenericContentPage&contentObjectId=/public/web_content/products/Microcontrollers/USB/en/USBMCU_matrix.htm Der hat alles, was ich im Moment brauche: Full-Speed USB, FLASH, ich kann den debuggen (benötigt nur zwei PINs: 1x Reset, 1xPort-Pin (letzterer kann aber auch während der Debug-Sitzung genutzt werden, wenn man aufpasst)), ist rasend schnell, benötigt nur ein absolutes Minimum an externer Beschaltung (noch nichtmal ein Quarz, trotz USB) und kommt nicht mit so einem Wahnsinnigen Pincount daher. Nur leider gibt es von SiLabs keinen Ableger mit etwas mehr PINs, da scheint mir der ARM gerade recht zu kommen. Mal sehen, was der Sommer so bringt. :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.