Jetzt geht's los ...

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
DJLinux

Jetzt geht's los ...

Beitrag von DJLinux »

Jetzt nach dem ich am externen HiVe Bus ein Display angeschlossen habe
fang ich frohen Mutes an meine Vorstellung eines auf Propeller Chip's basierendes OS in die Tat umzusetzen.

So ein zusätzliches Display hat einen unschätzbaren Wert wenn es darum geht ein Multicore OS in Assembler zu schreiben (Pasm kann ich noch nicht Schlaf).
So lange wenigsten noch ein Debug Cog von den 24 läuft kann man sich schön sämtliche wichtigen Werte anzeigen lassen um den Fehler schneller einkreisen zu können.

Es macht auch Spass auf dem Display nur zu zuschauen wie der Scheduler neue Prozeesse auf freien Cogs verteilt oder wie Speicherbereiche in Form von bunten Pixelnfeldern blinken.

Natürlich sind aussagefähige Stackbilder gekreschter Prozesse ebenso möglich wie auch wärend der Entwicklung sinnvoll. Ich möchte auch nicht zum Debugen immer den PC über serielle Links verbunden haben.

Ich habe einige Zeit investiert um mir ein schönes OS Konzept auf die Beine zu Stellen.

Eines der wichtigen Designmerkmale ist die Auflösung des Master / Slaves Konzeptes wie es z.Z. das IOS benutzt. Daher werden die Steuerleitungen (Ausser Addresslatch /AL und eventuell /WR) neuen Aufgaben zugefürt.

Auf den verbleibenden Steuerleitungen soll ein bidektionaler Komminikationverkehr statt finden. Sinn und Zweck des Ganzen ist ein Mechanismus zu realisieren welcher es jedem Prozess erlaubt (unabhängig auf welchem der 3 Chips er läuft) auf die gesammten Resourcen des HiVe's Zugreifen zu können.

Dar das Hardwaredesign keine direkte Kommunikation z.B. zwischen Bel. und Adm. zuläst mündet die Resourcenverwaltung in eine art Job -Mangement. So kann z.B. ein Prozess der vom Scheduler in einem freien Cog auf einem beliebigen der drei Props. Aufträge zur Allokation der Resourcen absetzen.

Es gibt keinen Grund warum nicht ein Prozess der gerade "Zufällig" auf Administra läuft nicht auch in den Genuss von eRAM kommen soll. Genau so kann ein Prozess der z.B. auf Bellaltrix augeführt wird ebenso auf das Feilsystem von Administra zugreifen.

Der aufwerksamme Leser unter Euch wird sicherlich den Einwand haben das ein kompeliertes Programm schon bei der Programmierung "wissen" muss auf welchenm Chip es laufen wird.
Oder anders gesagt jedes Programm müste über eine art "R"ios "B"ios "A"ios ;) verfügen um z.B. die passenden Busmasken der jeweiligen Chips zu benutzen. Dieses Problem wird vom Prozess "Loader" so gelöst das er vom Prozess "Scheduler" mit einer ProzessID "geimpft" wird.

Diese ID ist nichts anderes als die CogID des nächsten freien Prozesses multipliziert mit der auszuführenden ChipID. Z.B. CogID 7 * ChipID 2 ergibt die Systemweite eindeutige ProcessID 14.
In diesem Beispiel geht nun der Loader hin holt die Busmasken für ID 14 und schreibt sie an vereinbarter Stelle. Das kann vor COGNEW direkt im Binary sein oder im eRAM oder sonst wo.
Fakt ist auf jeden Fall das der Anwenderprozess nicht vorher wissen muss wo er zur Ausführung kommen wird. (Liebe Kinder von den möglichen Childprocesses erzähl ich euch nach dem Hände waschen)

Alle Resourcen des HiVe's und die Damit verbundenen Dienste werden über das bidiektionale Jobmangement allen Prozessen zur Verfügung gestellt vergleichbar mit den Messagequeue's von X11 und Windows.

Die "Dienste" Kapseln die Anwendungen von den realen Resource die da wären KEY, MOUSE, TV, VGA, SOUND, RAM, FILE, BUS, PC-HOSTLINK, USB(*)

Zugegeben ich bin wirklich heiss darauf das OS in die Tat umzusetzten und hoffe zur gegebener Zeit das vereinzelte Drohnen ein par kleine Tools, Anwendungen oder Spiele auf dem OS Proggen werden.

Ich will künftigt lieber mit dem stromsparndem HiVe "Spielen" als ständig den PC laufen zu haben. Klar zum Online gehen bleibt der PC auch bei mir erste Wahl was ich aber auf jeden Fall erreichen möchte ist das man den HiVe einschaltete einen Editor startet Quellcode tippt kompeliert und Spass hat.

Ich werde auch weiterhin das IOS Projekt im Auge behalten und warte auch schon auf die HiVe "Task Forth" Initiative ;) .

Wer meine OS Ergüsse in kürze Testen möchte kann auch seine bisherige FAT16 HiVE SD Karte benutzen. Iich werde zwar ein anderes Filesystem implementieren welches aber auch in Form einer etwas grösseren Datei in friedlicher Koexistens auf der HiVE SD existieren kann. Wer schon mal VMWare, Bochs, QEMU oder andere virtuelle PC's benutzt kennt ja bestimmt das Prinzip wie virtuelle Festpatten, CD/DVD ROM's mit beliebigen Filesstemen "nur" als Datei existieren.

So das reicht erst einmal und ich werde zur gg. Zeit auch ein par Skizzen hier hochladen da habt Ihr Drohnen schon mal etwas zum "schmunzel".

Krative Grüsse Joshy

(*) Ich arbeite dran hat aber noch keine hohe Priorität und vielleicht kann ich Janaha mit ins Boot holen und unsere bisherigen bescheidenen USB Kenntnisse bündeln in einen erteinmal recht einfachen HiVe USB Host.
Zuletzt geändert von DJLinux am Di 25. Aug 2009, 01:21, insgesamt 1-mal geändert.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Jetzt gehts los ...

Beitrag von drohne235 »

Interessantes Konzept.

Als ich das überflogen hab, haben mir erstmal die Ohren geschlackert :o und unmittelbar kam mir noch eine verrückte Idee: Man muss den 8bit Bus ja nicht unbedingt parallel nutzen! Was wäre wenn man aus einem parallelen Bus 8 serielle Verbindungen macht und damit wie mit einer Art Pipe dynamisch je nach Anforderung Prozesse verbindet? Ich lasse bei diesem Gedanken mal ganz bewußt Erwägungen zur Geschwindigkeit außer acht. So könnten gleichzeitig acht Prozesse miteinander reden, unabhängig in welchem Chip sie sich befinden, zumindest sofern man es schafft das dynamisch zu verwalten. So könnte ein Prozes in Regnatix mit einem Prozess in Administra reden und ein anderer Prozess ebenfalls in Administra gleichzeitig mit einer Cog in Bellatrix. Könnte sowas funktionieren? Wäre allerdings echt nur was für Verrückte...
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
scotty
Beiträge: 75
Registriert: Di 30. Jun 2009, 11:53
Wohnort: Berlin - Planet ERDE

Re: Jetzt gehts los ...

Beitrag von scotty »

Die Idee mit seriellen Links hatte ich auch schon. Es wird aber sicher nicht für 8 bidirektionale reichen, da dann wohl ein paar Leitungen für irgendeine Art Bus-Steuerung herhalten müssen. Die bisherigen Select/Handshake-Signale werden nicht ausreichen. Du (drohne235) hattest irgendwo mal erwähnt, daß man die Propeller-I/O-Ports nicht gegenseitig auf Ausgang schalten sollte. Da muß man also auch aufpassen.
Vielleicht läßt sich das ganze ja ähnlich wie der HUB-Zugriff über feste Zeitfenster für jeden Propeller regeln? Oder 4 bidirektionale Links mit je zwei Leitungen ähnlich dem I2C-Protokoll (also MasterTransmit/SlaveReceive bzw. MasterReceive/SlaveTransmit)? Da gibt's sicher noch unendlich viele andere Möglichkeiten...
HIVEs 064 & 176
DJLinux

Re: Jetzt gehts los ...

Beitrag von DJLinux »

Der Daten-Bus bleibt das was er ist und soll nicht zu einen Nadelöhr "verkommen". Bin mir noch nicht sicher (werde verschiedenes testen) ob das "Job-Management" über die verbleibenen Steuerleitung wie ein Mehrdrahtbus "gehandelt" wird oder doch klassisch über /CS und dann der Prozessverkehr über BUSCLK (readline) und /HS (writeline).

read- / writeline hört sich schon mal gut an weil dessen Daten-Richtungsbit im DRR nie getogelt werden müste und auch Bella. direkt mit Admin. verbunden ist und kein Umweg über Reg. nehmen müste.

Aber bekanntlich füren ja immer mehrer Bitströme in Richtung ROM :lol:


Da tun sich für mich richtig "spannende" Fragestellungen auf die es gilt zu lösen.

Z.B. mehrere offene Dateiströme mit "locking" Mechanismus ausgelagerte Prozessteile ...
Ebend halt der ganze Schnik-Schank wie bei den Großen.

Und was macht die Forth Fraktion?

Grüsse Joshy
Frohf
Beiträge: 19
Registriert: Fr 24. Jul 2009, 08:16

Re: Jetzt geht's los ...

Beitrag von Frohf »

Und was macht die Forth Fraktion?
Na die arbeitet fleissig :D Nachdem ich jetzt zwei lauffähige Hives hier stehen haben (HIVE 55 hat noch bei mir sein neues Zuhause gefunden) bin ich an der adaptierung meines Forth.
Bei der Entwicklung von FPForth hatte ich ja sch Probleme mit dem Assembler. (Könnt Ihr im deutschen Proppelerforum nachlesen) Ich hatte damals dann den UCAsm und ein zusätzliches Tool von mir zum übersetzen benutzt. Für den Hive ist mir das aber zu umständlich und zu unflexibel, also hab ich angefangen einen Makroassembler für den Hive zu schreiben! :B5 Ich hoffe nächste Woche soweit zu sein das ich genaues berichten kann.
Das Forth wird übrigens in jedem COG ausführbar sein. Und Multicogbetrieb, mit ensprechenden Locking Mechanismen, funktioniert ja jetrzt schon. Erste Testsberichte werde ich am Wochenende veröffentlichen.
DJLinux

Re: Jetzt geht's los ...

Beitrag von DJLinux »

Ein besonderer Moment (zu mindestens für mich)
Samstag den 29.08.2009 um 5:55 Uhr "PORNO" die HiVe OS Alternative gibt sein erstes Lebenszeichen von sich.

Die Loader starten aus dem EEPROM's und laden die Kernals RIOS,BIOS und AIOS.

Der Loader von Administra installiert einen minimalen SD Treiber und lädt den Kernal "AIOS" und verhart dann im Jobloop.
Der Loader von Bellatrix installiert nur einen Keyboardtreiber und verhart im Jobloop.
Der Loader von Regnatix stellt fest ob es ein kaltstart war und installiert Prozesstabellen im eRAM. Dann setzt Regnatix den Jobaufrag zum laden von "RIOS" ab nach dessen installation läuft das Jobmangement an welches der Kernal "RIOS" zur Verfügung stellt.
Das Jobmangement synchronisiert taktgenau RIOS mit AIOS und mit BIOS.

Es existiert in RIOS ein Systemweiter Taktcounter im Jobloop werden die Taktcounter von AIOS und BIOS bei Bedarf nachgestellt die Taktabweichnung unter den Chips kann maximal 4 Prozessortakte betragen das Bedeutet 1/20_000_000 Sekunden damit kann man leben gell ;)

Das war es aber auch schon.

Als nächstes soll wenn beim Booten keine Taste gedrückt wurde oder kein Keyboard angeschlossen ist in den BIOS Kernal ein VGA im anderen Fall ein TV Treiber geladen werden.

Im low Level Entwicklungsstatus brauche ich aber noch keinen TV/VGA Treiber weil zur jetzigen Zeit ein Debugprozess ein Display über AIOS benutzt.

Wer in den nächsten Tagen die OS Entwicklung verfolgen möchte bekommt von mir eine Displaysimulation die läuft unter Linux und Windows und wird über die Hostverbindung mit AIOS gesteuert. Dann sieht der Betrachter genau das gleiche wie ich und das wird einiges sein.

Auch wenn noch ein par Fragezeichen über meinem Kopf schweben so macht es doch viel Spass dem HiVe ein neues/anderes Leben einzuhauchen und so oft schreibt man im Leben ja auch kein OS.

Grüsse Joshy
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: Jetzt geht's los ...

Beitrag von Rainer »

ROTFL .. Du willst Dein OS jetzt nicht wirklich "PORNO" nennen, oder ?

Aber schon mal Respekt von meiner Seite aus .. irgendwie muß Dein Tag mehr Stunden haben als meiner. Ich glaube ja Du cheatest Dir ein paar Stunden dazu ;)

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
DJLinux

Re: Jetzt geht's los ...

Beitrag von DJLinux »

"PORNO" ist nur der Arbeitstittel wenn man den Spass überhaupt als Arbeit bezeichnen kann.
Mein Tag hat auch nur 32 Stunden :lol: ne ich habe Urlaub und bin die Nacht um 2:00 Uhr aufgestanden um 5:55 war der erste RUN vom OS.

Ich schreibe gerade einen neuen SD Treiber in Assembler der braucht gar keinen eigenen COG und läuft im gleichem wie der Kernal AIOS somit sind ohne NIC schon 7 freie COG's auf Administra frei für eine "coole" Soundengine und ganz normale OS Tasks für Programme.

Ich denke/hoffe das klapt auch mit dem Keyboard und Mouse Treiber die laufen dann im Kernal BIOS dann sind auf Bellatrix auch 7 weitere freie COG's für VGA/TV und OS Tasks frei.

Der Kernal "RIOS" braucht für Speicher- und Processverwaltung und dem Jobmanagement auch nur einen COG und somit sind auf Regnatix auch 7 freie COG's für OS Tasks frei.

Das sind 21 freie Tasks minus 2 für VGA oder TV und 2 weitere für Sound dann bleiben immer noch 17 freie Tasks. Wenn dann noch der Compiler oder besser gesagt der Programmloader in die lage versetzt wird die Programme Chipunabhängig zu machen dann kann man von einem echtem 24 Multicore OS sprechen.

Mehre Mini Applikationen könnten sich auch einen COG teilen z.B. eine grafische Uhr oder Anzeige für Prozessauslastungen etc. Diese Mini Apps könnten auch z.B. von der Prozessverwaltung in regelmäßigen Abständen "schlafen" gelegt werden und z.B. 100 mal in der Sekunde wieder "geweckt" werden ohne das die visuelle Darstellung der Uhr etc. darunter leidet.

Ich denke [ALT] + [TAB] wie unter Linux und Windows ist keine schlechte Sache um zwischen den Aktiven Tasks zu wechseln.

Aber das sind alles Feinheiten die könnte man Zusammen ausbrühten jetzt geht's erstmal noch auf aller unterste Low Level Schiene weiter.

Grüsse Joshy
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: Jetzt geht's los ...

Beitrag von Rainer »

Ich würde Dir ja gerne helfen, aber da ich eher der Anwendungsprogrammierer bin brauche ich eine Basis auf der ich arbeiten kann.
Zum Beispiel den Texteditor könnte ich Dir durchaus schreiben ... nur worauf ? Ich kenne weder die Funktionsaufrufe Deines OS, noch die genaue Struktur, usw.

Ich werde jetzt erstmal abwarten was sich hier etabliert, bevor ich irgendeine Anwendung schreibe/weiterschreibe und mache derweilen ein paar "Machbarkeitsstudien" auf meinem System.

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
BorgKönig
Beiträge: 598
Registriert: So 24. Mai 2009, 11:24

Re: Jetzt geht's los ...

Beitrag von BorgKönig »

Hmmmmm... Ich würde Dir gerne in dein OS Projekt zuarbeiten. Aber, auch mir fehlt die Struktur... Wenn Dein Projekt bereits soweit läuft, das man "etwas sehen" kann, kann ich Dir evtl. beim optimieren helfen...

---

Mein OS Projekt schläft ersteinmal. Der IOS Einbau ist noch zu instabil. Von daher lasse ich das ersteinmal liegen...
Antworten