Systemdesign / Entwicklungsmanagement Verteilte Systeme akkurat entwickeln

Bild 1: Ein generisches verteiltes System
Bild 1: Ein generisches verteiltes System

Bei der Entwicklungsplanung moderner Embedded-Systeme dürfen die Hard- und Software nicht unabhängig voneinander betrachtet werden. Das simultane Debugging von Hard- und Software in einer kombinierten Umgebung birgt erheblichen Anspruch.

Die Komplexität von Chips und verteilten Systemen stieg in den letzten Jahren erheblich. Dabei verlagern sich immer mehr Systemfunktionen von der dedizierten Hardware-Implementierung hin zur Software, die auf verteilten Prozessoren ausgeführt wird.

Generische verteilte Systeme

Zunächst werden Aufbau und Entwicklungsherausforderungen eines verteilten Systems aufgezeigt. Bild 1 zeigt hierzu den generischen Hard- und Software-Aufbau. Das System-on-Chip (SoC) auf der linken Seite ist ein typisches Design basierend auf einem Prozessor-Subsystem, das verschiedene Prozessoren mit einer kohärenten Verbindung zum Rest des Chips enthält. Das SoC integriert auch anwendungsspezifische Komponenten für Grafik, digitale Signalverarbeitung, dedizierte Hardware-Beschleuniger sowie Schnittstellen mit unterschiedlicher Geschwindigkeit. Eine der wichtigsten Herausforderungen für die Entwicklung eines solchen Bausteins ist es, sicherzustellen, dass die Integration aller vordefinierten Silizium-IP-Blöcke korrekt funktioniert; sowohl im Kontext von neu entwickelten Funktionen als auch komplexer Protokolle für die Datenübertragung, in Relation zu der auf den Prozessoren ausgeführten Software.

Die rechte Seite im Bild 1 zeigt denselben SoC in seinem Systemkontext. Die Verbindungen zwischen dem SoC und den Schnittstellen im System werden auf der Leiterplatte hergestellt und basieren oft auf Standards wie MIPI, Ethernet, PCIe und USB. Nun verlagert sich die Herausforderung während der Entwicklung von den on-Chip-Bereichen auf das Verhalten des Chips in seiner Umgebung. Etwa die Validierung der korrekten Anzeige, der von der Grafikengine erzeugten Bilder, auf dem externen Display. Verschiedene Effekte außerhalb des SoC und in der Systemumgebung müssen zusammen mit Effekten innerhalb des SoC berücksichtigt werden, da sie oft den Grafikinhalt beeinträchtigen und die Systemkontrolle übernehmen.

Bild 1 illustriert auch verschiedene Softwarearten: von der Anwendungssoftware, die auf dem Applikationsprozessor läuft, zu den OSI-Kommunikations-Ebenen, die es dem Modem ermöglichen zu kommunizieren sowie Software, die direkt auf dem Prozessor ohne ein Betriebssystem ausgeführt wird.

Sowohl Hardware als auch Software werden in Hierarchien, von IP-Blöcken bis zum Endgerät und von Software-Treibern bis hin zur Applikationssoftware, entwickelt. Der komplexe Hardwareanteil ist auf der Chip-Ebene weitgehend aus vordefinierten Hardwareblöcken und Subsystemen zusammengesetzt. Das SoC selbst ist zusammen mit anderen Chips und passiven Komponenten auf Leiterplatten integriert und wird dann weiter in die eigentliche Baugruppe der System-Hardware integriert, die vom Endverbraucher genutzt wird. Verschiedene Softwareschichten implementieren Anwendungen, die von der Nutzererfahrungen definiert werden. Diese werden unter Umständen durch komplexe Middleware ermöglicht, die ihrerseits auf Betriebssystemen ausgeführt wird und je nach Anwendung echtzeitfähig sein müssen. Zudem verbinden Software-Treiber die Software mit den Hardware-Komponenten.