# Betriebssysteme programmieren



## NixWeiss (8. Mai 2004)

Ich würde gern ein kleines OS herstellen, aber ich kenn keine Software dafür.
Kennt jemand für so etwas Share- oder freeware?
gruss NixWeiss


----------



## schlaumaja (8. Mai 2004)

Dazu fällt mir spontan folgender link ein...

http://www.tutorials.de/tutorials20706.html

EDIT: Dein Hirn ist bestimmt gute Freeware


----------



## T0ast3r (20. Januar 2005)

Du könntest es mit NASM (Netwide Assembler) programmieren...


----------



## PreludeBA4 (9. Februar 2005)

Wo genau bekomm ich diesen "NASM"?

ich habe schon gesucht wie ein Kaputter, aber nur versionen gefunden, die irgendwie nicht Funktioneren?! Oder Geht der nur unter Linux? Beim öffnen hat er nämlich Linux-Typische Befehle angezeit wie "--help" und so?!


----------



## stephsto (9. Februar 2005)

Also ich glaub hier herscht ein riesen missverständnis. Mit nasm musst du dein OS schon richtig Programmieren so mit Quellcode und so. Dann auf diskette schreiben und testen und wenn dein nasm --help anzeigt dann  einwandfrei. du musst nur ne input datei angeben. bsp.:

nasm -f bin -o kernel.bin kernel.asm

-f ist das ausgabedateiformat
-o ist eine zieldatei
und dann kommt die input datei die assembliert werden soll.

noch ein kleiner tipp. Unter http://www.lowlevel.net.tc findest du jede menge verückte die auch os proggen.

gruß stephsto


----------



## T0ast3r (12. Februar 2005)

Also Ich hab auch viel danach gesucht und gefunden. Um ein Betriebssystem zu programmieren würde ich dir nach wie vor Assembler empfehlen.
Wollts in den Anhang reingeben, ist aber zu groß. 
NASM ist Freewre und daher kostenlos, steht aber under der GNU Public Lizence.

Viele Grüße,
T0ast3r


----------



## PreludeBA4 (12. Februar 2005)

stephsto hat gesagt.:
			
		

> Also ich glaub hier herscht ein riesen missverständnis. Mit nasm musst du dein OS schon richtig Programmieren so mit Quellcode und so. Dann auf diskette schreiben und testen und wenn dein nasm --help anzeigt dann  einwandfrei. du musst nur ne input datei angeben. bsp.:
> 
> nasm -f bin -o kernel.bin kernel.asm
> 
> ...





achso, ich muß das in nem anderen Programm (zB: Editor?) Programmieren und dann mit dem NASM sozusagen "Ausführen"?


----------



## stephsto (14. Februar 2005)

hey, bei aller liebe, ich glaub du lässt lieber die finger davon. Ein bisschen ne Ahnung muss man da schon haben. Man führt es nicht aus sondern Compiliert es. D.H. man macht eine Binärdatei draus und lässt sie den Prozessor ausführen. Ein Windows oder so gibts da nich mehr. Bloß noch Hardware und Opcodes. Die einzigen die sowas proggen können sind wahrscheinlich Leute die das studiert haben oder eben ausgeflippte Hobby programmierer wie ich oder einige andere die sich damit schon Jahre befassen. Ein Hobby OS-progger schaft es niemals ein OS zu proggen das an Windows rankommt da bin ich mir sicher. Also such dir am besten ne andere Beschäftigung oder befass dich mit dem Thema und frag nich so herum. Ich hab dir da schließlich einen Link gegeben und da findet man Info.

Gruß stephsto


----------



## {red}ASM (14. Februar 2005)

Hi,
 dem kann ich nur zustimmen! Ich kann aus eigener Erfahrung sagen, dass es nicht einfach ist ein Os zu proggen. Wenn man also nicht sehr viel Zeit dafür aufbringt wird das nichts. 
 @ PreludeBA4
 Ich glaube ehrlichgesagt nicht dass du überhaupt schonmal was von einem Bootloader oder Kernel oder so gehört und geschweige denn dass du schon mal einen gesehen hast. Schau dir mal einen an und ich glaube dann vergeht dir dein Traum vom eigenen OS.
 Aber jedem das Seine!
 Gruß Red


----------



## PreludeBA4 (18. Februar 2005)

Hallo?! Ich bin Hobby Programmierer! Aber bis jetzt hab ich nur erfahrung mit HTML, bissel PHP und JavaScript und Delphi!
Ich weis auch Was Compilieren ist! Ich hab schon seit über 10 Jahren mit Computer zu tun! Ich weis, was da drin wo abläuft! Oder zumindest einen Großen Teil.
Bootloader und Kernel kenn ich von Linux her, da ich viel damit arbeite!
Nur damit ihr mir glaubt: Lilo oder Grub sind Begriffe, die mir zu Bootloader einfallen!

Und ich dachte immer, das hier ist ein Forum, in dem Man "Einsteigerhilfen" bekommt und nicht irgendwelche Links, unter denen man Komplizierte Anleitungen findet! Da kann ich auch gleich googeln! -.-

Trozdem Danke für den Link!


----------



## Dennis Wronka (19. Februar 2005)

Nicht gleich so aufregen, ist nicht gut fuer's Herz.
Assembler ist ein wenig was anderes als PHP oder auch Delphi. HTML ist ja nicht wirklich 'ne Programmiersprache.
Hast Du schonmal Assembler gesehen?
Bei Assembler hast Du keine konkreten Anweisungen wo Du einfach nur sagst mach mal, und gut. Da laedst Du irgendwelche Werte in ax, oder in meinetwegen in bx. Dann kannst Du Register pushen und poppen, Interrupte ausfuehren und damit kannste dann versuchen gluecklich zu werden.

Auch Windows hat einen Bootloader, und auch einen Kernel. Bei Linux hat mir nur direkter damit zu tun, weil Windows ja so viel wie moeglich vor'm User versteckt.

Ich finde die Zweifel daran, dass Du es wirklich schaffst ein brauchbares OS zu coden berechtigt. Mit brauchbar mein ich jetzt nicht, dass Du gleich 'nen Linux- oder Windows-Clone auf die Beine stellst, aber etwas was irgendwie mehr kann als einfach nur booten und dann auszugeben "Hello World", sondern wo man dann mit weiterarbeiten kann. Wie zum Beispiel, dass man darauf Programme ausfuehren kann. Auch das muessen keine Windows-Programme sein, aber es waere doch zum Beispiel nicht schlecht wenn man den gcc darauf installieren koennte um mit C fuer Dein OS programmieren zu koennen.
Was dafuer natuerlich schon wichtig ist, dass Dein OS die Moeglichkeit hat auf die Festplatte zuzugreifen. Dafuer muss es zumindest ein Dateisystem verstehen. Falls Du Dir ein eigenes ausdenkst, musst Du natuerlich die Moeglichkeit haben Deine Festplatte entsprechend zu formatieren.
Du brauchst eine Shell, damit Du mit dem OS interagieren kannst, und natuerlich Treiber fuer Deine Devices.

Mir fallen noch etliche andere Sachen ein, jedoch sitz ich im Buero und muss mich jetzt mal langsam um meine Arbeit kuemmern. Vielleicht gibt's spaeter noch mehr.


----------



## Sinac (19. Februar 2005)

Falls du mal die Suche bemüht hättest wüstest du das es das Thea schon öfters gab!
Und soweit ich weiß hat am Ende keiner mehr Bock drauf gehabt. Das Tutorial von Dario ist schon ein ganz ganz einfacher Einstieg und das bezeichnest du schon als komplizierte Anleitung. Delphi ist wohl nicht so der Hammer und HTML ist nach wie vor keine Programmiersprache sondern wie der Name schon sagt Hypertext. PHP ist eine vollwertige Programmiersrache, die syntaktisch an C/C++ und Java angepasst ist und selbst diese Umfasst nicht einen Bruchteil der Komplexität von C/C++. Wenn du C/C++ wirklich  programmieren und vorallem auch verstehen kannst und dazu noch wirklich viel über Hardware weißt, also nicht was ein i368 Prozessor ist, sondern was dadrin passiert, wie das abläuft und warum, dazu noch jede Menge wissen über Dateizugriffe, Hardwaresteuerung allgemein, dann kannst du eventuell mal anfahngen dich mit Assembler zu beschäftigen. Und dann bekommst du mit sehr viel Zeit und Aufwand vielleicht was auf die Beine was mehr kann als das von Dario.

Alleine schon weiter zu kommen als über den Bootloader ist höllisch kompliziert. Du willst ja nicht alle deine Programme in ASM haben, oder? Aber wiebekommst du dann C/C++ Bibliotheken auf dein OS? Wie sprichst du das Dateisystem an? und und und ...

Du bist doch großer Linux-Freak, schau dir die Kernel-Source an und dann schätze dein Vorhaben nochmal neu ein. Da sitzen viele viele Leute, die viel viel mehr Ahnung haben als du oder ich oder so gut wie jeder hier im Forum und brauchen trotzdem seht sehr Zeit um sowas zu schreiben.

Wir unterstützen hier jeden und wollen jedem Helfen, aber ich denke dazu gehört auch die Leute drber aufzuklären wenn ein Vorhaben schlicht und einfach zum scheitern verurteilt ist.

Greetz...
Sinac


----------



## stephsto (19. Februar 2005)

Also wie gesagt, es ist halt kompliziert. Das Tutorial hier ist das womit ich angefangen habe und ich habs halt gleich verstanden weil ich Assembler, C und Java konnte. Das sind dann doch ein wenig komplexere Sprachen als PHP oder so. Das du weißt was ein Bootloader ist, ist nicht schlecht aber bitte, es ist keine Vorraussetzung. Wenn du das checken willst dann tu es. Schau dir lowlevel.net.tc an. Da findest du Hilfe und sogar Rat bei anderen. Aber das geht halt nicht von Heut auf Morgen. Das braucht Zeit, Ehrgeiz und ein wenig Durchhaltevermögen. Denn das Tutorial hier ist das einfachste von der Welt. Das ganze im PMode ist schwer. Du wolltest das wir dir helfen. Also hier der Ablauf wenn der PC startet OHNE Code weil den gibts überall zu hauf.

1. BIOS wird aus dem CMOS in den Speicher geladen. Es geht bis zur Adresse 0x7C00. 
2. Das BIOS startet die Hardware.
3. Das BIOS geht nacheinander die Bootlaufwerke durch.
4. Wenn im letzten Word des ersten Sektors des Datenträgers der Wert 0x0AA55 steht wird von diesem Laufwerk gebootet.
5. Der Sektor wird an die Adresse 0x7C01 kopiert. Aufgrund der Größe eines Sektors von 512 Byte endet dieser Code bei 0x8000.
6. Ist der Code kopiert wird noch das Bootlaufwerk in Form einer Nummer in dl geschrieben.
7. Dann wird zum Code gesprungen.
8. Hier muss dein Bootloader stehen, der den restlichen Code lädt und dort hinspringt. Das heißt dann Kernel.
9. Dein Kernel muss jetzt sinnvollen Code enthalten, der ausgeführt werden kann.

Das ist der Ablauf. Den Code hirfür findest du im Tutorial auf dieser Seite. Die Programme die du brauchst sind nasm und rawrite. Für den Fall das du weitermachen willst solltest du deine Anfragen jedoch in einem dafür geeigneten Forum stellen wie eben unter dem Link, den ich dir schon mehrfach genannt habe. Dort findest du rat von Profis und bekanntlich lernt mans von denen am besten. Besser ist es aber du lernst erst mal C und Assembler so unter Windows und machst dann weiter. Das ist einfacher

Gruß stephsto


----------



## PreludeBA4 (21. Februar 2005)

Danke erstmal für die Hilfe! 
Das bringt mich schon weiter! 

Ich habe auch nie behauptet, dass ich mich mal mit Windoof oder Linux anlegen will, aber ich möchte mal versuchen, so ein eigenes kleines Betriebssystem zu proggen! Auch wenns nur mit nem Text-Editor oder nem Musikprogramm oder sonstwas augestettet ist! Ich hab da so einen gewissen reiz, was das Programmieren anbekangt! Ich will einfach mal alles ausprobiert haben!  
Deswegen will ich das mal probieren!

MFG Pre

PS: Was da beim "hochfahren" so passiert, ist mir schon bekannt  aber trozdem danke nochmal für die Übersicht!


----------



## PreludeBA4 (3. März 2005)

Ich hätte da mal noch eine Frage zwecks BS!

Ich, bzw. wir (mein vat und ich), haben folgendes vor:
Wir wollen unseren "Sportwagen" (Honda Prelude BA4 88er Bj.) nen Bissel auftunen. Der wird also Optisch verschönert und nen stärkerer Motor kommt rein, damit mans auchmal mit nem Porsche oder vlli. sogar mit diversen Ferraris aufnehmen kann! 
Da is das Problem, dass der Tacho nur bis 230km/h geht! Da haben wir uns gedacht, bauen wir uns selbst einen! Da mein Vat KFZ-Schlosser is, ist von der Seite her alles klar! Jetzt zu dem Problem:
Wir wollen einen LCD-Monitor oder ähnliches anstelle von dem ganzen tacho-zeugs einbauen! Diese soll dann in irgendeiner Programmiersprache (Vorraussichtlich Java) den Tacho ausgeben! Die seite ist schon durch meinen Nachbar gedeckt, da der Programmieren kann! (außer Betriebssysteme )
Nun ist das Problem, dass man ein Betriebssystem braucht, was so schnell wie möglich hochfährt! Am besten 3-5 Sekunden!

Nun die Frage: Ist soetwaswas möglich?! Kann man da einen "normalen" PC so abspecken, dass es das ganze zeug umgeht, und nur das lädt, was für das "Programm" gebraucht wird?! Würde mich über schnelle, und vor allem Klare und FREUNDLICHE Antworten freuen! Danke

MFG Pre


----------



## Sinac (3. März 2005)

Naja, 3-5 Sekunden ist hart, aber mit entsprechender Hardware geht das schon recht schnell, dann mit Linux und n Kernel nur rein was muss. Unter 10 könnteste bleiben denke ich. Wesentlich schwerer wir das die Daten da rein zu bekommen, da ist Java vieleicht nicht das optimale und Daten vom Steuergeräüt abzugreifen ist eh nicht so das Kinderspiel, aber da habt ihr je nen Programmierer *g*
Aber ich glabe es gibt sowas auch schon halb fertig, aber ich meine noch nicht für so alte Autos (hat das überhaupt schon n Steuergerät? ) Muste mal bei n paar Tuningfirmen anfragen, Kohle dürfte ja kein Kohle speilen wenn ihr sonen Umbau vorhabt


----------



## {red}ASM (4. März 2005)

Hi,
 also eure Idee einen Tacho selbst zu bauen ist eigentlich ganz gut. Finde ich cool, dass sich 
 jemand so einer Herausforderung stellt, aber dein Ansatz ist leider fast undenkbar. Du willst im
 Ernst einen ganzen Computer in dein Auto einbauen? Das halte ich für eine schlechte Idee. Ne riesen Kiste
 für eine (für den PC) kleine Aufgabe.
 Schon mal was von Mikrocontrollern gehört? Gehört wahrscheinlich schon, aber noch nie was damit zu tun
 gehabt. Das schließe ich aus deiner Fragestellung.
 Nun zum Thema. Ich hätte dir da nen Vorschlag!
 So wie ich das verstanden habe willst du einfach nur die Geschwindigkeit deines Autos auf einem Display 
 anzeigen lassen, richtig? OK, das dürfte nich allzu schwer sein(für mich, da ich mich ausgiebig mit
 Mikrocontrollern befasse).

 Das würde dann ungefähr so ablaufen:
 Man muss das sogenannte V-Signal des Autos anzapfen, also an einen Pin eines Mikrocontrollers
 anschießen. Dann muss man natürlich wissen, wie das V-Signal auszuwerten ist, d.h. wie viele Impulse 
 bei welcher Geschwindigkeit gesendet werden. Dann brauchst du natürlich noch ein Display um
 die Geschwindigkeit anzuzeigen. So, das wäre erst mal die Hardware(abgesehen von der Spannungsversorgung 
 des Mikrocontrollers und des Displays). Man muss halt ein kleines "Board" bauen. Aber im Großen und
 Ganzen besteht es eigentlich nur aus dem Mikrocontroller und ein paar Widerständen und Kondensatoren.
 So, jetzt zur Software. Der Controller macht logischerweise nicht alles von alleine sondern man muss ihn 
 programmieren. Dabei empfehle ich auf jeden Fall ASSEMBLER, da das die hardwarenähste Sprache ist.
 Das Programm muss dann eben das V-Signal verarbeiten und den Wert an das Display ausgeben. Übrigens
 um mit ASSEMBLER ein Display anzusteuern ist schon ganz schön was an Hirnschmalz nötig! Ist wirklich
 nicht leicht. Das habe ich vor Kurzem auch gemacht. Ich dachte eine Woche lang, dass das Ding
 kaputt sei, bis ich im Programm den Fehler gefunden habe: ich habe ein "b" mit einem "d" verwechselt.
 Dadurch ging gar nichts. Aber das nur mal so nebenbei.

 Aber alles in Allem ist das schon machbar. Aber nur mit viel Zeit und vielem Hirnschmalz!
 Als Mikrocontroller empfehle ich dir einen AVR. Das ist eine Mikrocontrollerfamilie von ATMEL.
 Davon gibts viele. Nimm deshalb am Besten einen ATmega16. Kostet 2€. Als Display empfehle
 ich dir auf jeden Fall ein HD44780 kompatibles Display. Kostet so um die 15€.

 So, das wäre mal das Wichtigste. 
 p.s. sorry für die nur teilweise ausgefüllten Zeilen. Hab das im Editor geschrieben

 Gruß {red}ASM !


----------



## PreludeBA4 (4. März 2005)

Ich hatte eigentlich gedacht die kleine "Workstation" zu nehmen, die ich hab! Is 1,5 mal so groß wie ein Autoradio und würde reichen! Aber das mit dem Microcontroller hat mein vati auch vorgeschlagen! Für die ausgabe sollte ein LCD Display (Breitwand) herhalten! Sollte ja nich nur die Geschwindigkeitsanzeige mit drauf, sondern eigentlich auch der ganze andere schnulli! Und der tacho sollte eigentlich auch "Analog" ausgegeben werden und nicht Digital ;-)!
Das Auto hat auf jeden fall ein steuergerät! Is für seine zeit mit einer der Fortschrittlichsten "Sportwagen" würde ich meinen! Siehe hier: http://www.prelude-fan.de/ba4.htm
Auserdem kommt da der Motor von dem jüngeren Accord AeroDeck (92er Bj) rein, den wir hier stehen haben! Der Prelude muß auch nicht heut und morgen fertich werden! Das könnte und wird sich auch mehrere Jahre hinziehen! Aber wenn der Fertich is, dann is er ein echter Hinkucken! :-D 


Du scheinst da ja wirklich ne menge ahnung zu haben, wie man dich da so hört! Hast du ICQ oder sowas?! Würde mich riesig freuen, wenn du mir bzw. uns "Helfen" würdest! Wir teilen den gewinn bei erfolgreicher Serienproduktion auch 50:50 *grins*


Ne, aber würde mich über ne kontaktierung freuen! :-D


----------



## {red}ASM (5. März 2005)

Hi,
 also ich hoffe du hast das Grundprinzip verstanden. Wenn wir die Werte des V-Signals haben, also wie
 viele Impulse pro Meter oder pro Km/h gesendet werden ist der Rest nicht mehr allzu schwer!
 Meine ICQ-Nummer: 206-904-751

 Also bis dann im ICQ. Bin aber nur sehr selten im ICQ, weil ich 56K habe, aber wir können dann ja E-mail 
 Adressen austauschen!

 Gruß {red}ASM


----------



## PreludeBA4 (5. März 2005)

Das mit dem V-Signal is absolut kein Problem hat mein vat gesagt! Hab dich geaddet! 

Falls da was schiefgelaufen is, meine is 146014736


----------



## Norbert Eder (5. März 2005)

Wieso nicht einfache einen Java-Chip verwenden? Kostet ein paar Euros und der kann das notwendige dafür.


----------



## stephsto (5. März 2005)

Tag zusammen,

also euer Projekt is ja sehr umfangreich, allerdings muss ich sagen sind schon einige Fehler im Ansatz. Das mit dem V-Signal etc. sollte tatsächlich das kleinste Problem sein. Da gibt's schlimmeres. Da wäre zum Beispiel das Display. Also ein HD44780 kompatibles Display um ein Auto "aufzumotzen" ist ja wohl das Letzte. Das Display sieht e aus und die Ausgabe ist genau so schlecht. Da muss man schon mindestens mit einem Grafik-Display arbeiten. Das anzusteuern übertrifft aber auf alle Fälle die Ansteuerung eines HD44780. Trotzdem ist euer Projekt sehr interessant.
@PreludeBA4: Also würde mich freuen wenn ihr mich auf dem Laufenden halten würdet. Schließleich habe ich dem {red}ASM alles über AVRs beigebracht. Außerdem kann ich aus Erfahrung sagen, der is nie online. Kannst mich ja auch mal adden: 339080100


----------



## {red}ASM (6. März 2005)

@ Stephsto
 Herzlichen Glückwunsch Stephan, du hast es wirklich drauf. OK, zugegeben du hast mir wirklich viel
 geholfen ASSEMBLER zu lernen usw. aber dass du mir "alles über AVRs beigebracht hast" ist wohl
 "ein klein wenig" übertrieben. Du programmierst schon seit fast 2 Jahren ASM und ich seit nem Halben
 und ich hab glaub in ASSEMBLER nicht weniger aber auch nicht mehr Ahnung als du!
 Was bitte is an einen HD44780 so schlimm?
 Da gibts welche mit eleganter blauer Hintergrundbeleuchtung oder sog. organische Displays der 
 ganz neuen Generation deren Schrift man auch aus fast 180 Grad noch lesen kann.
 Und ein Grafikdisplay ist im Vergleich zu nem HD44780 auch nicht viel schwerer anzusteuern. Die meisten
 haben nen 16-Bit Datenbus und das wars.
 Übrigens den Quellcode um das HD44780 anzusteuern hast du ja sowieso nur von mir abgeschrieben anstatt
 selbst mal was zu überlegen.

 Aber ich glaube wir sollten wieder mal von unserem Kriegspfad hinabsteigen in das Reich des Friedens, 
 findest du nicht auch? Wir sehen uns ja morgen in der Schule. Da wird das geklärt!

 Gruß {red}ASM


----------



## PreludeBA4 (6. März 2005)

{red}ASM hat gesagt.:
			
		

> Was bitte is an einen HD44780 so schlimm?
> Da gibts welche mit eleganter blauer Hintergrundbeleuchtung oder sog. organische Displays der
> ganz neuen Generation deren Schrift man auch aus fast 180 Grad noch lesen kann.
> Und ein Grafikdisplay ist im Vergleich zu nem HD44780 auch nicht viel schwerer anzusteuern. Die meisten
> haben nen 16-Bit Datenbus und das wars.


 


Wir wollen aber, dass der Tacho Grafisch ausgegeben wird, und nicht irgendwelche Digitalen Zahlen da vorn rumschwirren!


----------



## PreludeBA4 (7. März 2005)

stephsto, ich hab dich geaddet!


----------



## {red}ASM (7. März 2005)

Dann nehme man einfach ein fettes Grafikdisplay und stelle einen Tacho dar. Ich besorg mir demnächst eins und steuer es an. Dann is so ein Tacho auch nicht mehr so mega schwer, wenn es mal angesteuert ist. Die Dinger kosten aber ganz schön was!
  100-450€ . Aber 450€ nur für farbiges hochauflösendes Diaplay.

  Gruß {red}ASM


----------



## PreludeBA4 (8. März 2005)

Ich weis was die kosten! Mein vat besteht aber auf so nen Display!


----------



## stephsto (11. März 2005)

Tja dann halt anfangen mit lernen... Ich empfehle erst alles über Assembler am PC zu erfahren, dann alles über AVRs bzw. PIC oder was auch immer für ein MC und dann noch mal alles über Grafikdisplays. Ich schätze um euch das alles anzueignen seid ihr mindestens ein halbes bis dreiviertel Jahr beschäftigt, vorausgesetzt ihr arbeitet wenigstens einmal in der Woche dran. Das alles ist nämlich nicht grad einfach. Manche Leute müssen das sogar studieren, wisst ihr... Also viel Spaß und ein Tipp:
Wechselt das Forum. Da müsst ihr nämlich wirklich in ein Elektronik Forum und nicht in ein Forum für Sonstige Programmiersprachen.


----------

