NodeOperatingSystem aktualisiert

2026-03-25 23:41:31 +01:00
parent 4f9abb8751
commit 2c08a0cf1e

@@ -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_ 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.
# 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.
**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: