Autor Thema: Probelm mit Kernel  (Gelesen 6562 mal)

Scorpion

  • Beiträge: 57
    • Profil anzeigen
Gespeichert
« am: 26. July 2004, 08:58 »
Hi Leute,
ich habe einen Kernel in C geschrieben und ihr compiliert und gelinkt. Außer einer kleinen
Warnmeldung des der Linker (ld) keinen Entry-Point gefunden hat, ist nichts an errors oder so gekommen. Ich habe en bootloader aus lowlevel 1 genommen und ihn mit folgendem kommando kopiert:

copy bootloader.bin + kernel.bin image.raw

Das Image habe ich auf Floppy (mit rawrite) gezogen und es getestet! aber es kam nichts!
Es stand da:
Boot from Floppy..OK

Aber dann kam irgendwie nix mehr!
So sieht der Code meines Kernels aus:
int main(void)
{
  char *str = "Hello, world", *ch;
  unsigned short *vidmem = (unsigned short*) 0xb8000;
  unsigned i;
  for (ch = str, i = 0; *ch; ch++, i++)
    vidmem = (unsigned char) *ch | 0x0700;
  for (;;)
    ;
}

Mit folgenden Einstellungen habe ich es compiliert und gelinkt:
gcc -c -ffreestanding -fwritable-strings -nostdinc -O3 -Wall *.c
ld -Ttext 0x100000 --oformat elf32-i386 -O 1 -o kernel kernel.o

Was kann ich machen?
MfG, Scorpion

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. July 2004, 09:06 »
Hiho,

wenn überhaupt musst du "--oformat binary" angeben, es sei den du hast einen elf loader geschrieben...

Springt dein Bootloader in den PMode und lädt den Kernel an Adresse 0x100000 (1MB)? Bzw. springt der Bootloader dahin?

Hast du mehrere C Quelldateien? Wenn ja, kann es sein, das sie anderen Dateien vor der Kernel.c gelinkt werden, und dadurch der Einsprungspunkt (main) nicht mehr ganz vonre im Code ist, mach doch lieber ne asm datei, die zu main springt, und immer(!) ganz vorne im Code steht...

MfG GhostCoder
A man, a legend!

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #2 am: 26. July 2004, 10:39 »
Ohne jemanden beleidigen zu wollen, sieht das sehr danach aus als ob das meiste hier einfach übernommen worden zu sein, ohne zu wissen was man da tut.

Da du nur eine Kernelfile hast und der Bootloader aus dem Mag 1 NICHT in den PMode schaltet, geh ich davon aus das du nicht im PMode bist.
Folglich funzt ein C Kernel da nicht.

Und ohne PMode ist die 1 MB Grenze sehr heikel, weshalb das auf dauer auch nicht mehr funzen wird.
----------------------
Redakteur bei LowLevel

Scorpion

  • Beiträge: 57
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 26. July 2004, 10:48 »
War ja nur zu Beispielzwecken .....
Schickt mir mal bitte einen bootloader für den pmode

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 26. July 2004, 12:19 »
> War ja nur zu Beispielzwecken .....
> Schickt mir mal bitte einen bootloader für den pmode
Klar, aber nimm doch am besten gleich meinen Kernel und nen ihn in ScorpionOS um, oder warte...ich mach das für dich, und schick ihn dir per mail, ok?

MfG GhostCoder
A man, a legend!

Scorpion

  • Beiträge: 57
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 26. July 2004, 13:16 »
Ich hatte schon meinen EIGENEN kernel geschrieben, nur wollte ich erst mal mit dem hier testen. ach du liebe zeit! Bitte schickt mir mal einen bootloader der im pmode startet, denn ich will c kernel schreiben (hab ich auch schon).

PS: Wer gerne C-Kernel schreibt, der sollte sich von www.scorpion.coolix.com meinen OS-header downloaden!

Scorpion

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #6 am: 26. July 2004, 13:27 »
ich frag mich wie du nen schon nen Kernel schreiben kannst wenn du nicht weisst wie der geladen wird
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 26. July 2004, 13:42 »
Hiho,

was ist den (d)ein "OS-Header"?
Etwa das "Es trat ein Fehler auf: Datei konnte nicht gefunden werden"?
Wenn ja, Respekt!!

Ansonsten stimme ich lobmann voll zu :)

P.S.: Deine Logik find ich echt witzig: Du willst einen C Kernel schreiben, den du auch schon geschrieben hast??? In der Schule nannte man das abschreiben, und dafür gibt's ne 6! :)

MfG GhostCoder
A man, a legend!

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
A man, a legend!

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #9 am: 26. July 2004, 17:38 »
Also das du einen C-Kernel geschriebe hast mag ich ja nicht mal zu bezweifeln...

Aber hast du ihn denn auch schon getestet ob er geht?
Das geht nämlich schlecht wenn man nichtmal einen Bootloader hat, geschweige denn weiß wie man in den PMode schaltet.

Wer sich um so essentielle Dinge drückt, der braucht mit einem C-Kernel nicht anfangen, weil spätestens wo es wieder an die IDT geht, oder an ASM-Code bleibt man eh hängen...

Nicht böse gemeint. Sollte eher mal so als Tipp gesehen werden, sich nicht immer von den komplexen Sachen zu drücken.
Ich habs auch nicht gleich in 5 min geschafft in den PMode zu schalten.
Aber dafür weiß ich nun wie es geht und kenn mich auch schon recht gut im PMode aus.

mfg
TeeJay
----------------------
Redakteur bei LowLevel

Scorpion

  • Beiträge: 57
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 27. July 2004, 10:14 »
Da ich hier ja keine Antwort bekomme, habe ich mich selbst in Google gestürzt und auch einen gefunden. Mein OS-Header ist leider wieder offline, da ich verbesserungen dran vorgenommen habe. und folgendes: mein os funzt.


Danke für nichts,
Scorpion

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 27. July 2004, 13:23 »
Hiho,

schau mal auf meine erste Antwort! Darauf hast du ja nicht reagiert.
Außerdem ist hier keiner verpflichtet dir antworten zu geben!!
Und das du erst hier fragen stellt, und dann googelst, find ich noch schlimmer...

P.S.: Und jetzt erklär mir mal, was ein OS-Header ist? Ich weiß es wirklich nicht!

Da kann man sich nurnoch an kopf packen...,
MfG GhostCoder
A man, a legend!

Scorpion

  • Beiträge: 57
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 27. July 2004, 14:27 »
falls du dich ein bisschen in c++ oder c auskennst, weisst du auch das ein header eine Datei ist, die man wie folgt einbindet:
#include <name.h>
ein os-header ist in dem fall ein HEader mit wichtigen funtkionen für ein operating system!

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 27. July 2004, 15:03 »
Hiho,

ich denke, ich kenne mich ein bisschen mehr aus als du, und das wohl nicht nur in c(++). aber egal :)

Naja, ein Header ist nicht nur eine Datei, daas wort header verwendest du in 1000 Bereichen, also komm mir nicht so!!

Aber trotzdem noch viel spass mit deinem "OS-Header"...

MfG GhostCoder
A man, a legend!

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #14 am: 27. July 2004, 15:39 »
Naja ich kann dir auch tausend C, C++ header schreiben nur ob die Funktionen dann auch programmiert sind ist die andere Frage
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #15 am: 27. July 2004, 16:03 »
@Scorpion

Ausserdem kommst die mir echt nen bischen dreist rüber tut mir leid;)
Du willst einfach nich verstehen das z.B. GhostCoder oder TeeJay, dir eigentlich nur Tips geben wollen, anstatt dessen bist du patzig und stellst dich hin als wüsstest du wie mans macht und würdest die in den Schatten stellen, kommt mir jedenfalls so vor.

Sorry aber das macht mich traurig und agressiv weil ich finde das das hier ne Super Community ist an die man sich mit Fragen wenden kann, und die hilfsbereit ist.

Nur wenn man merkt das einer nich dazu lernen will, und seine Hausaufgaben nich machen möchte fin dichs Tschuldigung wenn ichs sosage zum kotzen. Und wenn das so ist hast du meiner Meinung nach hier auch nichts verloren.

Ich mein nur Hilfe kann man sich holen aber machen muss mans halt selber.
Ich glaube auch wenn ich mich hier etwas undiplomatisch ausdrücke, im grunde sind die meisten aktiven meiner Meinung hier.

Also Nichts für ungut
MFG Lobmann
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 27. July 2004, 16:55 »
Ich denke lobmann hat hier recht nett ausgedrückt was die meisten von uns in den letzten Tagen sagen wollten.

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #17 am: 27. July 2004, 17:11 »
Mich verwirrt das etwas.

Zum einen kommen da lauter .... naja sagen wir mal "Anfängerfragen" und dann präsentierst du uns hier gleich ein "fertiges" OS mit C-Kernel.

Da fragt man sich halt in wie weit du das selbst gemacht hast.....

Den Bootloader hast du "gaklaut" wie du schon gesagt hast.
Und dein C-Kernel müsste im Real-Mode laufen wenn ich das aus deinen Sources entnehme kann....ich sehe da nämlich keinen SPrung in den PMode.
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 27. July 2004, 17:36 »
Zudem Turbo C (zumindest die alten Versionen) doch noch für DOS programmiert ist und daher 16Bit-RealMode Code erzeugen sollte oder? (ich kenne mich da ja selbst nicht so richtig aus)

 

Einloggen