Möchte ein eigenes Betriebssystem bauen
-
Allein das mit den Graphikmodi von 640x480 stimmt nicht:
http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_10#Funktion_4Fh:_VESA-Schnittstelle_.28VBE.29
Ich gebe ja zu das das auf rechner vor dem Baujahr '98
das höchste war,... aber das ist heutzutage nicht mehr so,..Man sollte sich dennoch mit uefi auseinandersetzen,
da immer mehr boards nur noch diesen unterstützen werden,...
(d.h. nicht das alle das werden)seid gegrüßt
-
viele OS-Entwickler werden schnell von der Realität eingeholt und brechen ihr Vorhaben sehr früh ab.
Die sollten zu uns zu PrettyOS kommen. Da wird geholfen, und wir bleiben dran.
Könnte man den Thread zu uns schieben?
-
Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum Assembler in das Forum Projekt: OS-Development verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
DrakoXP schrieb:
@supernicky:
Tatsächlich scheitern die meisten Projekte einfach am Aufwand...Hallo,
das hab ich doch gesagt
Ich habe immer das Gefühl das viele nicht wissen was für ein OS alles getan werden muss. Es arbeiten nicht umsonst immer mehrere Leute an einem Projekt. Einer allein kann das nicht alles wissen.Eine Frage habe ich noch zum PM des x386.
In einem Buch von mir steht geschrieben, das man (mit entsprechender Vorarbeit)
die Segmentregister ES, FS mit den richtigen Werten lädt,in den PM und zurück in den RM springt und trotzdem auf den gesamten RAM über ES und FS zugreifen kann. Ist das wahr?
Von solchen Tricks steht bei Herr Messmer und Herr Tischer nämlich nichts geschrieben.Wie erfahre ich wieviel RAM ich habe? Im RM erhalte ich vom BIOS nur 640KByte.
MfG
Nicky
-
-
supernicky schrieb:
Ersteres ist allein eigentlich nicht möglich, da du heutzutage selbst mit Assembler nur beschränkt auf die Hardware zugreifen kannst. Eine Bildschirmauflösung wie in Windows wirst du leider nicht realisieren können.
Ohne Frage es ist aufwendig und erfordert viel Erfahrung, Kraft und Geduld. Aber es wird sicher nicht an der Auflösung eines Grafikmodus scheitern. Technisch sind auch hohe Auflösungen machbar. Am Anfang ist es aber sicher leichter erst einmal im Textmodus zu bleiben.
Ebenso müsstest du deinen eigenen CD-Rom Treiber schreiben, sodass für den Anfang nur das Starten von Diskette bleibt.
Das BIOS bietet keine direkte Unterstützung (Zugriff) für CD ROM. Allerdings kann es durchaus von CD ROM booten. Dafür gibt es den El Torito Standard.
http://de.wikipedia.org/wiki/El_Torito
Natürlich wird hier in Wirklichkeit auch nur ein Disketten Boot simuliert.
Eine Dokumentation für die Programmierung einer Netzwerkkarte ist nicht zu bekommen, da die Hersteller nicht die Funktionsweise ihrer Karten offen legen.
Dadurch das es Systeme wie Linux gibt, ist diese Aussage nicht richtig. Linux ist quelloffen, damit sind auch die Treiber für Netzwerkkarten quelloffen. Die Hersteller sind in diesem Punkt auch nicht mehr so stur wie vor 10 Jahren. Natürlich werden sie nicht jede kleine Anfrage von jedem bearbeiten. Aber die Informationen liegen in Form offener Treiber vor.
Dein OS hätte also nur Zugriff auf max. 640x480x16 Grafik, Tastatur, Maus, Diskette und die ersten MByte deiner Festplatte, sowie 1 MByte RAM.
Das ist nicht richtig. Spätestens wegen der Quelloffenheit verfügbarer Systeme ist das einfach nicht richtig. Mühsam das alles zusammen zu tragen ist es aber
trotzdem.Die Bücher "PC Hardware" von H.P. Messmer und die Buchreihe "PC Intern" von M.Tischer sollten dabei auf deinem Schreibtisch nicht fehlen. Sie beinhalten eigentlich alles was du wissen musst.
Für die Grundlagen ist das ok. Aber alles in allem sind die veraltet. Nimmst Du diese Bücher als einzige Grundlage, dann hast Du mit Deinen Aussagen oben sogar Recht. Aber wir sind ja zum Glück im Zeitalter des Internet :).
In einem Buch von mir steht geschrieben, das man (mit entsprechender Vorarbeit)
die Segmentregister ES, FS mit den richtigen Werten lädt,in den PM und zurück in den RM springt und trotzdem auf den gesamten RAM über ES und FS zugreifen kann. Ist das wahr?
Von solchen Tricks steht bei Herr Messmer und Herr Tischer nämlich nichts geschrieben.Warum sollte man aus dem PM freiwillig zurückschalten wollen?
Was Du meinst ist vielleicht das hier.
http://de.wikipedia.org/wiki/EMM386Wikipedia schrieb:
EMM386 erreicht so aus Softwaresicht den gleichen Effekt wie die ursprünglichen, für spezielle EMS-Steckkarten ausgelegten Expansionsspeicher-Treiber. Während diese allerdings eigene, für die CPU an sich gar nicht adressierbare Speicherbereiche mittels einer speziellen Bank-Switching-Hardware einblendeten, verwendet EMM386 ausschließlich "Bordmittel" der Intel i386 und höheren Prozessoren. Als Nebeneffekt wird der Prozessor dabei allerdings aus dem unter DOS üblichen Real-Modus in den sogenannten V86-Modus geschaltet, womit einige sehr hardwarenah arbeitende Programme und einige Programme, die spezielle Speicherverwaltungstricks verwenden, nicht kompatibel sind.
Wenn es so einfach wäre, hätte jeder zweite Hobbyprogrammierer ein eigenes OS daheim.
Unabhängig von Deinen falschen technische Einschätzungen ist es eben nicht einfach. Aber es sei Dir verziehen, Erfahrung erwirbt man nicht über Nacht. Und dieses Forum ist ja auch dazu da etwas dazu zu lernen. Das gilt für alle Seiten. Hoffe ich zumindest
-
Warum sollte man aus dem PM freiwillig zurückschalten wollen?
Mir fallen da zwei Gründe ein:
- Im RM kann man die Funktionen des BIOS ohne VM86 nutzen
- Unreal Mode
Ist das wahr?
Ja. Nennt sich Unreal Mode: http://de.wikipedia.org/wiki/Real_Mode#Unechter_Realmodus_.28.E2.80.9EUnreal_Mode.E2.80.9C.2C_.E2.80.9EBig_Real_Mode.E2.80.9C.29
Wie erfahre ich wieviel RAM ich habe?
Das BIOS hilft dir ein bisschen: http://wiki.osdev.org/Detecting_Memory_(x86)
-
Mr X schrieb:
Warum sollte man aus dem PM freiwillig zurückschalten wollen?
Mir fallen da zwei Gründe ein:
- Im RM kann man die Funktionen des BIOS ohne VM86 nutzen
- Unreal Mode
Ja klar. Es ist sicher für den Anfang leichter ein System mit diesen Rahmenbedingungen zu schreiben. Geht es einfach nur darum mehr Speicher verwenden zu können, dann ist das mit dem Unreal Mode Trick ok.
Im Protected Mode gibt es keine Unterstützung vom BIOS, man ist also gezwungen wirklich alles selber zu machen. Das ist dann natürlich nochmal um Größenordnungen aufwendiger.
-
Dafür bietet der PM ausreichend RAM und eine vernünftige Adressierung.
-
Erhard Henkes schrieb:
Dafür bietet der PM ausreichend RAM und eine vernünftige Adressierung.
Was meinst du genau mit vernünftig?
64bit ist ja auch gar nicht schlecht, noch mehr Ram, bessere(flexiblere) Addressierung wie z.B. Riprelativ.Und man muß ja auch gar nicht Betriebsystem für Pentiums schreiben, ginge nicht auch für ARM oder für Grafikkarten, oder allgemein für mehrere Prozessoren, z.B. Mpi-basiert/OpenCl/funktional usw?
Oder gerade, weil es für den Einstieg ist, für einfachere Prozessoren ( http://www.mikrocontroller.net/articles/AVR-Tutorial#Welchen_Mikrocontroller_soll_ich_verwenden.3F ) allein oder im Verbund?
-
Was meinst du genau mit vernünftig?
Eben linear durchgehend, egal ob 32-, 64- oder 128-Bit, nicht diesen überlappenden Segment-Blödsinn beim RM.
AVR ist ok für den Anfang, am besten bei Asuro einsteigen und an der "OS"-Lib mitschrauben.
http://www.robotfreak.de/blog/robotik/asuro-library-v280/46