Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: meister_yoda am 23. September 2007, 19:00
-
Hallo,
ich habe hier folgendes Problem:
In meinem Kernel habe ich den Zeiger des Interrupts 44h auf eigenen Code im Kernel umgeleitet so wie in Ausgabe 3 beschrieben.
Nun habe ich mal versuchsweise aus meinem Kernel heraus, wie im Bootloader, ein weiteres "Programm" gestartet und bin zu diesem Programm gesprungen.
Das Programm läuft, das habe ich getestet in dem ich mit einem BIOS-Interrupt ein Zeichen auf dem Bildschirm ausgegeben habe. Das Problem ist, wenn ich mein int 44h aufrufen möchte passiert GAR NICHTS!
Wie bekomm ich das hin, dass mein Interrupt auch von ausserhalb des Kernels aufgerufen werden kann?
Vielen Dank schon mal für eure Antworten.
mfg
meister_yoda
-
funktioniert es denn innerhalb des Kernels?
-
Ja, innerhalb des Kernels ist es kein Problem.
-
bochs -> breakpoint beim Einsprungspunkt deiner Anwendung -> danach Singlesteppen durch deine Anwendung und schauen wohin bei der 'int' Instruktion gesprungen wird.
Wie versuchst du es überhaupt zu testen? Bist du dir sicher, dass der Interrupthandler überhaupt aufgerufen wird? Oder wird er garnicht aufgerufen? Mit was versuchst du es zutesten (welcher Emulator? qemu zB hat die Eigenheit einfach mal abzunippeln, wenn ihm irgendwas nicht passt)? Hast du schon versucht das in irgendeiner Weise versucht zu debuggen (bochs debugger zB)? Kannst du evtl. die relevanten Codestücke kommentiert posten?