OOStuBS - Technische Informatik II (TI-II)
2.4
|
Treiber für den PIC (Programmable Interrupt Controller) Mehr ...
#include <pic.h>
Öffentliche Typen | |
enum | Interrupts { timer = 32, keyboard = 33, pic2 = 34, serial2 = 35, serial1 = 36, soundcard = 37, floppy = 38, parallelport = 39, rtc = 40, misc = 41, ata4 = 42, ata3 = 43, secondps2 = 44, fpu = 45, ata1 = 46, ata2 = 47 } |
externe Interruptquellen Mehr ... |
Öffentliche Methoden | |
void | ack (Interrupts interrupt) |
sendet ein "Acknowledgement" eines ausstehenden Interrupts | |
void | allow (Interrupts interrupt) |
Erlaubt einen speziellen Interrupt von einem Peripheriegerät. | |
void | forbid (Interrupts interrupt) |
verbietet einen speziellen Interrupt eines Peripheriegerätes | |
PIC () | |
Standardkonstruktor. | |
~PIC () | |
Destructor globally disabling interrupts. |
Private Attribute | |
IO_Port | ctrl_1 |
IO_Port | ctrl_2 |
IO_Port | mask_1 |
IO_Port | mask_2 |
Treiber für den PIC (Programmable Interrupt Controller)
Der PIC (programmierbarer Interruptkontroller) ermöglicht es dem System bestimmte Interrupts bzw. unterbrechungen zu erlauben oder zu verbieten. Wurden die Interrupts global aktiviert, so legt der PIC fest, welche Interrupts weitergreicht werden um vom System behandelt zu werden. Es ist wichtig,d ass Interrupts nur behandelt werden, falls der entsprechende Interrupt erlaubt wurde und die Behandlung im allgemeinen aktiviert ist - siehe dazu die Klasse CPU.
Der PIC basiert auf Intels 8259 Chip und besteht aus einem Master-Slave PIC-System. Heutzutage werden sie meist nur "emuliert". Verwendet wird mittlerweile APIC, welcher für ein Mehrkernbetrieb notwendig ist.
enum PIC::Interrupts |
externe Interruptquellen
Die folgende Liste gibt die oft genutze Liste der Interrupts an. Sie ist nicht für alle Computer gleich, da sie sich danach richtet, welche Hardware an den entsprechenden Interrupteingang vom PIC angeschlossen ist.
Die ersten acht Einträge stammen vom ersten PIC (Master), die letzten acht vom zweiten PIC (Slave).
timer |
Intervallzähler (PIT) |
keyboard |
Tastaturkontroller. |
pic2 |
Anschluss von Slave-PIC. |
serial2 |
RS-232 Port 2 und 4. |
serial1 |
RS-232 Port 1 und 3. |
soundcard |
Soundkarte oder LPT 2. |
floppy |
Diskettenkontroller. |
parallelport |
LPT 1 und unechter Interrupt. |
rtc |
Echtzeituhr vom CMOS (RTC) |
misc |
verschiedene |
ata4 |
vierter ATA(PI)/IDE |
ata3 |
dritter ATA(PI)/IDE |
secondps2 |
zweiter Tastaturkontrolleranschluss |
fpu |
Gleitkommazahleneinheit. |
ata1 |
erster ATA(PI)/IDE |
ata2 |
zweiter ATA(PI)/IDE und unechter Interrupt |
PIC::PIC | ( | ) |
Standardkonstruktor.
Er initialisiert den PIC und maskiert alle einkommenden Interrupt, damit wird keiner an die CPU durchgereicht. Danach aktiviert er die globale Interruptverarbeitung der CPU und ermöglicht das auftreten und ausgeben von Exceptions.
Definiert in Zeile 21 der Datei pic.cc.
PIC::~PIC | ( | ) |
void PIC::ack | ( | Interrupts | interrupt | ) |
sendet ein "Acknowledgement" eines ausstehenden Interrupts
Die Funktion bestätigt die Behandlung eines aufgetretenen Interrupts. Dies sagt dem PIC, dass der letzte gemeldete Interrupt abgearbeitet wurde
Definiert in Zeile 85 der Datei pic.cc.
void PIC::allow | ( | Interrupts | interrupt | ) |
void PIC::forbid | ( | Interrupts | interrupt | ) |