NodeOperatingSystem aktualisiert
@@ -22,6 +22,14 @@ Das System weist folgenden Eigenschaften auf:
|
||||
- Ereignis-gesteuert (Ereignisse sind z.B. Timer-Interrupt, eintreffende Nachrichten etc.)
|
||||
- vollständig in Assembler geschrieben
|
||||
|
||||
## Historie
|
||||
|
||||
Am Anfang der Entwicklung meiner AVR-basierten Geräte hatte ich zunächst die Idee, ein einfaches Betriebssystem zu schreiben, das z.B. Treiber abstrahiert, und fortschrittliche Timer implementiert. Dabei hat sich schnell herausgestellt, dass hierzu selbst bei "leerem" System (also noch ohne Treiber und Anwendungen) schon erstaunlich viel RAM verbraucht wird, der aber z.B. für die Anwendungen benötigt wird. Zudem haben die AVRs nur sehr wenig RAM und teilweise auch nur wenig FLASH-Speicher. Daher musste eine Lösung her, die keine Verwaltungsstrukturen braucht (schon eine Sprungtabelle für Treiberfunktionen belegt 2 Byte pro Eintrag).
|
||||
|
||||
Das wird am ehesten erreicht, indem für jeden Treiber bzw. Anwendung ein paar wenige Einsprünge definiert werden und an entsprechenden Stellen des "Betriebssystems" aufgerufen werden.
|
||||
|
||||
Um das ganze modular zu halten und dennoch nicht für jedes Gerät den ganzen Code kopieren zu müssen, werden diese Aufrufe durch Precompiler-Direktiven geklammert, so dass in der Main-Datei eines Devices nur noch die Liste der zu verwendenden Treiber und Anwendungen definiert werden müssen. Um den Rest kümmert sich das System.
|
||||
|
||||
## Beschreibung
|
||||
|
||||
Das System läuft auf den Mikroprozessor-Geräten (_device_, _node_), es unterscheidet zwischen Modulen (_modules_) und Anwendungen, (_apps_) wobei von beiden jeweils mehrere aktiv sein koennen.
|
||||
|
||||
Reference in New Issue
Block a user