Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - sov21

Seiten: [1]
1
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 10:59 »
Hallo,
wie ich schon unter dem anderen Thread erwähnt habe, finde ich daß ihr tolle Arbeit geleistet habt. Weil ich jedoch ein totaler Anfänger bin habe ich gleich mal ein paar Fragen dazu.

1. Wieso ist die Datei "new" im Include Verzeichnis ohne Dateiendung, hat
    das einen bestimmten Grund?
2. Warum sind manche Dateien mit "*.ld" und "*.inl" bennant, einfach aus
    Spaß oder hat das eine Wirkung?
3. Der Kernel unterstütz ja schon C++. Wird C++ schon voll unterstützt, oder
    muß man noch auf etwas achten (zB globale Klassen)?
4. Sind alle Funktionalitäten, wie sie die Dateinamen versprechen schon
    enthalten (Paging,ints abfabgen,multiboot fähig für Grub)?
5. Wird Grub zum booten schon verwendet? Weil hab den noch gar net
    gesehen.

Vielen Dank schon mal im Vorraus.
Gruß sov21
2
tyndur / Bekomme Comm-OS nicht zum booten!
« am: 12. May 2005, 21:02 »
Hallo,
habe wie in der Anleitung die Files von Comm-Os compiliert und gelinkt.
Mit Rawwrite die Boot.bin auf disk kopiert und anschließend Boot.ini in disk kopiert.
Dann noch die kernel.bin reinkopiert.
Jetz hab ich das Laufenlassen wollen. Der rechner fährt seine Bios routinen, aber Nach "Searching for Boot Record from Floppy...OK"
Passiert nix mehr, außer daß ich einen blinkenden Cursor darunter sehe.
Der Bildschirm wurde nicht gelöscht. Ich kann alle Bios Infos noch sehen.
Nun habe ich den Vesa eintrag aus Boot.ini rausgenommen.
Gleiches Ergebnis. Dann habe ich Kernel mit einem von mir ersetz,der mittels ports etwas normalerweise auf den screen printed, jedoch hat sich nix getan.
Bekomme immer das selbe Ergebnis, so als ob er nix machen würde.
Was mache ich falsch??
Gruß sov21
3
Lowlevel-Coding / Os, was macht man wann und wie???
« am: 26. March 2005, 00:42 »
Hallo,
ich habe schon etwas rumprobiert mit dem thema Os-progrmming.
Aber immer noch kein Durchblick.
Also meine Frage(n), ob ich das so richtig sehe:

Zu erst schreibt man einen bootloader und befindet sich im 16bit Modus (Realmode). Der Bootloader darf nicht größer als 512 byte sein?!
Dieser läd den Kernel in den Speicher und springt hinein?!
Wenn der Kernel nun in C geproggt ist, ist er dann automatisch 32bit?
Also muß ich vorher in den PM schalten, oder kann ich das in dem C-Kernel selbst machen??
Wie groß darf den dieser Kernel werden?? Kann es da Probs geben, wenn man die ganze zeit Module mit dem Kernel zusammenlinkt und dieser immer weiter wächst?

Wie ist das mit dem FAT 12 - Bootloader? Der läd doch einen kernel aus dem Dateisystem eine Diskette. Nur wie bekomme ich den bootloader in den bootsektor der diskette, ohne das Dateisystem zu zerschießen?
Wenn ich wie im forum vorgeschlagen den Rawwrite nehme, kann man denn dann die diskette in WinXP noch lesen und den Kernel rein kopieren?
Weil wenn das nicht mehr geht, was bringt mir dann das laden des kernels aus dem Dateisystem wenn ich eh Rawrite benötige?!

Ihr seht schon tausend Fragen.
Weiter:
Also wenn ich nun im PM in meinem C-Kernel bin.
Dann muß ich die Interrupts irgendwie umlenken auf die IDT oder so.
Wo muß ich denn die IDT anlegen? Im bootloader vor dem PM oder kann ich das auch im PM in meinem C kernel irgendwie mit einer Funktion oder so anlegen?
Wann muß ich den PIC umproggen? Vor erstellen der IDT und ISR oder danach?
Wie ist das mit dem A20-Gate? Das habe ich zu zeit im C-kernel nach betreten des PM direkt erledigt.

Vielen Dank fürs lesen und ich hoffe auf viele Tipps und Hilfe :-(
Bin etwas verwirrt mit dem ganzen.
Gruß sov21
4
Lowlevel-Coding / Merkwürdiges Problem
« am: 07. September 2004, 19:43 »
Hi,
ich hab ein ganz merkwürdiges Problem an dem ich jetzt 6 std dran sitze und es einfach nicht verstehe:
Dies ist meine main.c:

const char *tutorial3;
const char *Test;
//extern unsigned int EnableA20Gate();

void main()
{
    //Bildschirm löschen
    //clrscr();
    //Begruessung
    //writeln("Wilkommen in Sovs Os");
    //A20Gate aktivieren
    //writeln("Versuche A20Gate zu aktivieren...");
      A20gate_enable();
      //Endlosschleife
      for(;;);
}

const char *tutorial3 = "Sov`s Os in Protected-Mode";
const char *Test = "Dies ist ein Test in Main.c";

Immer wenn ich das Kommentar vor clrscr weg nehme wird der screen geleert, jedoch die Writeln in A20gate_enable nicht mehr angezeigt.
Mit kommentar erscheinen dann die Ausgaben von A20gate.
Wenn ich das Kommentar vor writeln("Wilkommen in Sovs Os"); weg nehme
passiert in bochs folgendes: Panic Device CPU
Message: prefetch: running in bogus memory
Kill simulation und dann stürzt er ab.
Das gleiche passiert, wenn ich die kommentare vor //writeln("Versuche A20Gate zu aktivieren..."); weg nehme.
Aber in der funktion a20gate... habe ich auch ausgaben mit writeln("Text");
und die werde einwandfrei ausgegeben.
Help!!!
Wer weiß was das sein könnte??
Ich habe echt keine Ahnung mehr woran es liegen könnt.
Gruß sov21
5
Lowlevel-Coding / A20Gate aktivieren in C
« am: 31. August 2004, 16:20 »
Hallo,
ich habe schon wieder ein Problem.
Ich habe das A20Gate Tut gelesen und versuche nun es in meinem Kernel über
einen funktionsaufruf zu aktivieren.
Die funktion die ich aufrufe sieht folgendermaßen aus:

void A20gate_enable()
{
    unsigned char RetVal;

    //A20-Gate aktivieren
    //A1:
    RetVal = in(0x64);    //Tastatur-Controller Statusbyte lesen
    if (RetVal == 0x2)
    {
        writeln("War 2!");
    }
    else
    {
        writeln(RetVal);
    }
    writeln(0x2);
}
in ist eine andere Funktion, die aber funktioniert:
unsigned char in(unsigned short _port)
{
  // "=a" (result) means: put AL register in variable result when finished
  // "d" (_port) means: load EDX with _port
  unsigned char result;
  __asm__  ("in %%dx, %%al" : "=a" (result) : "d" (_port));
  return result;
}
Nun zu meinem Problem:
eigentlich möchte ich Retval auf 00000010b testen.
Wie kann ich das machen?? Geht das so wie ich es mit dem Hex 0x2 mache?
Irgendwie sagt der mir aber, das ich als rückgabewert allerdings nicht 0x2 habe.
Dann wollte ich sehen was zurück gegeben wird und habe Retval auf Bildschirm ausgeprintet und bekomme den Buchstaben "S".
Was geschieht da? Wie kann ich den Rückgabewert auf 00000010b testen?
Gruß sov21
6
Lowlevel-Coding / Fragen zu Bootloader Tut
« am: 26. August 2004, 18:40 »
Hallo,
hab gerade das Bootloader Tut gelesen.
Und ein paar Dinge sind mir leider noch unklar, liegt wahrscheinlich daran, daß ich ein totaler noob bin.
Also:
1. zu func_ReadFatEntry:
Wenn der Kernel über mehr als einen Sektor geht, dann wird diese Funtion doch    mehrmals aufgerufen. Dann wird ax immer wieder überschrieben, und deshalb ax immer auf den Stack gepusht?! Meine Farge, wie wird denn nun sicher gestellt, daß alle Sektoren auf dem Stack genau hintereinander liegen un nichts dazwischen, bzw nichts überschrieben wird ??

2. Wenn ich jetzt die Datei vollständig auf dem Stack habe, wie wird denn dann der code der da nun liegt zur Ausführung durch den Prozessor gebracht? Wie geht sowas generell??

Also wie ihr seht hab ich nur echt dumme Fragen.
Hoffe mir kann dennoch jemand weiter helfen.
Gruß sov21
Seiten: [1]

Einloggen