NodeOperatingSystem aktualisiert
@@ -7,13 +7,23 @@ Der Anwender ist frei in der Wahl des Betriebssystem für seine Mikrocontroller-
|
|||||||
- _kann_ in beliebigen Abständen Pakete mit gemessenen Sensordaten versenden (dafür gibt es spezielle Nachrichten)
|
- _kann_ in beliebigen Abständen Pakete mit gemessenen Sensordaten versenden (dafür gibt es spezielle Nachrichten)
|
||||||
- _kann_ auf eingehende Pakete reagieren (z.B. reagiert bei mir ein LED-Strip-Controller-Node auf Nachrichten eines Bewegungsmelder-Nodes)
|
- _kann_ auf eingehende Pakete reagieren (z.B. reagiert bei mir ein LED-Strip-Controller-Node auf Nachrichten eines Bewegungsmelder-Nodes)
|
||||||
|
|
||||||
AqHome liefert für meine eigenen Nodes ein einfaches Betriebssystem mit, das diese Aufgaben erfüllt und leicht erweiterbar ist. Dabei benötigt es nur vergleichsweise wenig FLASH und selbst kaum RAM.
|
AqHome liefert für meine eigenen Nodes ein einfaches Betriebssystem mit, das diese Aufgaben erfüllt und leicht erweiterbar ist.
|
||||||
|
|
||||||
Außerdem enthält das System noch einen Bootloader, der das Flashen einer neuen Firmware im Feld über das Inter-Node-Netzwerk erlaubt.
|
Außerdem enthält das System noch einen Bootloader, der das Flashen einer neuen Firmware im Feld über das Inter-Node-Netzwerk erlaubt.
|
||||||
|
|
||||||
|
|
||||||
# AqHome-Betriebssystem
|
# AqHome-Betriebssystem
|
||||||
|
|
||||||
|
## Übersicht
|
||||||
|
|
||||||
|
Das System weist folgenden Eigenschaften auf:
|
||||||
|
- verwendet keinerlei Verwaltungsstrukturen für Anwendungen oder Treiber, sondern wird nur durch einsortieren von Routinen-Aufrufen organisiert, benötigt dadurch selbst kaum RAM
|
||||||
|
- nur Single-Tasking (würde nur die Komplexizität und den RAM-Bedarf erhöhen)
|
||||||
|
- Ereignis-gesteuert (Ereignisse sind z.B. Timer-Interrupt, eintreffende Nachrichten etc.)
|
||||||
|
- vollständig in Assembler geschrieben
|
||||||
|
|
||||||
|
## 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.
|
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.
|
||||||
|
|
||||||
**Module** sind lowlevel-Code und in erster Linie Treiber für Hardware-Geräte (z.B. den Umweltsensor SI7021) oder für Protokolle. Sie enthalten z.B. auch Interrupt-Handler.
|
**Module** sind lowlevel-Code und in erster Linie Treiber für Hardware-Geräte (z.B. den Umweltsensor SI7021) oder für Protokolle. Sie enthalten z.B. auch Interrupt-Handler.
|
||||||
@@ -53,9 +63,13 @@ Dadurch muss in der main.asm eines Mikroprozessor-Nodes nur diese Direktive eing
|
|||||||
> ```
|
> ```
|
||||||
>
|
>
|
||||||
|
|
||||||
Das Betriebssystemselbst besteht eigentlich nur aus einem einfachen MainLoop. Dieser Loop ruft als erstes alle RUN-Funktionen der Module und Anwendungen auf und legt den Prozessor dann schlafen (SLEEP). Aus diesem Schlaf wacht der Prozessor durch einen Interrupt auf. Das ist in der Regel der Timer-Interrupt, der alle 100 Millisekunden ausgelöst wird. Somit schläft das System die meiste Zeit (ausser bei Devices, die viel arbeiten müssen, wie z.B. solche mit graphischem Interface).
|
## Zentraler Loop
|
||||||
|
|
||||||
# Device-Hauptanwendung
|
Das Betriebssystem selbst besteht eigentlich nur aus einem einfachen MainLoop.
|
||||||
|
|
||||||
|
Dieser Loop ruft als erstes alle RUN-Funktionen der Module und Anwendungen auf und legt den Prozessor dann schlafen (SLEEP). Aus diesem Schlaf wacht der Prozessor durch einen Interrupt auf. Das ist in der Regel der Timer-Interrupt, der alle 100 Millisekunden ausgelöst wird. Somit schläft das System die meiste Zeit, was den Stromverbrauch senkt.
|
||||||
|
|
||||||
|
## Device-Hauptanwendung
|
||||||
|
|
||||||
Die Hauptanwendung eines Device/Node sollte die folgenden Labels enthalten, die vom Betriebssystem außerdem noch aufgerufen werden:
|
Die Hauptanwendung eines Device/Node sollte die folgenden Labels enthalten, die vom Betriebssystem außerdem noch aufgerufen werden:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user