Hallo, ich bin dabei mich in die Intel 8086 Architektur einzuarbeiten, und dabei haben sich ein paar Fragen ergeben, bei denen ihr mir hoffentlich weiterhelfen könnt: 1) Wird durch die Hardware ein Interrupt ausgelöst, dann - soweit ich es verstehe - wird dies über einen Pin des Interrupt Controllers angestoßen. Dieser besitzt dazu mehrere Pins, einen pro Interrupt. Der Interrupt Controller wiederum triggert den Interrupt Pin der CPU. Wie genau findet die CPU nun heraus welcher Interrupt (welche Nummer) ursprünglich gemeint war? Wie kommuniziert die CPU mit dem Interrupt Controller? 2) Alle Peripherie wird in den Adressraum gemappt. Bisher bin ich davon ausgegangen, dass über bspw. den Buscontroller entschieden wird, ob eine Adresse nun zu dem Arbeits-, Grafik- oder bspw. Speicher eines Keyboardcontrollers gehört. Doch scheinbar gibt es hier Unterschiede. Was genau ist (bus- und CPU- seitig) der Unterschied zwischen dem Speicherzugriff mit MOV und den "Port"-Zugriffen mit IN und OUT? Können die beiden Arten synonym verwendet werden (kann ich IN/OUT durch MOV ersetzen?)? 3) Wie "startet" das BIOS, um bspw. auf Interrupts zu reagieren? Lädt es sich beim Start in den Arbeitsspeicher (per DMA?)? 4) Über BIOS Interrupt 16h kann auf die Tastatur zugegriffen werden. Könnt ihr mir kurz erklären wie das Lesen einer Taste funktioniert? Was passiert zwischen dem Interruptcall und dem Rücksprung? Wie kommt hier der Keyboardcontroller ins Spiel? 5) Das grundlegende DMA Prinzip habe ich verstanden. Aber was ist ein "DMA Channel"? Danke für eure Mühe
Jann schrieb: > Wie genau findet die CPU nun heraus welcher Interrupt (welche Nummer) > ursprünglich gemeint war? Wie kommuniziert die CPU mit dem Interrupt > Controller? So, wie Parallelbus orientierte externe Peripheriebausteine früher mit dem Prozessor kommunizierten. Ein Interrupt-Controller nannte sich wohl mal 8259. Da dürfte das Datenblatt im Netz noch zu finden sein.
Jann schrieb: > 1) Wie kommuniziert die CPU mit dem Interrupt > Controller? Ein spezieller Buszyklus liefert die Nummer des Vektors, der Interrupt Acknowledge. > 2) Alle Peripherie wird in den Adressraum gemappt. Genauer gesagt in 2 getrennte Adressräume. Der I/O-Adressraum (z.B. UART) ist vom Speicheradressraum (z.B. VGA) getrennt. Siehe entsprechendes Bussignal im minimum mode oder Busstatussignal im maximum mode. > die beiden Arten synonym verwendet werden (kann ich IN/OUT durch MOV > ersetzen?)? Nein. Getrennte Adressräume. > 3) Wie "startet" das BIOS, um bspw. auf Interrupts zu reagieren? Lädt es > sich beim Start in den Arbeitsspeicher (per DMA?)? Das BIOS wurde anno 8088 direkt aus dem EPROM ausgeführt. Heute wird es ins RAM kopiert, sobald das System soweit konfiguriert und getestet ist, dass man damit arbeiten kann. Mit DMA hat das nichts zu tun. DMA ist für IO da, nicht um Daten im Speicher zu kopieren - das kann die CPU besser und schneller. > 4) Über BIOS Interrupt 16h kann auf die Tastatur zugegriffen werden. > Könnt ihr mir kurz erklären wie das Lesen einer Taste funktioniert? In der Tastatur sitzt ein Mikrocontroller (anfangs wohl ein 8048), der vom PC seriell angesprochen wird. Seit AT findet die Kommunikation mit dem Tastaturcontroller in einem eigenen Mikrocontroller (8041) auf dem Mainboard statt, der später auch die PS/2 Maus und ein paar andere Kleinigkeiten regelt. > 5) Das grundlegende DMA Prinzip habe ich verstanden. Aber was ist ein > "DMA Channel"? Ein DMA-Kanal ist per Request/Acknowledge-Leitung mit der entsprechenden IO-Karte verbunden. Hat man mehrere mit DMA arbeitende IOs benötigt man für jede davon einen Kanal.
Details beantwortet dir jederzeit das technische Handbuch des PC/XT, Schaltbilder und BIOS Sourcecode inklusive. Wobei ich davon ausgehe, dass du nicht (nur) den 8086 allgemein meinst, sondern im Kontext eines PCs: http://www.retroarchive.org/dos/docs/ibm5160techref.pdf
Der 8086 interrupt controller was der 8259. Dessen Manual ist auf alle Faelle lesenswert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.