Autor Thema: Fehler in CDI-AHCI Treiber?  (Gelesen 3756 mal)

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« am: 28. January 2015, 15:37 »
Kann es sein dass die ahci_request Funktion nicht funktioniert? Bei mir kommt nämlich kein Interrupt an und im PIC sind alle Interrupts aktiviert.
Vielleicht stimmt bei mir ja etwas nicht. Hier der Quellcode zu meinem OS: https://github.com/Gurgel100/Kernel/tree/develop
Ich hoffe ihr könnt mir helfen.
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: 28. January 2015, 21:57 »
Womit testest du denn? Ich kann dir definitiv sagen, dass der Treiber auf mindestens zwei OSen läuft, wenigstens unter qemu und Virtualbox.

Meine Vermutung ist, dass deine Implementierung des CDI-Interfaces für Interrupts ein Problem hat, obwohl ich es auf den ersten Blick nicht sehe. Ein paar printfs sollten dir näheres verraten, warum nichts beim Treiber ankommt.
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: 28. January 2015, 22:02 »
Also das Interruptinterface von CDI funktioniert einwandfrei, denn der ATAPI-Treiber funktioniert einwandfrei. Der AHCI-Treiber hängt in der Schleife fest in der Funktion ahci_request. Aber vielen Dank für deine Antwort. Ich habe so dass Gefühl, dass der Speicherbereich des PCI-Gerätes falsch ist.

Ich teste unter VirtualBox. Ich wollte auf meiner Testmaschine auch mal Tyndur laufen lassen aber das stürzt immer mit einem Pagefault ab. Ansonsten teste ich noch auf Bochs, aber ich glaube dort ist es nicht möglich ein ahci-device zu simulieren und mit Qemu kenne ich mich nicht aus.
« Letzte Änderung: 28. January 2015, 22:05 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

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #3 am: 29. January 2015, 16:50 »
Ich habe den Fehler gefunden. Es war ein Problem mit meiner Speicherverwaltung. Aber trotzdem danke für deine Rückmeldung.
Er funktioniert jetzt einwandfrei.
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 #4 am: 29. January 2015, 18:50 »
Cool. :)

Wenn ich deinen Code richtig in Erinnerung habe, ist das Long Mode? 64 Bit war bisher nämlich auch ungetestet.
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: 30. January 2015, 02:04 »
Ja mein Kernel ist für den Long Mode.
Somit kann ich hiermit bestätigen: Der Treiber funktioniert auch im 64-Bit-Modus. :-D
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

 

Einloggen