Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: scales of justice am 09. July 2006, 18:23
-
Für das aktuelle Problem, siehe unten
-
Hi,
also soviel kann ich sagen: Der Kernel wird nicht richtig geladen. Die CPU führt ihn nicht aus. Also wird der Fehler wohl im Bootloader liegen. Wo genau weiß ich aber nicht (kein bock den Code durchzusuchen). Vielleicht hilfts ja.
bitmaster
-
...
-
also soviel kann ich sagen: Der Kernel wird nicht richtig geladen. Die CPU führt ihn nicht aus
woraus schliest du das denn?
ich denk mal das könnte gut am Disketten-Lese-Interrupt liegen, die sind in den BIOSs so unterschiedlich,
ich bau am besten mal ne Funktion ein, die den Inhalt von dem Bereich ausgibt, an den ich den Kernel lade
EDIT:
ich hab jetzt nach geguckt:
wenn ich einfach nicht vom Assemblerkernel in den C-Kernel springe funktioniert alles wie es soll,
d.h. der Kernel wird richtig geladen
dann muss der Fehler woanders sein
-
ich hab jetzt nach geguckt:
wenn ich einfach nicht vom Assemblerkernel in den C-Kernel springe funktioniert alles wie es soll,
d.h. der Kernel wird richtig geladen
dann muss der Fehler woanders sein
Nein, der Kernel wird nicht geladen. Schreibe doch mal zum Test in den Kernel:
mov ah,0Eh
mov al,"X"
int 10h
jmp $
Dann wird kein X ausgegeben, was bedeutet das der Kernel nicht geladen wird.
bitmaster
EDIT: Im übringen ist dein bootloader ziemlich schlampig.
-
Dann wird kein X ausgegeben, was bedeutet das der Kernel nicht geladen wird.
natürlich nicht, im Pmode gibts keine Bios-Interrupts ;-)
Im übringen ist dein bootloader ziemlich schlampig.
was ist an dem schlampig?
-
Ich glaub er nimt sich die Programierrichtlienen der Klingonen zu herze.
9) Einrückungen im Code?! Ich zeige Dir wie man einrückt wenn ich Deinen Schädel einrücke.
4) Ein ECHTER klingonischer Programmierer kommentiert seinen Code nicht!
http://www.c-plusplus.de/klingonen.htm
gruss
-
@scales of justice: Ou, habe nicht gemerkt das du im PM bist. Aber stimmt, jetzt wo du es sagst habe ich mir deinen bootloader noch mal genauer angeschaut. Trozdem finde ich den recht schlampig. Da hat mein ja keinen Durchblick mehr. Hoffentlich wird dein Kernel nicht auch so. Dann wird der bestimmt nicht größer als nen paar KByte.
@Termite: Hehe, der war gut. ^^
bitmaster
-
der Kernel ist ja größtenteils C, deswegen ist der einieges übersichtlicher,
glaub da sind dogar 2 Kommentare oder so drin
also bist du dir nun sicher dass der Kernel nicht geladen wird, oder nicht?
-
jetzt weis ichs:
es liegt am A20-Gate, das wird nicht aktiviert,
der Code den ich benutz (der von Tee-Jay) probiert glaube ich auch nur eine Variante, und die scheint Qemu nich zu mögen
EDIT:
ich kapier das nicht, ich hab jetzt bestimmt 5 verschiedene Codes ausprobiert, aber ich bekom in Qemu das A20-Gate einfach nicht an
er zeit immer A20=1 an, und da er das auch beim start einzeigt, schliese ich, dass es bedeutet, dass es noch nicht aktiviert ist
hat irgendjemand n'Stück Code mit dem man das A20-Gate auch bei Qemu anbekommt?
(nein ich werde nicht GRUB o.ä. benutzen ;-) )
-
Vielleicht nicht benutzen, um dein OS zu booten, aber die passenden Codeschnipsel findest du darin sicher.
-
Jo, ist mir auch aufgefallen. Qemu sagt immer A20=1. Das bedeutet warscheinlich wie blueXseven sagt das es von Anfang an aktiviert ist. Denn bei mir bleibt es immer A20=1. Aber meine Progs die das 21 Bit nutzen funktionieren auch mit Qemu.
bitmaster
-
man, das wär auch zu einfach gewesen, aber ich find den Fehler noch...
...sonst post ich nochmal den aktuellen Code