Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Noobtotal am 23. July 2006, 23:53

Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 23. July 2006, 23:53
Hallo! Ich bin neu hier! :D

Ich schreib momentan an meinem ersten ernsthaftem Kernel und habe daher noch recht wenig Erfahrung mit OS-Devving.
Daher möchte ich wissen, wie ich es am besten angehe:
Gleich A20-Gate umstellen und PM aktivieren oder erst mit 16 Bit und einem Megabyte begnügen und Erfahrung sammeln? :?:

// Edit by hannibal: Ein Emoticon pro Ausdruck reicht.
Titel: Neuling braucht Hilfe!
Beitrag von: nooooooooos am 23. July 2006, 23:59
Ich hab gleich mit A20 u PM angefangen!!!
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 24. July 2006, 00:08
Ah, könntest du mir n paar Tipps geben?
Zum Beispiel, kann ich mit dem 62-Seitigen Datenblatt über den Floppy-Controller kann ich echt nichts anfangen. Kommt man denn als Anfänger schon ohne BIOS-Interrupts aus? Is eigentlich was was ich so schnell nicht missen möchte!
Titel: Neuling braucht Hilfe!
Beitrag von: bluecode am 24. July 2006, 02:44
Zitat von: Noobtotal
Zum Beispiel, kann ich mit dem 62-Seitigen Datenblatt über den Floppy-Controller kann ich echt nichts anfangen.


Ich hoffe für dich, dass es nicht an einer Englischphobie liegt. Ansonsten schau dir einfach mal Quellcode von anderen Betriebssystemen an. Aielleicht klären sich da viele Fragen. Evtl. auch die anschaffung eines Buches in Betracht ziehen. Ich empfehle da "PC Hardwarebuch: Aufbau, Funktionsweise, Programmierung". Das gibt ein "Feeling" für die Hardware und sehr viele wichtige Erklärungen. Ich könnte mir denken, dass sich damit viele Probleme lösen lassen.
Aber ich würde dir (siehe weiter unten) nicht vorschlagen sich mit dem floppy disk controller schon so früh auseinanderzusetzen. Der ist schon relativ schwer zu verstehen (Ich mein anderen Code c&p, dass kann jeder, aber ob man dadurch was verstanden hat? :wink: ).

Zitat
Kommt man denn als Anfänger schon ohne BIOS-Interrupts aus?

Ich denke allgemeine Kenntnisse über den realmode schaden definitiv nicht. Ansonsten ja, auch Anfänger können ohne BIOS Interrupts auskommen. Einfach Dinge wie Textausgabe, CMOS, PIC, PIT kann man relativ einfach implementieren imho und man sieht da natürlich auch schnell Erfolg. Was ja sehr wichtig für die Motivation ist.
Titel: Neuling braucht Hilfe!
Beitrag von: bitmaster am 24. July 2006, 11:11
Also ich habe 2 Jahre nur im RM gearbeitet und bereue überhaubt nichts. Ich finde es für Anfänger wirklich viel besser. Denn man lernt die BIOS-Interrupts kennen, lernt die BDA kennen, lernt das Video-Subsystem kennen und lernt die Segmentierung im RM kennen. Das sind alles Sachen die man im PM nicht brauchst. Na gut, den Video-Subsystem kann man evt. doch brauchen. Also ich hätte mir am Anfang nicht zugetraut Sachen mit dem FDC zu laden anstatt über den schönen einfachen "int 13h". Also für Anfänger würde ich eindeutig den RM empfehlen.

bitmaster
Titel: Neuling braucht Hilfe!
Beitrag von: nooooooooos am 24. July 2006, 17:57
Zitat von: bitmaster
Also ich habe 2 Jahre nur im RM gearbeitet und bereue überhaubt nichts. Ich finde es für Anfänger wirklich viel besser. Denn man lernt die BIOS-Interrupts kennen, lernt die BDA kennen, lernt das Video-Subsystem kennen und lernt die Segmentierung im RM kennen.

Hehe jaja wenn man gerne Sachen über veraltetes Zeugs lernt.....Aber gerade auch Treiber schreiben usw. hat auch seine Reize.....Auch Techniken mit Modulsystemen und Paging kann man im RM kaum machen......

Meine Meinung
Titel: Neuling braucht Hilfe!
Beitrag von: Thoth am 24. July 2006, 18:24
Er hat ja nicht gesagt, dass er auf ewig im RM bleiben will. Die Leute von Intel und Microsoft haben auch am Anfang mit dem Realmode gearbeitet, bevor sie sich weiter gewagt haben und ich machs genauso: zuerst mal ein stabiles Fundament schaffen und dann langsam drauf aufbauen.
Titel: Neuling braucht Hilfe!
Beitrag von: nooooooooos am 24. July 2006, 18:31
Geht auch....Aber wir sind jetzt auch 20 Jahre weiter als zu Anfangszeiten von M$ oder IBM....

Das meiste RM Zeugs braucht man nicht mehr und micht würde es gewaltig anscheissen immer nach Offsets und Segmenten zu schauen.....Und wenn mann immer nur die Bios-Ints benutzt bringt das OS coden auch nicht so wahnsinnig viel....


Immer noch meine Meinung  :lol: Hehe
Titel: Neuling braucht Hilfe!
Beitrag von: bluecode am 24. July 2006, 18:32
Zitat von: Thoth
zuerst mal ein stabiles Fundament schaffen und dann langsam drauf aufbauen.

Falls du damit ein Wissensfundament meinst, ok, _kann_ hilfreich sein, aber  eigentlich kann man den ganzen Müll über RM & BIOS Interrupts im Proteced-Mode getrost wieder vergessen. Falls du damit ein Sourcecodefundament meinst, dann mit Sicherheit nicht. Du kannst deinen ganzen Code (außer Bootsektor) wieder wegschmeißen und neu anfangen.

edit: @noooos: Ich stimme dir natürlich zu :)
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 24. July 2006, 21:49
Ich hab nur schon lang nichts mehr gecodet, daher bleib ich zum üben erst mal im RM!
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 24. July 2006, 22:22
Hab mich umentschieden! Will lieber gleich in den PM! Nur bräucvhte ich da ein wenig Hilfevon euch! Ich hab hier mal ein paar Fragen:
Titel: Neuling braucht Hilfe!
Beitrag von: kevin am 24. July 2006, 22:33
Zitat von: Noobtotal
Muss ich den PIC neu programmieren und was bringts?
Wo gibts ein gutes Tastaturtreiber Tutorial?
Wo gibts ein gutes FDC Tutorial?

Versuch für den Anfang erstmal, unfallfrei in den PM zu kommen - heißt, Deskriptortabellen sinnvoll setzen und sowas. Damit kann man sich lang genug aufhalten (zumindest beim ersten Mal hat es bei mir gedauert). Wenn das steht, kannst du dir mal langsam Gedanken über den PIC machen.

Zitat
Kann man fürn Anfang das direkte schreiben in den Framebuffer als Grafik-Trreiber gelten lassen?

Klar, warum nicht? Ich wüßte nichtmal, warum ich das auf "für den Anfang" einschränken würde. Ist nicht wirklich optimiert, aber ein Treiber ist es.

Zitat
Protected Mode mit dem Bootloader oder mit dem Kernel anschalten?

Ich weiß, das gibt wieder eine sinnlose Diskussion, aber: Mit GRUB. ;)
Titel: Neuling braucht Hilfe!
Beitrag von: thetrue am 24. July 2006, 22:35
1. PIC ist sehr wichtig ... da er die Hardware auf IRQs "umleitet" ...
2. Tastatur treiber ist sehr simple ;) hier (http://www.marjorie.de/ps2/ps2_keyboard.htmhier), hier (http://www.geocities.com/SiliconValley/Campus/1671/docs/keyboard.htm)
3. Zum FDC kann ich dir nicht viel sagen (habe da selber noch Probleme ;)) aber hier (http://www.isdaman.com/alsos/hardware/fdc/floppy.htm)
4. ich verstehe deine Frage nicht ... Aber Vesa reicht voll aus ;)
5. Ich denke man sollte PMode in dem Kernel erst einschalten ...
Titel: Neuling braucht Hilfe!
Beitrag von: Jidder am 24. July 2006, 22:41
Zitat von: Noobtotal
Protected Mode mit dem Bootloader oder mit dem Kernel anschalten?


Im Bootloader. Im Kernel machen es viele Anfänger zu kompliziert und kriegen nur Probleme.
Titel: Neuling braucht Hilfe!
Beitrag von: thetrue am 24. July 2006, 22:42
Zitat von: PorkChicken
Zitat von: Noobtotal
Protected Mode mit dem Bootloader oder mit dem Kernel anschalten?


Im Bootloader. Im Kernel machen es viele Anfänger zu kompliziert und kriegen nur Probleme.

hmm, ok hast recht es macht sinn im Bootloader PMode einzuschalten ... muss ich mal bei mir ändern :P
Titel: Neuling braucht Hilfe!
Beitrag von: bitmaster am 24. July 2006, 22:44
Zitat von: thetrue
1. PIC ist sehr wichtig ... da er die Hardware auf IRQs "umleitet" ...
2. Tastatur treiber ist sehr simple ;) hier (http://www.marjorie.de/ps2/ps2_keyboard.htmhier), hier (http://www.geocities.com/SiliconValley/Campus/1671/docs/keyboard.htm)
3. Zum FDC kann ich dir nicht viel sagen (habe da selber noch Probleme ;)) aber hier (http://www.isdaman.com/alsos/hardware/fdc/floppy.htm)
4. ich verstehe deine Frage nicht ... Aber Vesa reicht voll aus ;)
5. Ich denke man sollte PMode in dem Kernel erst einschalten ...


1: Die Hardware auf IRQs umleitet???? Wie bist du denn drauf? Damit kannst du den IRQs Interrupt Adressen bzw. Nummern zuleiten. Das bedeutet z.B. das der IRQ0 auf den int 20h zeigt.

2: Sagt einer der noch einen Tastaturtreiber von 10% hat. Ich progge z.Z. auch an einem PM Tastaturtreiber. Ist gar nicht so einfach das mit seinem OS zu kombinieren. Würde ich für den Anfang nicht empfehlen.

3: Schau dir mal das Intel Manual zum FDC an.

4: Jo, VESA is good. ^^ Aber du brauchst später soweiso API Funktionen.

5: Ich denke auch im Kernel. Oder du schaltest ihn im Bootstrap ein aber im Kernel legst du 'ne neue gdt idt etc.

bitmaster
Titel: Neuling braucht Hilfe!
Beitrag von: thetrue am 24. July 2006, 22:46
Zitat von: bitmaster
Zitat von: thetrue
1. PIC ist sehr wichtig ... da er die Hardware auf IRQs "umleitet" ...
2. Tastatur treiber ist sehr simple ;) hier (http://www.marjorie.de/ps2/ps2_keyboard.htmhier), hier (http://www.geocities.com/SiliconValley/Campus/1671/docs/keyboard.htm)
3. Zum FDC kann ich dir nicht viel sagen (habe da selber noch Probleme ;)) aber hier (http://www.isdaman.com/alsos/hardware/fdc/floppy.htm)
4. ich verstehe deine Frage nicht ... Aber Vesa reicht voll aus ;)
5. Ich denke man sollte PMode in dem Kernel erst einschalten ...


1: Die Hardware auf IRQs umleitet???? Wie bist du denn drauf? Damit kannst du den IRQs Interrupt Adressen bzw. Nummern zuleiten. Das bedeutet z.B. das der IRQ0 auf den int 20h zeigt.

2: Sagt einer der noch einen Tastaturtreiber von 10% hat. Ich progge z.Z. auch an einem PM Tastaturtreiber. Ist gar nicht so einfach das mit seinem OS zu kombinieren. Würde ich für den Anfang nicht empfehlen.

3: Schau dir mal das Intel Manual zum FDC an.

4: Jo, VESA is good. ^^ Aber du brauchst später soweiso API Funktionen.

5: Ich denke auch im Kernel. Oder du schaltest ihn im Bootstrap ein aber im Kernel legst du 'ne neue gdt idt etc.

bitmaster


öhm zu 1. OK, sollte mich anders ausdrücken ;)
2. FDC ist für mich schwieriger als Tastatur treiber!
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 24. July 2006, 23:07
Jaja, ich weiss, ich weiss. Ich gehöre ein bisschen zu der Sorte, die alles auf einmal implementieren will und dann nichts richtig funktionierend implementiert. Na hoffentlich kannich mich ein bissschen am Riemen reissen, sonst wird das nix mit dem eigenen OS.  :evil:  :cry:
Ansonsten: danke für eure Hilfe! Aber ich muss sagen, ihr seit euch über den PMode und dessen Aktivierunds-Position nicht besonders einig! :lol:

// Edit by hannibal: Again - ein Emoticon pro Ausdruck reicht. Nicht boese gemeint.
Titel: Neuling braucht Hilfe!
Beitrag von: thetrue am 24. July 2006, 23:08
Zitat von: Noobtotal
Aber ich muss sagen, ihr seit euch über den PMode und dessen Aktivierunds-Position nicht besonders einig! :lol:  :lol:  :lol:  :lol:  :lol:  :lol:  :lol:


tja, so sind wir halt :D
Titel: Neuling braucht Hilfe!
Beitrag von: hannibal am 25. July 2006, 07:00
Ich kann dir nur empfehlen, dir mal ein Grub Image zu holen und ein einfaches Assemblerfile zu schreiben mit dem du in eine C/Assembler Routine springst um z.B. ein Zeichen auszugeben. Wenn du soweit bist, kannst du schon mal sagen, dass du eine grosse Huerde ueberwunden hast. :)

Lg, Alex
Titel: Neuling braucht Hilfe!
Beitrag von: nooooooooos am 25. July 2006, 08:40
Also was ich dann vor den Treibern noch machen würd:
- Interrupts aktivieren (IDT....)
- Taskverwaltung
- Paging (sonst musst du nacher alles ändern)

Wenn du nicht Grub verwenden willst, kannst du auch mal den Bootloader des aktuellen Magazins anschauen...Der schaltet in den PM und aktiviert Paging.


Nooooooooooooooos
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 25. July 2006, 12:00
Also ich würde mal Interrupts und Tasking aussen vor lassen. Das wär ungefähr so, wie wenn ich im Sitzen ein exzellenter Fussballer wäre, aber nicht in der Lage bin aufzustehen. Soll heissen: was nutzen mir die ganzen Sachen, die von Anwenderprogrammen genutzt werden, wenn ich dem Kernel nicht sagen kann, was er tun soll. Und dazu ist halt heutzutage ein Tastaturtreiber von nöten!
Titel: Neuling braucht Hilfe!
Beitrag von: hannibal am 26. July 2006, 06:23
Dir ist schon klar, dass du Interrupts/IRQs fuer einen Tastaturtreiber brauchst? :) Abgesehen davon, sobald du einmal Interrupts aktivierst (sti), ist es sehr hilfreich funktionierende Exception-Routinen zu haben - hilft beim Debuggen.

Lg, Alex
Titel: Neuling braucht Hilfe!
Beitrag von: bluecode am 26. July 2006, 06:46
Was auch immer sti mit Exceptions zu tun hat...  :wink:
Titel: Neuling braucht Hilfe!
Beitrag von: hannibal am 26. July 2006, 06:54
Zitat von: bluecode
Was auch immer sti mit Exceptions zu tun hat...  :wink:


Es hat durchaus was damit zu tun - meiner Meinung nach. Sobald du die Interrupts aktivierst koennen bei kleinen Fehlern in der GDT oder IDT diverse Exceptions ausgeloest werden, die, wenn sie nicht behandelt werden, ganz schnell einen Triplefault hervorrufen, und man kann sich brausen gehen.
;)
Titel: Neuling braucht Hilfe!
Beitrag von: bluecode am 26. July 2006, 07:15
Zitat von: hannibal
...kleinen Fehlern in der GDT oder IDT diverse Exceptions...

Für so zeugs verwendet man normalerweise bochs (unter Windows: bochs_dbg, unter Linux selberkompiliert). Das zeigt dir jede Exception die geschmissen wird. Wenn das noch nicht hilft im singlestep durch und evtl. registerdumps machen... Aber Recht hast du trotzdem. Du zwingst mich nur so spät Abends noch um fünf Ecken zu denken & irgendwelcheHieroglyphen ( :arrow: j/k ;) ) zu entschlüsseln  :lol: Wie soll ich da noch mitkommen :?:
Titel: Neuling braucht Hilfe!
Beitrag von: hannibal am 26. July 2006, 07:20
So spaet? Es ist frueh...ich sitz seit 1 1/2 Stunden in der Arbeit! :?

Aber auch du hast recht. Bochs Debug ist sicher auch eine nette Loesung.
Titel: Neuling braucht Hilfe!
Beitrag von: bluecode am 26. July 2006, 07:27
Zitat von: hannibal
So spaet? Es ist frueh...ich sitz seit 1 1/2 Stunden in der Arbeit! :?

:P Ich hab mein ABI in der Tasche und hab jetzt erstmal frei bis zum Zivi ;) Und ich bin seit gestern 11Uhr früh am PC ;) => jetzt ist spät

und bochs ist wirklich hammer, wenn man weiß wie man ihn benutzt.

@noobtotal: Ich würd auch erst mit interrupt, paging, multitasking anfangen, bevor ich viele treiber schreiben würde. Große ausnahme ist natürlich ne möglichkeit strings/ints auszugeben.
Titel: Neuling braucht Hilfe!
Beitrag von: Noobtotal am 26. July 2006, 13:28
OK, Interrupts und Paging: ja, Multitasking: nein!
Ich hab nähmlich nicht vor, in nächster Zeit überhaupt irgendwelche Anwenderprogramme oder Unterstützung für die rauszugeben!
Und wenn, dann lass ichs daweil noch Singletaskewd!
Aber apropos Multitasking:
Ist dieses Tutorial für Multitasking auf TSS Basis gut? Ich meine, ist TSS antiquiert oder darf man das noch nutzen in einem OS was möglichst modern sein soll?
Titel: Neuling braucht Hilfe!
Beitrag von: nooooooooos am 26. July 2006, 15:13
Ich finde es geht einfacher wenn du Softwaremultitasking verwendest. Da musst du nicht für jeden Task einen Eintrag in der GDT usw. anlegen.
Titel: Neuling braucht Hilfe!
Beitrag von: ST-225 am 26. July 2006, 15:52
Multitasking auf hardwarebasis funktioniert meines wissens nach auf 64-bit PC-Architekturen eh nicht mehr. Ich würde also Softwaretasking verwenden.
Titel: Neuling braucht Hilfe!
Beitrag von: bitmaster am 26. July 2006, 18:27
Zitat von: ST-225
Multitasking auf hardwarebasis funktioniert meines wissens nach auf 64-bit PC-Architekturen eh nicht mehr. Ich würde also Softwaretasking verwenden.
Da liegt dein Wissen genau richtig. Im Long-Mode ist nichts mehr mit Hardwaremultitasking.

bitmaster