Autor Thema: USB generic EHCI host driver == wie?  (Gelesen 6345 mal)

Bassai

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« am: 15. March 2007, 10:48 »
hallo mal wieder...
hat jemand ne grobe Ahnung, wie man nen USB host driver schreibt?
Auf http://www.beyondlogic.org gibt es ja eine Einführung in USB und so nen "tutorial" wie man einen USB device driver schreibt.
Ich möchte gern meinen USB-Stick lesen können und daher lowlevelmäßig
nen EHCI host driver implementieren. Leider habe ich dazu bisher keine
Informationen gefunden.
Welchen port benutzt USB überhaut? Und wie erklärt man den PIC dass er
USB-Interrupts empfangen soll?

Ich weis, es ist kein triviales Vorhaben...
Aber ich bin über jede kleine Hilfe sehr dankbar!



Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 15. March 2007, 18:50 »
Moin

ich nehm man an, das die Documentation für die Host controler bei Intel(EHCI und UHCI) oder NEC(OHCI) zu finden sind.

Die Controller sind meines wissens standard. Ähnliche IP-cors werden auch im Embedded bereich verwendet. da steht dann im Datenblatt nur noch drinn. UHCI Controller. Addresse 0xabcdefghi und das wars dann. Denn rest gibts dann quasi fast von der stange.

USB ist nicht ganz einfach zu implementieren. Kollege meinte ca 100 mal komplizierter als die RS232. und USB MSD (Mass Storage Device) ist nicht nur einfach USB. dazu kommt dann noch die MSD classe. die die ganzen SCSI commandos absetzt und verarbeitet.

Was du mindestens brauchst sind die controll endpoints und die bulk endpoints. Interrupt Endpoint und der 4. (name grad entfallen) brauchst du für MSD nicht.

Debuggen kann sicher anstrengend werden ohne das passenden tools. und für usb sind die leider richtig teuer. Bei rs232 reicht ein 2. rechner, ein bischen software und ein passendes kabel.

gruss

Bassai

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 16. March 2007, 17:23 »
gibt es vielleicht irgendjemand der das schonmal probiert hat?
also ein Beispiel oder Tutorial?
Ich fühl mich grad irgendwie im Wald, aber aufgeben will ich noch nicht ;)

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #3 am: 29. March 2007, 13:11 »
http://www.osdever.net/cottontail/#USB

hab ich grad gefunden...
Cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

Bassai

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 23. April 2007, 20:23 »
also mittlerweile bin ich soweit, dass ich den USB controller mittels PCI gefunden habe ;)
Nun möchte ich nen UHCI (scheint am "einfachsten" zu sein) host controller
treiber basteln.
Jetzt mein Problem: weiss jemand wie man die USB enumeration genau macht?
also ich schick an device 0x0 endpoint 0x0 einen getDeviceDescriptor Befehl.
schickt mir das device gleich den descriptor oder muss ich nochmal nen
"IN" Befehl senden? Bzw muss ich dazwischen warten oder kann ich alles in
einen schedule bauen?
 
Danke für jede kleine Hilfe, weil ich hab im ganzen Internet nicht viel mehr als die USB Spezifikationen gefunden...

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 26. April 2007, 22:29 »
Nabend

für windows gibts ein paar USB Analyser die sich im Treiber einklinken. ggf kanst du daraus ein paar sachen ableiten. An sonsten ein gutes buch über USB z.B. von Jan Axelson (janet axelson) USB Comleat

ggf mal anlesen http://www.lvr.com/usbcenum.htm

meines wissens muss danach ein in kommen. der out sagt ja nur das daten verschikt wurden. als antwort bekomst du ein ack oder nack das gleiche dann für den in.

Ich sollts eigentlich wissen bastel momentan beruflich an einer usb device applikation. sollte mir das noch mal mit unserm usb analyser anschaun.


 

Einloggen