Autor Thema: C Kernel Main Funktion funktioniert nicht.  (Gelesen 14984 mal)

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 19. January 2007, 19:20 »
Das mit der Funktion funktioniert jetzt  :-) und mit der anderen Sache weis ich ja nicht ob das so ausreicht? :?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 19. January 2007, 19:34 »
Hm, wenn es mit .text 0x200 und einem Offset von 0x10000 tut, dann sollte es mit .text 0x10200 und ohne Offset auch funktionieren, oder übersehe ich mal wieder das entscheidende Detail? Daß du jedesmal diese 0x10000 draufaddieren mußt, ist jedenfalls keine Lösung.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 20. January 2007, 11:56 »
Jedenfalls gibt er mir beim Linken, wenn ich das so umändere, eine Fehlermeldung:
kernel32.obj:kernel32.obj:(.text+0x4): relocation truncated to fit: 16 against '_main'

arax

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 15. June 2008, 17:43 »
Ich habe jetzt das gleiche Problem (mit den Adressen), mit 10200 geht es bei mir auch nicht. Gibt es mittlerweile eine Lösung?

PS: Wäre Tutorial-Diskussion oder neuer Thread besser gewesen?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #24 am: 16. June 2008, 07:22 »
hm, am geschicktesten wäre es wahrscheinlich, wenn du einfach mal deine Sourcefiles, Makefiles, etc. irgendwo uploadest und den Link hier postest. Dann kann man das besser (und mit weniger Aufwand auf unserer Seite  :-D ) reproduzieren.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

arax

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 16. June 2008, 15:59 »
Hier die funktionierende Version mit dem aufaddieren [[edit: Datei gelöscht]] 'create.cmd' kompiliert und fügt alles zusammen, bis auf bootsec.asm.

Eigentlich alles von diesem (C-Kernel starten) Tutorial.
« Letzte Änderung: 16. June 2008, 17:12 von arax »

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #26 am: 16. June 2008, 17:04 »
Also, ich denke folgendes: Deine Deskriptoren beginnen bei 0, insofern musst du in kernel.c überhaupt nichts zu der Adresse auf die Text zeigen soll hinzuaddieren. Außerdem solltest du das 0x200 in link.txt durch ein 0x10200 austauschen.

edit: Whoops, ich muss noch schauen ob das Linken dann auch tut...
edit2: Also bei mir funktioniert es, hab allerdings auch Linux :mrgreen:

btw. Du solltest *(.rodata*) innerhalb der .text Sektion im Linkerskript aufnehmen.
« Letzte Änderung: 16. June 2008, 17:26 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

arax

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #27 am: 16. June 2008, 17:09 »
Es geht jetzt alles. Vorher hatte ich auch noch das b800 auf a800 geändert.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #28 am: 16. June 2008, 17:27 »
Umsobesser, trotzdem solltest du meinen Beitrag oben, wegen rodata nochmal lesen. :-) (Der Edit kam nach deinem Post)
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Sapphire

  • Beiträge: 16
    • Profil anzeigen
Gespeichert
« Antwort #29 am: 17. June 2008, 06:20 »
Ich hatte das Problem auch schon als angefangen hab. Ich habe meinen Kernel da nach einem Tutorial von hier gemacht hatte. Weiß nichtmehr welches es war aber die Startadresse in der Linkerdatei war falsch. Werde nochmal nachschauen welches es war vll kan es dann jemand ändern.

[EDIT]
Also ich hab es.
http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_starten
Im Tutorial selbst ist es richtig angegeben aber in den Dateien die man runter laden kann ist im Linkerscribt 0x200 statt 0x10200 eingetragen ;)
Wer gut wenn das mal jemand ändern könnt damit nich nochmehr dieses Problem haben.
[EDIT]

Gruß Sapphire
« Letzte Änderung: 17. June 2008, 06:25 von Sapphire »

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #30 am: 17. June 2008, 08:28 »
erledigt.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen