Hobby-OS der Forumsteilnehmer


  • Mod

    Um einen Überblick über die Kenntnisse/Erfahrungen der Forumsteilnehmer zu erhalten, stelle ich nochmals meine ursprüngliche Frage vom 13.03.2009:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-236354-and-start-is-0.html
    "Mich würde mal interessieren, wer alleine oder mit anderen an einem eigenen OS entwickelt, zu welchem Zweck und in welcher Sprache (ASS, C oder C++)? Links?"


  • Mod

    Ich fange einfach mit dem hier hauptsächlich besprochenen OS-Projekt an:
    http://lowlevel.brainsware.org/wiki/index.php/PrettyOS



  • Tjo, wenn ich mich als Forumsteilnehmer bezeichnen kann... 🙂

    Paloxena (C, kernel2 soll SMP, Threads, Usermodemodule und sowas hübsches können): http://lowlevel.brainsware.org/wiki/index.php/Paloxena
    MyXomycota (C, einfach nur so geschrieben, das beste ist wohl der Netzwerksupport): http://lowlevel.brainsware.org/wiki/index.php/MyXomycota
    isynax (FASM, ein OS fürs IRC): http://lowlevel.brainsware.org/wiki/index.php/Isynax
    Camelopardalis (PureBasic/C/FASM, zum Zeigen, dass man mit PureBasic ein OS schreiben kann): http://gitorious.org/camelopardalis



  • Hallo,

    also mein Ziel ist ein OS für eine Plattform mit Segmentierung (ähnlich der des 386 im PM). Am Anfang wollte ich auch x86 nehmen aber dort ist Segmentierung nur ungenügend in den Befehlssatz integriert, siehe MOVS, so das man ständig umständlich die Segment-Register laden muss und das kostet zusätzlich ne Menge Performance. Also hab ich mich entschieden eine eigene Plattform (32/64Bittig) zu entwickeln auf der dann mein OS läuft. Segmentierung find ich einfach besser als Flat-Memory aber keine aktuelle CPU kann das und mit x86-64 ist auch auf dem PC damit Schluss.

    Eine eigene Plattform hat den Vorteil das ich mich nie über mangelnde Dokumentation ärgern muss.

    Grüße
    Erik


  • Mod

    http://code.google.com/p/pexus/
    Pexus ist ein Hobby OS und wird von Programm Noob, Tecgod (ab und zu im IRC) und dragonfight33 entwickelt.



  • erik.vikinger schrieb:

    Hallo,

    also mein Ziel ist ein OS für eine Plattform mit Segmentierung (ähnlich der des 386 im PM). Am Anfang wollte ich auch x86 nehmen aber dort ist Segmentierung nur ungenügend in den Befehlssatz integriert, siehe MOVS, so das man ständig umständlich die Segment-Register laden muss und das kostet zusätzlich ne Menge Performance. Also hab ich mich entschieden eine eigene Plattform (32/64Bittig) zu entwickeln auf der dann mein OS läuft. Segmentierung find ich einfach besser als Flat-Memory aber keine aktuelle CPU kann das und mit x86-64 ist auch auf dem PC damit Schluss.

    Eine eigene Plattform hat den Vorteil das ich mich nie über mangelnde Dokumentation ärgern muss.

    Grüße
    Erik

    Kannst Du mir mehr Details über Deine Plattform geben? Evtl. auch mit Hardware Fotos und Doku?



  • Hallo,

    Gamepower schrieb:

    Kannst Du mir mehr Details über Deine Plattform geben? Evtl. auch mit Hardware Fotos und Doku?

    Nein, leider noch nicht. Das ganze ist noch in einer sehr frühen Phase. Es gibt eine erste Plattform-Spezifikation (wo IRQ-Controller usw. beschrieben sind), die OpCodes sind fast fertig (zumindest von den wichtigen Befehlen), am Assembler und einem Simulator arbeite ich zur Zeit. Für die Implementierung in FPGAs gibt es schon ein paar VHDL-Brocken aber noch nichts kompilierbares. Ich denke das bestimmt noch ein oder zwei Jahre vergehen bis einfache Bare-Metal-Programme im Simulator laufen und vielleicht eine erste sehr frühe OS-Version startfähig ist. Auf echte FPGAs möchte ich erst wechseln wenn ich mir (wenigstens einigermaßen) sicher bin das die Plattform keine tief greifenden Änderungen mehr durchmachen muss.

    Grüße
    Erik


  • Mod

    Ist die Entwicklung einer eigenen Plattform incl. OS nicht etwas übertrieben? Man kann ein OS doch so entwickeln, dass es mit einer HAL auf einem PC läuft. Die HAL ersetzt man später durch schnellere Hardware+HAL.



  • Hallo,

    Erhard Henkes schrieb:

    Ist die Entwicklung einer eigenen Plattform incl. OS nicht etwas übertrieben?

    Nö, find ich nicht. Es kommt eben auf die Zielvorstellung an. Ich will Segmentierung und die hat keine aktuelle CPU mehr (ja ich weis es gibt bei x86 noch ein paar halbherzige Ansätze die aber mit dem Übergang auf 64 Bit wieder vergessen sind und PowerPC hatte auch mal etwas sehr bescheidenes in dieser Richtung zu bieten).

    Erhard Henkes schrieb:

    Man kann ein OS doch so entwickeln, dass es mit einer HAL auf einem PC läuft. Die HAL ersetzt man später durch schnellere Hardware+HAL.

    Ich weiß zwar nicht was Du in diesem Fall mit HAL konkret meinst, ich wüste echt nicht wie man Segmentierung auf Flat-Memory abbilden sollte (höchstens umgekehrt da der Speicher innerhalb eines Segments ja flach ist). Ich denke der einzigst machbare Weg ein OS mit Segmentierung auf einer Plattform ohne Segmentierung laufen zu lassen ist ein Simulator. Da auch der Befehlssatz von x86 (im 32 Bit Modus) keine wirklich überzeugende Unterstützung für Segmentierung enthält ist es IMHO absolut logisch gleich eine komplett neue Plattform zu entwickeln. Dabei kann man auch alle möglichen anderen Probleme über Board werfen. An der etablierten x86 Plattform missfällt mir persönlich besonders das IRQ-Sharing (ich will voll auf MSI setzen), das BIOS (auf meiner Plattform soll es keins geben sondern das OS wird nach einem minimalen BootUp-Code direkt aus einem Flash gestartet) und so idiotische Sachen wie das A20-Gate (das weder Intel noch AMD den Mut haben das endlich abzuschaffen wundert mich sehr) oder DMA-Controller (heutige Hardware kann BUS-Mastering).

    Der wichtigste Grund ist für mich aber die Herausforderung. Ich fühle mich dieser gewachsen und hoffe das ich auch Erfolg hab.
    Ich gehe nicht davon aus das mein OS auch nur annähernd so viele Features erreicht wie einige andere Hobby-OSe, es würde mir reichen wenn ich einfache Programme portieren kann.

    Grüße
    Erik



  • Ich bin mal gespannt, wie die Hardware und Software aussehen wird. Hast Du eine Homepage, worauf Du dein Projekt dokumentierst?



  • @erik.vikinger: Ich verstehe nicht, was Du unter Segmentierung meinst 😕 Was ist MSI? Was ist BUS-Mastering? Und Intel und AMD haben nichts mit dem A20 Gate zu tun. Sie liefern "bloss" CPUs aus und diese brauchen kein A20 Gate...

    Es ist zwar schön und gut, dass Du viel VHDL Code geschrieben hast. Aber nichts kompilierbares und synthetisierbares zu schreiben, ist aber irgendwie... wozu 😕 Du weisst ja nicht einmal, welchen FPGA Du nehmen könntest 😕 Hast ja dann auch keine Erfahrung mit lauffähigen Schaltungen oder reale lauffähige Schaltungen in VHDL zu beschreiben... und das ist nicht ohne.



  • Hallo,

    abc.w schrieb:

    Ich verstehe nicht, was Du unter Segmentierung meinst

    siehe mal http://en.wikipedia.org/wiki/X86_memory_segmentation

    abc.w schrieb:

    Was ist MSI?

    siehe http://en.wikipedia.org/wiki/Message_Signaled_Interrupts, das macht die klassischen IRQ-Leitungen überflüssig weil die HW sich mit einem Speicher-Schreib-Zugriff in einen kleinen Speicherbereich des IRQ-Controllers direkt bemerkbar macht. Eigentlich kann das heutzutage fast jeder PC, es wird nur fast nie verwendet weil es immer noch Hardware-Komponenten (z.B. USB-Host-Controller) gibt die kein MSI unterstützen.

    abc.w schrieb:

    Was ist BUS-Mastering?

    Wenn die Hardware selber aktiv in den Arbeitsspeicher schreiben kann. Ein heutiger LAN-Controller packt die empfangenen Ethernet-Frames direkt in den RAM und gibt dann erst einen IRQ (mit MSI ist das sogar konsistenter) damit der Treiber das Ethernet-Frame sofort verarbeiten kann. Die CPU einfach nur mit dem kopieren von Bytes zu beschäftigen ist pure Verschwendung.

    abc.w schrieb:

    Und Intel und AMD haben nichts mit dem A20 Gate zu tun. Sie liefern "bloss" CPUs aus und diese brauchen kein A20 Gate...

    Nein, Intel und AMD liefern komplette Plattformen, CPU + Chipsatz und ne Menge drum herum. Alle aktuellen x86 CPUs haben noch ein A20-Gate-Anschluss (sogar im MAC).

    abc.w schrieb:

    Es ist zwar schön und gut, dass Du viel VHDL Code geschrieben hast. Aber nichts kompilierbares und synthetisierbares zu schreiben, ist aber irgendwie... wozu 😕

    Hast Du noch nie beim Projektstart erst mal ein paar zusammenhanglose Komponenten programmiert um sie einzeln zu debuggen/testen und erst später daraus was ganzes zu bauen?

    abc.w schrieb:

    Du weisst ja nicht einmal, welchen FPGA Du nehmen könntest 😕

    Doch weiß ich.

    abc.w schrieb:

    Hast ja dann auch keine Erfahrung mit lauffähigen Schaltungen oder reale lauffähige Schaltungen in VHDL zu beschreiben... und das ist nicht ohne.

    Woher willst Du wissen wie viel Erfahrung ich mit VHDL, FPGAs oder Platinenlayout habe? 😕
    Ich könnte da eventuell auch etliche Jahre Erfahrung aus meinem Berufsleben (und mehreren privaten Projekten) haben mit unterschiedlichsten Projekten wie einer Beschriftungslasersteuerung, einer Steuerung für die Röntgenröhre in einem medizinischem Röntgengerät oder einer CCD-Sensor-Ansteuerung für eine HD-TV-Kamera. Ist doch zumindest theoretisch möglich, oder sprechen da irgendwelche Gründe dagegen?

    Grüße
    Erik


  • Mod

    Du weisst ja nicht einmal, welchen FPGA Du nehmen könntest 😕
    Doch weiß ich.

    Kannst Du Dich da bitte etwas näher auslassen, sicherlich interessant. 🙂



  • Hallo,

    Erhard Henkes schrieb:

    Kannst Du Dich da bitte etwas näher auslassen, sicherlich interessant.

    Ich möchte die Spartan-6 LXT FPGAs einsetzen. Vor allem wegen dem eingebauten "Memory interface controllers blocks" die bis DDR3-800 (also 400MHz, pur in Logik währe das wohl nicht machbar) können und den "3.125 Gbps GTP transceivers" um die einzelnen Komponenten (ich möchte mehr als eine CPU und dazu kommt dann noch eine Art North-Bridge die u.a. ein PCIe-Root-Complex enthalten soll) zu verbinden.
    Ob ich mir zum spielen das http://www.xilinx.com/products/devkits/EK-S6-SP605-G.htm besorge weiß ich noch nicht, kostet zwar einiges Geld macht es aber bestimmt einfacher sich mit den einzelnen Features dieser FPGA-Familie vertraut zu machen.

    Grüße
    Erik



  • erik.vikinger schrieb:

    ...Ob ich mir zum spielen das http://www.xilinx.com/products/devkits/EK-S6-SP605-G.htm besorge weiß ich noch nicht, kostet zwar einiges Geld macht es aber bestimmt einfacher sich mit den einzelnen Features dieser FPGA-Familie vertraut zu machen.

    Hobbymässig ist das vielleicht interessant, aber, von der anderen Seite betrachtet, wer kann sich so ein Ding normalerweise leisten. Und, angenommen, irgendwann mal hast Du Deine CPU realisiert, Firmware geschrieben, eine Art OS programmiert usw., aber wer wäre dann in der Lage, Deine Ergebnisse zu reproduzieren...
    Ich hatte auch mal 180 Euro für ein Spartan 3e Starter Kit ausgegeben. LEDs angesteuert, RS323 programmiert, Tasten entprellt, LCD Display angesprochen, eine oder zwei CPUs implementiert ("CPU" ist vielleicht übertrieben, eher "Zustandsautomaten, die 5 Befehle können") und sonst... nun ja, liegt das Ding bei mir seit zwei Jahren rum...



  • Hallo,

    abc.w schrieb:

    aber wer wäre dann in der Lage, Deine Ergebnisse zu reproduzieren...

    Jemand der in der Lage ist ein passendes FPGA-Board zu fertigen (wahrscheinlich werde ich Schaltpläne und Layout mit freigeben) oder meinen Simulator zu benutzen. Außerdem wird man sicherlich auch einige Komponenten/Konzepte anderswo verwerten können. Außerdem wird mein Weg dahin nicht spurlos an anderen Dingen vorüberziehen. Ich muss z.B. einen C-Compiler portieren (momentan tendiere ich zum LLVM) und dafür werde ich mich mit dessen Entwicklern auseinander setzen müssen, das beeinflusst sicher nicht nur mich sondern auch diese Entwickler ein klein wenig. Wenn ich ein kleines Tool portieren muss finde ich vielleicht ein Problem darin und muss es beheben, davon hat das Tool auch was. Und das erhabene Gefühl der einzigste in meiner Straße zu sein der eine eigene Computerplattform hat (auf der man vielleicht sogar ein simples Spielchen spielen kann) ist mir auch was wert. Und als Referenz bei einer zukünftigen Bewerbung um ein Projekt kann es vielleicht auch was nutzen. Wenn ich nicht privat mit der FPGA-Programmierung angefangen hätte und es zu einem funktionsfähigem PCI-Gerät gebracht hätte würde ich das heute wohl nicht beruflich machen.

    abc.w schrieb:

    ... nun ja, liegt das Ding bei mir seit zwei Jahren rum...

    Das selbe Schicksal droht doch den meisten Hobby-Projekten. Auch das hier diskutierte "Hobby-OS der Forumsteilnehmer" wird mit hoher Wahrscheinlichkeit nicht mehr als ne Hand voll Leute erreichen (falls diese gezielt nach einem OS-Dev-Tutorial suchen) und ansonsten auf der Festplatte weniger Leute verstauben. Etwas einfach ausprobieren zu können ist kein Garant dafür auch Interessenten zu finden. OS-Entwicklung ist schon reichlich exotisch und die Entwicklung einer richtigen Plattform noch viel exotischer.
    Mein Spartan 2 PCI-Board hab ich auch schon seit 4 Jahren nicht mehr in der Hand gehabt und es hat trotzdem viel Spaß gemacht damit zu experimentieren. Aber vielleicht muss ich mir das Spartan 6 Board gar nicht selber zulegen und hab im Job das Vergnügen mich mit dem Spartan 6 näher zu beschäftigen.

    Grüße
    Erik



  • abc.w schrieb:

    aber wer wäre dann in der Lage, Deine Ergebnisse zu reproduzieren...

    das kannst Du da auch sagen http://www.mycpu.eu/, auch ich könnte das nicht so einfach nachbauen


  • Mod

    @erik.vikinger: Mit deinen speziellen Ideen und vielfältigen Fähigkeiten bezüglich Hardware und OS-Software wärst Du vielleicht im (Hobby-)Robotik-Bereich von mehr gleichgesinnten Bastlern als hier umgeben.
    http://www.roboternetz.de/ (allgemeine Wissensbasis und Forum)
    http://www.henkessoft.de/Roboter/Roboter.htm
    http://asurowiki.de/index.html (asuro)
    http://www.nicai-systems.de/nibo.html (nibo2)



  • erik.vikinger schrieb:

    abc.w schrieb:

    aber wer wäre dann in der Lage, Deine Ergebnisse zu reproduzieren...

    das kannst Du da auch sagen http://www.mycpu.eu/, auch ich könnte das nicht so einfach nachbauen

    Ok... aber man kann da einen Bausatz kaufen. Die CPU ist auch nicht einfach so auf der Lochrasterplatine aufgebaut, man kann sich die Layout-Daten runterladen und eigene Platinen ätzen und die Schaltung mit einem 30W Schlitz-Lötkolben zusammenlöten, weil alles DIP Gehäuse usw. Und die Bauteile sind alles TTL oder EPROMs, die man überall kaufen kann 😉


  • Mod

    Wir leben hier von der Vielfalt verschiedenster Ideen, die im Zusammenspiel neue Wege aufzeigen können.


Anmelden zum Antworten