2012-08-04 4 views
5

Ich arbeite an einem rohen, x86 Real-Mode-USB-Access-Projekt. Dies beinhaltet einen benutzerdefinierten Bootsektor, einen Bootloader der zweiten Stufe und einige triviale Hardwaretreiber.USB-Steuerung im Realmodus x86

Endziel ist die Bereitstellung eines Produkts, das bootet, Daten über die USB-Schnittstelle sendet, Daten über die USB-Schnittstelle empfängt und den Ergebniswert auf dem Bildschirm anzeigt. Ich habe alles außer USB-Zugriff beendet.

Ich habe bereits festgestellt, dass BIOS keinen Zugriff auf Onboard-USB bietet. Ich habe Dutzende von Seiten von Osdevver nach Brokenthorn durchsucht. Ich habe sogar die USB 2.0-Spezifikation angeschaut.

Niemand, nirgendwo, gibt relevante oder nützliche Informationen über den direkten Zugriff auf einen USB Root Hub mit x86 Assembly im x86 Real Mode, ohne ein vorheriges Betriebssystem zu durchlaufen

Gibt es keinen Standard-IN/OUT-Port für USB-Root-Hubs? Und wenn, gibt es genau die Dokumentation, die die Standardkommunikation spezifiziert, die es der Software ermöglicht, dem Hub mitzuteilen, welche Daten zu senden sind und an welches angeschlossene Gerät diese Daten gesendet werden sollen?

+0

x86 Real-Modus, mit ... keine Betriebssystemunterstützung? Dies bedeutet wahrscheinlich, dass Sie mit dem PCI-Controller Ihres Chipsets zusammenarbeiten und den PCI-Controller verwenden, um den USB-Controller Ihres Chipsets zu erkennen (neu) zu initialisieren. Dann gibt es das Problem, Speicherzuordnungen und IRQ-Verarbeitung einzurichten (was Ihnen unter Umständen nicht ausreicht, um in den 1 MB und 8 IRVs, die im Real-Modus verfügbar sind, zu arbeiten). Ich könnte einige der Details hier falsch haben, aber Sie wollen das wahrscheinlich nicht tun. Erstellen Sie stattdessen ein kleines Embedded-Betriebssystem wie http://ecos.sourceware.org/. – Managu

+0

Also wird der USB Root Hub dem PCI Controller untergeordnet sein? –

+0

würde ich ja erwarten, ja. – Managu

Antwort

0

Es ist nicht möglich, die USB-Schnittstelle im Real-Modus zu verwenden. Sie können das im geschützten Modus implementieren, wie in PrettyOS gezeigt. Und es ist nicht so einfach zu implementieren, wenn wir mit unserer PS/2-Schnittstelle vergleichen.