Wenn man gut portierbare Software für Embedded Systeme entwickeln möchte tut gut daran seine Software in Schichten einzuteilen. Oft sieht man Blockdiagramme die irgendwie ineienandergreifen. Besser ist es allerdings eine Schichtenarchitektur einzuhalten. 

Was unterscheidet nun eine Schichtentopologie von anderen Topologien?

Die Schichtenarchitektur ist ein angewandtes Strukturierungsprinzip für die Architektur von Softwaresystemen. Dabei werden einzelne Aspekte des Softwaresystems einer Schicht (engl. tier oder layer) zugeordnet. Die erlaubten Abhängigkeitsbeziehungen zwischen den Aspekten werden bei einer Schichtenarchitektur dahingehend eingeschränkt, dass Aspekte einer „höheren“ Schicht nur solche „tieferer“ Schichten verwenden dürfen.

 

Darüberliegende Schichten sind nur von darunterliegenden abhängig.

 

0 config Hier ist die Konfiguration des Systems untergebracht. Es gibt nur
1 constants  Konstanten die sich nicht ändern.
2 types  Typendefinitionen
3 base Hier sind Funktionen untergebracht, die bis auf die Konstanten keine Abhängigkeiten haben
4 hardware Hier ist die Hardwareschicht eines Prozessors zum Beispiel bei STM32 die st-lib oder ähnliches.
5 kernel modulsystem, startup,  filesystem startup
6 startup Startet das gesamte System
7 os Ist eine Schicht, die das Betriebssystem zugänglich macht und den Kernelmode vom Usermode trennt
8 baselib Library, die Funktionen, die von Betriebssystemfunktionen abhängig sind bereitstellt.
9 baseio Grundlegende Ein- und Ausgabe Dateisysteme.
9 device Geräte, die auf BaseIO-Geräten aufbaut.
10 hal Schicht, die hardwareabhängiges Verhalten normiert.
11 data_link Sicherungsschicht
12 network Vermittlungsschicht
13 transport Transportschicht
14 session Sitzungsschicht
15 presentation Darstellungsschicht
16 library Library
17 database Datenbankschicht. Hierbei sind datenbanken im abstrakten sinn und nicht beine spezielle umsetzung gemeine
18 domaine  
19 logic Logische Ebene eines Programms
20 application Application Layer