Autor Thema: Vorhandene S-ATA-Controller werden nicht erkannt  (Gelesen 4800 mal)

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« am: 14. January 2016, 16:07 »
Hallo zusammen,
ich habe seit langem mal wieder mein OS auf realer Hardware laufen lassen. Dabei habe ich bemerkt, dass mein OS nicht alle PCI-Geräte findet. Es findet nämlich den/die S-ATA-Controller des Motherboards nicht. Mein System hat zusätzlich noch eine S-ATA/IDE PCIe Karte eingebaut, da meine CD-ROM Laufwerke über IDE angeschlossen sind, aber das Motherboard keine entsprechenden Anschlüsse besitzt. Diese S-ATA Karte wird erkannt. Wieso werden den die anderen S-ATA Controller nicht erkannt?
Insgesamt erkennt mein OS 21 PCI Geräte darunter fallen, Grafikkarte, Netzwerkkarte, PCI-PCI Bridges, die S-ATA Erweiterungskarte, USB2+3 und PCI-ISA Bridges.
Kann das sein, dass sich die Controller hinter den PCI-ISA Bridges verstecken? Wie und für was verwendet man die?

Ich hoffe jemand kann meine Fragen beantworten.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 14. January 2016, 19:06 »
Normal kann man im BIOS einstellen, ob sich das Ding als IDE oder AHCI ausgeben soll. Ich vermute, das ist bei dir auf IDE-Emulation eingestellt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #2 am: 14. January 2016, 19:17 »
Wenn ich es auf IDE umstelle erkennt mein OS ein PCI-Gerät mehr, aber es ist kein Massenspeichergerät mehr. Ich weiss nicht genau, was es zusätzlich erkennt.

Es also in beiden Modi nicht.

Edit: Das zusätzliche PCI-Gerät das gesehen wird wenn ich auf IDE umschalte ist eine zusätzliche Funktion bei einem Gerät der Klasse 6 und der Unterklasse 1 also eine PCI-ISA-Bridge.
« Letzte Änderung: 14. January 2016, 20:09 von OsDevNewbie »
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

Svenska

  • Beiträge: 1 790
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. January 2016, 03:12 »
Konfigurierst du die PCI-PCI-Bridges korrekt? Vielleicht ist dein Gerät dahinter versteckt.

Die PCI-ISA-Bridge dürfte den Chipsatz mit dem LPC-Bus verbinden. Da sind die ganzen klassischen ISA-Geräte dran, die das System unbedingt braucht, z.B. der SuperIO-Chip für PS/2, COM, LPT und SMBUS. Vielleicht ist dein "zusätzliches Gerät" einfach nur ein Alias für die Legacy-IDE-Ports.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. January 2016, 11:04 »
Ist die Bridges zu konfigurieren nicht normalerweise die Aufgabe des BIOS?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #5 am: 15. January 2016, 15:08 »
Das dachte ich auch und zumindest erkenne ich auch die PCI-Geräte, die sich auf einem Bus befinden, der von einer PCI-PCI-Bridge verwaltet wird. Also denke ich hat das andere Ursachen.

Kann das sein, dass die zusätzliche Karte den onboard Controller "verdrängt"?
Andererseits auf einem anderen Computer wird der Controller auch nicht gefunden und dort befinden sich keine zusätzlichen Steckkarten ausser der Grafikkarte.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 15. January 2016, 18:35 »
Womit schaust du denn nach dem Gerät? Nur mit deinem eigenen Code oder hast du auch mal verglichen, was lspci unter Linux ausgibt?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #7 am: 16. January 2016, 01:46 »
Ich habe es jetzt mal verglichen mit der Asugabe von lspci und da ist mir dann aufgefallen, dass mein Code immer nur die Funktion 0 des Gerätes prüft. Nach dem Fix erkennt es jetzt den onboard SATA Controller und findet somit auch meine SSD und HDD, die daran angeschlossen sind.

Aber mal ne Frage zum CDI ATA-Treiber: Wie wäre es eigentlich, wenn man dort die Unterstützung von mehreren Controller einbaut, denn auf meinem anderen Test-PC habe ich zwei ATA-Controller aber nur der erste wird erkannt => es wird nur das CDROM-Laufwerk erkannt aber nicht die Festplatte, die sich am zweiten Controller befindet. Die Controller sind getrennt auf dem PCI-Bus.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

Svenska

  • Beiträge: 1 790
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 16. January 2016, 02:21 »
Ist die Bridges zu konfigurieren nicht normalerweise die Aufgabe des BIOS?
Meines Wissens ist die Aufgabe des BIOS nur, alle bootfähigen Geräte zu konfigurieren. Das schließt nicht zwingend Geräte hinter einer Bridge ein (die sind dann halt nicht bootfähig). Ob das für ein EFI auch zutrifft, weiß ich nicht und bezweifle es mal.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 16. January 2016, 12:43 »
Ich habe es jetzt mal verglichen mit der Asugabe von lspci und da ist mir dann aufgefallen, dass mein Code immer nur die Funktion 0 des Gerätes prüft. Nach dem Fix erkennt es jetzt den onboard SATA Controller und findet somit auch meine SSD und HDD, die daran angeschlossen sind.
Prüfst du auch ordentlich, ob es überhaupt ein Multifunktionsgerät ist, bevor du die Funktionen prüfst, oder gehst du immer alle Funktionen durch?

Zitat
Aber mal ne Frage zum CDI ATA-Treiber: Wie wäre es eigentlich, wenn man dort die Unterstützung von mehreren Controller einbaut, denn auf meinem anderen Test-PC habe ich zwei ATA-Controller aber nur der erste wird erkannt => es wird nur das CDROM-Laufwerk erkannt aber nicht die Festplatte, die sich am zweiten Controller befindet. Die Controller sind getrennt auf dem PCI-Bus.
Ich bin mir sicher, dass niemand etwas dagegen hat, den Code ins CDI-Repository zu übernehmen, wenn du den Treiber entsprechend erweiterst. Ich denke, man muss ein kleines bisschen aufpassen, dass man reine ISA-Controller nicht kaputtmacht (falls irgendjemand noch sowas hat...) und der erste Controller auch nicht doppelt auftaucht, aber an sich sollte die Erweiterung nicht schwer sein.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #10 am: 16. January 2016, 13:57 »
Ich habe es jetzt mal verglichen mit der Asugabe von lspci und da ist mir dann aufgefallen, dass mein Code immer nur die Funktion 0 des Gerätes prüft. Nach dem Fix erkennt es jetzt den onboard SATA Controller und findet somit auch meine SSD und HDD, die daran angeschlossen sind.
Prüfst du auch ordentlich, ob es überhaupt ein Multifunktionsgerät ist, bevor du die Funktionen prüfst, oder gehst du immer alle Funktionen durch?
Ja, ich überprüfe das oberste Bit des Header-Typs mit
if(header & 0x80){...} //Teste die anderen Funktionen

Zitat
Aber mal ne Frage zum CDI ATA-Treiber: Wie wäre es eigentlich, wenn man dort die Unterstützung von mehreren Controller einbaut, denn auf meinem anderen Test-PC habe ich zwei ATA-Controller aber nur der erste wird erkannt => es wird nur das CDROM-Laufwerk erkannt aber nicht die Festplatte, die sich am zweiten Controller befindet. Die Controller sind getrennt auf dem PCI-Bus.
Ich bin mir sicher, dass niemand etwas dagegen hat, den Code ins CDI-Repository zu übernehmen, wenn du den Treiber entsprechend erweiterst. Ich denke, man muss ein kleines bisschen aufpassen, dass man reine ISA-Controller nicht kaputtmacht (falls irgendjemand noch sowas hat...) und der erste Controller auch nicht doppelt auftaucht, aber an sich sollte die Erweiterung nicht schwer sein.
Mal schauen was ich da tun kann.
Was meinst du denn mit "reine ISA-Controller"? Wenn man die so kaputt macht, dann wäre das doch auch ein Problem mit der aktuellen Methode.

Vielen Dank für Eure bisherigen Antworten.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 16. January 2016, 15:13 »
Mit reinen ISA-Controllern meine ich welche, die an den Standard-I/O-Ports sitzen, zu denen es aber kein passendes PCI-Gerät gibt (damit kann man dann natürlich auch kein DMA machen).
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen