Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Projekt: OS-Development  ::  Zugriff auf Floppy (USB FDD) mittels UHCI - (k)ein Weiterkommen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 17:28:02 01.11.2014   Titel:   Zugriff auf Floppy (USB FDD) mittels UHCI - (k)ein Weiterkommen            Zitieren

Hallo zusammen,

ich bin wiedermal am UHCI Controller und seiner Programmierung dran...

Was bis jetzt geschieht:

1. PCI Bus wird nach allen Geräten durchlaufen
2. UHCI Controller suchen
3. UHCI Controller Global Reset
4. UHCI mit Standardwerten initialisieren
5. Port Reset durchführen
6. Device Descriptor holen
7. Adresse setzen(1)
8. Stringdescriptor 1 und 2 holen und anzeigen
9. Konfiguration setzen (1)

bis hier läuft alles fehlerfrei.

Nun gehts aber los:

Mein Configuration Descriptor zeigt mir folgende Werte an:
http://www.directupload.net/file/d/3793/pam24yo8_jpg.htm

Die ersten beiden Zeilen sind mein Devicedescriptor (roter Rand).

Die letzen drei sind der Config-Descriptor mit einem kleinen "Fehler".
Hier befinden sich die 5 Descriptoren (Configuration, Interface, 3x Endpoint)

Die Endpoint Descr. beginnen alle mit 0x7 : 0x5 was eine Länge von 7 Byte
bedeutet und die 0x5 sagt aus das dies ein EP Descr. ist.

Das dritte Byte ist die Adresse des EP.
Bit 7 (80h) sagt aus ob es ein IN oder ein OUT EP ist. Die letzten vier Bit
geben die Nummer des EP an.

Beim ersten habe ich einen IN EP mit Nummer 2 (Bulk), beim zweiten einen OUT EP
mit Nummer 2? (Bulk) und beim dritten einen IN EP mit Nummer 1 (Interrupt).

Ist das richtig das IN und OUT die selbe Nummer haben?

Nun zu den UFI SCSI Befehlen.

Den einzigsten Befehl den ich fehlerfrei senden kann ist der Inquiry 12h.
UFI benutzt das CBI (Control, Bulk, Interrupt) Protokoll.
Das heißt, der Befehl wird mittels Command Request gesendet.

Da jeder Befehl 12 Byte lang ist und man pro Control-EP nur 8 Byte senden kann
verläuft das ganze wie folgt.

Setup Packet
Control-out Packet (8 Byte)
Control-out Packet (4 Byte)
Handshake Packet

Interrupt EP abfragen bis zwei Byte eingetroffen sind. (0x0000 = kein Fehler)
und dann noch über den Bulk EP die Daten abholen.

Auch das läuft fehlerfrei.

Zitat:

Leider kann ich aber keinen anderen Befehl senden, da schon beim Senden
ein Fehler 0x2906 angezeigt wird.

POWER ON RESET OR BUS DEVICE RESET OCCURRED

Wenn man in der Fehlermeldung OCCURRED durch required ersetzt, macht es
mehr Sinn! :rolleyes:





Das Handshake Packet nach dem Senden des Befehls liefert mir nur ein "Stalled"
was wohl nur angehalten bedeutet.
Zitat:

Das mit der falschen IN EP Nummer hab ich im Code selbst auf 3 umgestellt.

Hat jemand eine Ahnung wieso er zweimal die falsche EP Nummer vergibt?

Aus der gestrigen Mail des Autors habe ich erfahren das manche Geräte
für den IN und OUT Endpoint nur eine Nummer vergeben. Die Richtung wird
wohl dann über den PID Code 0x69 und 0xE1 vorgegeben. Ein Hinweis im Buch
wäre toll gewesen.


Was muss ich tun damit auch andere Befehle angenommen/bearbeitet werden?
(Fehlt ein Reset, Init, Sense....???)

Auch ist es mir nicht möglich zweimal den Inquiry Befehl zu senden.
Beim zweiten mal bricht er komplett ab und reagiert erst wenn ich das Floppy
vom USB Port getrennt habe.
Zitat:

Auch hier hab ich aus der Mail erfahren das nach einem Fehler der Request Sense
Befehl gesendet werden sollte. Obwohl dieser für UFI (CBI Protokoll) nicht verwendet werden sollte.

Wie schon weiter oben geschrieben sollte man wohl nach jedem Befehl auf dem Port
einen Reset ausführen. Der Sinn dahinter ist mir noch unklar.
Jedenfalls kann man somit schonmal die Kapazität oder Bereitschaft des Floppy prüfen. Auch wird somit der Lesebefehl Read10 fehlerfrei gesendet und das
Gerät fängt an zu brummen. Jedoch hört das erst auf wenn man das Kabel kappt :rolleyes: Daten kommen noch keine an.


Ich bin echt am verzweifeln hier :confused:

Nicky


Zuletzt bearbeitet von supernicky am 16:56:38 02.11.2014, insgesamt 1-mal bearbeitet
Erhard Henkes
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 15299
Beitrag Erhard Henkes Mitglied 15:21:59 16.11.2014   Titel:              Zitieren

Hilft Dir diese Stelle vlt. weiter? http://forum.osdev.org/viewtopic.php?f=1&t=22789

_________________
OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm


Zuletzt bearbeitet von Erhard Henkes am 15:22:17 16.11.2014, insgesamt 1-mal bearbeitet
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 16:42:19 23.11.2014   Titel:              Zitieren

Hallo Erhard,

habe dem Autor mein Problem geschildert und er konnte
mir sofort sagen das es am Toggle-Bit lag.

Dieses darf nur nach dem Controllerreset auf Null
gesetzt werden.

Habe nun dafür eine globale Variable eingerichtet,
(war vorher im Stack untergebracht).

Das USB Floppy läuft nun mit UHCI und OHCI.
Der USB Stick noch nicht ganz. Werde hier mal mit
EHCI weiter machen.

Nicky :D
Erhard Henkes
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 15299
Beitrag Erhard Henkes Mitglied 18:10:12 23.11.2014   Titel:              Zitieren

Freut mich, dass Dir der Link weiter geholfen hat. Es gibt nicht viele, die bei USB-Floppy helfen können. Zum Glück ist das Toggle bei xHCI kein Thema mehr. Bezüglich usb-Stick und EHCI bzw. xHCI kannst Du bei PrettyOS und uns Hilfe suchen, wenn Du länger fest hängst.

_________________
OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Erhard Henkes
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 15299
Beitrag Erhard Henkes Mitglied 21:19:03 16.02.2015   Titel:              Zitieren

Dein usb-Floppy / UFI Wissen könne wir gut brauchen. Wir haben nun auch Kontakt via usb mit usb-Floppy. ;)

_________________
OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Supernicky2
Unregistrierter




Beitrag Supernicky2 Unregistrierter 21:49:16 16.02.2015   Titel:              Zitieren

na dann sehen wir uns im Chat :D
Erhard Henkes
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 15299
Beitrag Erhard Henkes Mitglied 18:20:46 18.02.2015   Titel:              Zitieren

UFI und CBI spec habe ich schon besorgt. Es klappt inzwischen halbwegs.

_________________
OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm


Zuletzt bearbeitet von Erhard Henkes am 01:03:57 19.02.2015, insgesamt 1-mal bearbeitet
Erhard Henkes
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 15299
Beitrag Erhard Henkes Mitglied 01:27:41 20.02.2015   Titel:              Zitieren

Inzwischen sogar bestens. Einrichtung/Lesen/Schreiben klappt.

_________________
OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
C++ Forum :: Projekt: OS-Development  ::  Zugriff auf Floppy (USB FDD) mittels UHCI - (k)ein Weiterkommen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.