Servus zusammen,
ich denke momentan darüber nach, in meiner Freizeit ein USB Gerät zu
entwickeln, das an ein embedded Windows CE System angeschlossen werden
kann. Da ich über den USB Bus Datenraten von über 12MBit transportieren
möchte, sollte der ganze Aufbau USB 2.0 (High Speed) kompatibel sein.
Am liebsten wäre mir ein gängiger µC (z.B. ATMEL, Freescale, Microchip)
mit eingebautem USB Controller sowie den üblichen Feldbus Controllern
(CAN, SPI, I2C, RS232, FlexRay,...).
Was wird außer dem µC noch benötigt, um den USB ans laufen zu bringen?
Gibt es gute Beispielprojekte, Application Notes oder habt ihr vllt.
praktische Erfahrungen in dem Themengebiet?
Ausserdem möchte ich für das Gerät einen Winows Geräte Treiber
erstellen. Sehr schön wäre hier ein kostenfreier, generischer Treiber.
Gibts da was fertiges, mit dem man schnelle Ergebnisse erzieheln kann
und das auch mit höheren Datenraten klarkommt? Wichtig ist, daß der
Treiber kompatibel mit Win CE ist, und zum Debuggen wäre es natürlich
wünschenswert, wenn er auch unter Win XP läuft.
Was ist denn das überhaupt für ein Windows CE System, das du da hast?
Hat das überhaupt eine USB Host Schnittstelle?
Das USB-Device zu entwickeln ist der einfache(re) Part.
Erzähl erst einmal mehr über den Host.
Hast du Zugriff auf das BSP?
Erstellst du das Image selbst mit dem Platform Builder?
peterguy wrote:
> Servus zusammen,>> ich denke momentan darüber nach, in meiner Freizeit ein USB Gerät zu> entwickeln, das an ein embedded Windows CE System angeschlossen werden> kann. Da ich über den USB Bus Datenraten von über 12MBit transportieren> möchte, sollte der ganze Aufbau USB 2.0 (High Speed) kompatibel sein.>> Am liebsten wäre mir ein gängiger µC (z.B. ATMEL, Freescale, Microchip)> mit eingebautem USB Controller sowie den üblichen Feldbus Controllern> (CAN, SPI, I2C, RS232, FlexRay,...).> Was wird außer dem µC noch benötigt, um den USB ans laufen zu bringen?> Gibt es gute Beispielprojekte, Application Notes oder habt ihr vllt.> praktische Erfahrungen in dem Themengebiet?>>> Ausserdem möchte ich für das Gerät einen Winows Geräte Treiber> erstellen. Sehr schön wäre hier ein kostenfreier, generischer Treiber.> Gibts da was fertiges, mit dem man schnelle Ergebnisse erzieheln kann> und das auch mit höheren Datenraten klarkommt? Wichtig ist, daß der> Treiber kompatibel mit Win CE ist, und zum Debuggen wäre es natürlich> wünschenswert, wenn er auch unter Win XP läuft.
Beschäftige mich gerade auch mit USB. Als Controller bietet sich ein
Cypress an (-> http://www.cypress.com/products/?gid=9 ). Die kosten
nicht viel und man braucht nur noch ein Flash für den Code.
Zur Treiberentwicklung unter Windows brauchst du das
DriverDevelopmentKit von MS (->
http://msdn.microsoft.com/en-us/library/aa972908.aspx )(->
http://support.microsoft.com/kb/323594/de).
Mehr kann ich zum DDK leider noch nicht sagen, weil ich es bei mir noch
nicht zum laufen bekommen habe.
Die Wikipedia.de Seite über USB ist auch ganz informativ und auf
mikrocontroller.net (also hier) gibt es auch einen Wikieintrag.
Gruß
Also empfehlenswert ist der Cypress FX2. Da hast du zwar kein CAN und
solche Späße, aber mit CAN usw. kenn ich keinen der auch wirklich 2.0
HighSpeed schafft. Die Firmware für den FX2 ist schnell erstellt, ist
ganz einfach. Triber gibts entweder den Cypress für 2000, XP und Vista
oder die LibUSB, als open source, oder den hier
Beitrag "Generischer USB Treiber für Windows mit C++ API" oder halt wie da ganz
unten erwähnt den WinUSB. Mit den Quellen steht die Chance nicht
schlecht, dass man das unter CE hinbekommt, wenn man ein CE-Profi ist.
Mal ein paar Details zu dem Host:
Also als WinCE Host möchte ich das PXA320Colibri Modul von Toradex
verwenden. (
http://www.toradex.com/De/Products/Colibri_XScale_Computer_Modules_Overview_PXA255_PXA270_PXA270M_PXA300_PXA310_PXA320_ARM/Colibri_PXA320
)
Für erste Tests erstmal mit dem Evaluierungsboard, später soll evtl. ein
eigenes Trägerboard verwendet werden.
Soweit ich weiß liefert Toradex die Colibri Module mit WinCE 6.0 aus und
legt auch alle Sourcen des BSP offen.
Was ich schon rausgefunden habe ist, daß die Colibrimodule anscheinend
nicht direkt High Speed USB unterstützen. Man ist wohl gezwungen hierfür
noch einen extra Baustein zu verwenden.
Zu den Cypress Controllern fürs Device:
Handelt es sich hierbei um µCs mit integriertem USB Controller oder sind
das spezielle USB-Bausteine mit abgespecktes µC Funktionalität. Falls
zweiteres, ist es möglich, einen µC an den Cypress zu hängen und den
Cypress als externen Communication Controller einzusetzten? Denn die
Unterstützung von Feldbussen und zusätzlichen I/Os wäre mir sehr
wichtig.
Zum Windows-Treiber: Ich habe zwischenzeitlich mal ein wenig gesucht und
bin jetzt auf dem Stand, daß ein Windows 2000/XP Treiber normalerweise
auch unter WinCE laufen sollte, ohne umfangreiche Anpassungen
vorzunehmen. Also könnte ich wirklich erst das USB-Device entwickeln und
am Heim-PC testen.
> Ich habe zwischenzeitlich mal ein wenig gesucht und> bin jetzt auf dem Stand, daß ein Windows 2000/XP Treiber normalerweise> auch unter WinCE laufen sollte, ohne umfangreiche Anpassungen> vorzunehmen
Naja, Du musst den Treiber auf jeden Fall für jedes der Systeme neu
übersetzen - der PXA320 ist ein vollkommen anderer Prozessor als ein
x86.
Cypress FX2 sind "vollwertige" µCs, Du wirst halt gegebenenfalls für die
von Dir angedachten Schnittstellen noch irgendwelche Interfaces
benötigen.
CAN usw. kannst du ja an den externen Daten- und Adressbus des FX2
klemmen, das ist ja ein vollwertiger 8051 Prozessor mit USB Interface.
Das FrameWork nimmt dir da die ganze USB Arbeit ab, und du kannst
einfach auf die Endpoint-Buffer zugreifen.
>Soweit ich weiß liefert Toradex die Colibri Module mit WinCE 6.0 aus und>legt auch alle Sourcen des BSP offen.
Das würde ich bezweifeln.
Normalerweise bekommst du nur ein Binary BSP von diesen Anbietern,
da es sich dabei um ihr Kern-Know-How handelt, dass sie sich über
Jahr erarbeitet haben.
Ein BSP im Source-Code kostet seeehr viel Geld.
Wir reden da von hohen 5-stelligen Beträgen.
Will heißen: Du kannst zwar für die dazu passende HW ein Image bauen
und es dir passend zurechtkonfigurieren und deine Applikation dazufügen.
Aber ans Eingemachte kommst du auf diese Weise nicht.