2002-12-17, 00:50
Hört sich nach einen Interrupt-Problem an. Füher wäre ich mir da sicher gewesen. Aber bei den neuen PCs kenn ich mich nimmer so aus. Hast vermutlich ACPI installiert? Dann macht die Interrupt-Vergabe eh das Windows. Soweit ich weiß kannst dann eh nur durch Umstecken der Karte was ändern.
Versuch also mal die Soundkarte in einem anderen Slot zu stecken. Soundkarten sind beim IRQ teilweise ziemlich happig. Schau dir mal die Motherboard-Beschreibung an. Da steht meist irgendwo dabei, welche PCI IRQs (A, B, C, D) wie zusammengeschaltet sind. (IRQ = Interrupt Request). Teilweise sind die mit On-Board Sachen doppelt und dreifach belegt. Möglichst schauen, dass der Interrupt für den IDE-Kanal frei bleibt und die Soundkarte möglichst an eigenen hat. Sonst halt durchprobieren, mit welchem Gerät sie zusammenpasst.
Sache ist nämlich die: Jeder Prozessor hat eine Interrupt-Leitung. Daran hängt ein Interrupt-Controller. Beim Ur-PC waren das zwei Stück hintereinandergeschaltet, die insgesamt 15 Eingänge hatten. 8 + 8, aber einer von ersten ist ja vom zweiten benutzt. IRQs braucht man für: Coprozessor, Timer, Tastatur, jede Schnittstelle, Soundkarte teilwesei mehrere, Grafikkarte, Netzwerkkarten, SCSI, Jeder IDE-Kanal usw.
Für was ist der IRQ? Angenommen, du drückst eine Taste, dann meldet das die Tastatur dem Tastaturkontroller, der leitet das an den Interruptcontroler weiter. Der leitet das an den Prozessor weiter. Der macht kurz Pause, schaut im Interrruptcontroler, welcher Interrup ausgelöst wurde - ah der Tastatur-Interrrupt - ok, dann muss ich die Tastaturinterrupt-Routine aufrufen. Diese holt dann den Tastencode vom Tastaturcontroller und schreibt es in den Tastaturpuffer. Von dort kann dann das Anwendungsprogramm die Tasten abfragen. Und genau das gleiche ist, wenn du die Maus bewegst, wenn die Netzwerkkarte Daten erhält, wenn der Timer weitergetickt hat, wenn die Festplatte Daten leifert usw...
Irgendwann sind aber einfach die IRQ-Leitungen ausgegangen. Deswegen haben sie dann IRQ-Sharing eingeführt. Ich glaube das war mit Einführung von PCI. Da hat man dann gesagt, der gesamte PCI-Bus verwendet nur 4 IRQs. Diese 4 kann man 4 IRQs vom Interruptcontroller zuweisen. Da einige on-board Devices auch intern am PCI-Bus hängen, teilen sich die dann IRQs mit Steckkarten.
Das Problem beim IRQ-Sharing: Die CPU bekommt vom Interrruptcontroller den Hinweis, dass ein Interrupt stattfand. Ok, die CPU liest die Interruptnummer vom Interruptcontroller aus. Nur blöd: An der Leitung liegen aber die Soundkarte und die Festplatte. Was mach ich nun? Ich vermute mal, dass bei Windows die das Betriebsystem dann einfach beide Treiber (Soundkarten-Treiber und IDE-Treiber) aufruft, und ihnen sagt: Schau mal, da ist ein Interrupt für dich gekommen, du solltest mal checken ob der für dich ist. Wenn die Treiber aber des net g'scheit erkennen können, dann hast a Problem. Da kann's eben vorkommen, dass zwei Treiber einfach nicht zusammenpassen.
Und bei Soundkarten äußern sich Interruptprobleme meist, dass sie einfach kurz hängen oder so...
Versuch also mal die Soundkarte in einem anderen Slot zu stecken. Soundkarten sind beim IRQ teilweise ziemlich happig. Schau dir mal die Motherboard-Beschreibung an. Da steht meist irgendwo dabei, welche PCI IRQs (A, B, C, D) wie zusammengeschaltet sind. (IRQ = Interrupt Request). Teilweise sind die mit On-Board Sachen doppelt und dreifach belegt. Möglichst schauen, dass der Interrupt für den IDE-Kanal frei bleibt und die Soundkarte möglichst an eigenen hat. Sonst halt durchprobieren, mit welchem Gerät sie zusammenpasst.
Sache ist nämlich die: Jeder Prozessor hat eine Interrupt-Leitung. Daran hängt ein Interrupt-Controller. Beim Ur-PC waren das zwei Stück hintereinandergeschaltet, die insgesamt 15 Eingänge hatten. 8 + 8, aber einer von ersten ist ja vom zweiten benutzt. IRQs braucht man für: Coprozessor, Timer, Tastatur, jede Schnittstelle, Soundkarte teilwesei mehrere, Grafikkarte, Netzwerkkarten, SCSI, Jeder IDE-Kanal usw.
Für was ist der IRQ? Angenommen, du drückst eine Taste, dann meldet das die Tastatur dem Tastaturkontroller, der leitet das an den Interruptcontroler weiter. Der leitet das an den Prozessor weiter. Der macht kurz Pause, schaut im Interrruptcontroler, welcher Interrup ausgelöst wurde - ah der Tastatur-Interrrupt - ok, dann muss ich die Tastaturinterrupt-Routine aufrufen. Diese holt dann den Tastencode vom Tastaturcontroller und schreibt es in den Tastaturpuffer. Von dort kann dann das Anwendungsprogramm die Tasten abfragen. Und genau das gleiche ist, wenn du die Maus bewegst, wenn die Netzwerkkarte Daten erhält, wenn der Timer weitergetickt hat, wenn die Festplatte Daten leifert usw...
Irgendwann sind aber einfach die IRQ-Leitungen ausgegangen. Deswegen haben sie dann IRQ-Sharing eingeführt. Ich glaube das war mit Einführung von PCI. Da hat man dann gesagt, der gesamte PCI-Bus verwendet nur 4 IRQs. Diese 4 kann man 4 IRQs vom Interruptcontroller zuweisen. Da einige on-board Devices auch intern am PCI-Bus hängen, teilen sich die dann IRQs mit Steckkarten.
Das Problem beim IRQ-Sharing: Die CPU bekommt vom Interrruptcontroller den Hinweis, dass ein Interrupt stattfand. Ok, die CPU liest die Interruptnummer vom Interruptcontroller aus. Nur blöd: An der Leitung liegen aber die Soundkarte und die Festplatte. Was mach ich nun? Ich vermute mal, dass bei Windows die das Betriebsystem dann einfach beide Treiber (Soundkarten-Treiber und IDE-Treiber) aufruft, und ihnen sagt: Schau mal, da ist ein Interrupt für dich gekommen, du solltest mal checken ob der für dich ist. Wenn die Treiber aber des net g'scheit erkennen können, dann hast a Problem. Da kann's eben vorkommen, dass zwei Treiber einfach nicht zusammenpassen.
Und bei Soundkarten äußern sich Interruptprobleme meist, dass sie einfach kurz hängen oder so...