Wie erhalte ich Zugriff auf die USB-Schnittstelle durch das BIOS in 16-bit-x86-real-Modus?
Ich bin ein Neuling auf dem Montage-Welt,
Ich versuche zu schreiben, Montage-codes, um die Kommunikation mit Hardware-Geräten wie Serielle, Parallele, VGA, Tastatur,..etc.
Ich Tue dies, während Sie im Real-Modus der x86-intel-Prozessor, indem Sie meinen code aus einer boostrap ich persönlich schrieb zu laden meine Assembler-code.
Gut, nach meinem wissen, das ich gesammelt, aus tutorials Lesen, ist der einfachste Weg für mich war der Einsatz von BIOS-Int-Service-Routine (ISR) und auf der anderen Seite der LÄNGSTE Weg ist durch den Zugriff auf die verschiedenen Register der hardware, wie zum Beispiel: Status-Register und Control-Register des Seriellen Ports....
Q1: Bin ich im Recht dazu?
Konnte ich die Kommunikation mit dem VGA-und Serielle Bauteile mit BIOS-INTs, aber ich konnte nicht finden, dass irgendwelche bios-interrupts für den USB-controller..?!
Q2: Können Sie mir helfen in dieser Lage sein, die Kommunikation mit dem USB-port und für die übrigen ports, nur machen Sie es generell?
Q3:
- Warum willst du code in assembly? Warum nicht geben Sie den code oben ein Betriebssystem (d.h. ein Programm für Linux)? Was ist dein Ziel (Lern-Montage, schreiben ein Betriebssystem)? Die heutigen Compiler generiert besseren Assembler-code als die meisten Menschen schreiben können.
- Das ist wie ein Film, wo Sie sehen den Menschen kämpft gegen Dinosaurier. Eine Zeit Anachronismus, USB erfunden wurde, lange nachdem die 32-bit-Betriebssystemen üblich waren. Es gab nie 16-bit-Unterstützung dafür, dass es zwecklos war.
- Die OP ' s Frage ist ernst. Ich denke, dass Antworten wie "Warum machst du nicht in irgendeiner Weise, wenn einige software installiert wurde." Als Assembler-Programmierer, den Sie kaum davon ausgehen, keine software installiert wurde, auch wenn die software OS oder BIOS. Betrachten Sie schreiben ein BIOS-Modul.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Alex sagt, es gibt keine universal-BIOS-level-support für USB. Allerdings gab es einige versuche zu machen, die real-Modus-DOS-Treiber für USB-Geräte. Ich fand eine Seite mit einigen source-codes, die Sie sollten in der Lage sein zu verwenden: http://bretjohnson.us/source/source.htm
Entsprechend der GEUB Handbuch (http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html), eine non-buggy BIOS ausstellen wird USB als Festplatte. So können Sie Festplatten-interrupts (z.B. INT 0x13) zu untersuchen, die für und Zugriff auf USB-einfach wie ein normaler hardware. BIOS tut das gleiche für CD-Rom (siehe http://wiki.osdev.org/El-Torito no-emulation Modus). Ich denke das BIOS wird dies für alle unterstützten boot-Optionen, aber ich habe keine gefunden Dokument, dies zu unterstützen.
Es gibt nichts in das PC-BIOS unterstützt USB-I/O-ähnlich wie alle anderen I/O (Tastatur, display, serielle, parallele, Festplatte, Lautsprecher). USB kam zu spät, um die Partei. Nur die USB-verwandten, was Sie können erhalten von der BIOS-Unterstützung für USB-Tastaturen und-Speicher-Verbindung über USB (Sie können das boot von Ihnen auf modernen PCs). Andere als die, die Sie haben, um Ihre eigenen USB-stack.