From 2c08a0cf1e50d0e9f259da76bb6b15c75238c8c3 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 25 Mar 2026 23:41:31 +0100 Subject: [PATCH] NodeOperatingSystem aktualisiert --- NodeOperatingSystem.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/NodeOperatingSystem.md b/NodeOperatingSystem.md index 0534f44..3c1cbfb 100644 --- a/NodeOperatingSystem.md +++ b/NodeOperatingSystem.md @@ -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: