Embedded Software Entwicklung

Entwicklung von Embedded Software

Hochwertige Expertise im Bereich der Embedded Software Entwicklung. Das Zusammenspiel der Komponenten (Hard- und Software) muss perfekt aufeinander abgestimmt sein. Aus diesem Grund sind Embedded-Projekte sehr komplex. Das ist die Grundlage für eine zukunftssichere Embedded-Softwareentwicklung. In diesem Themenkanal finden Sie alles rund um die Softwareentwicklung für Embedded Systeme.

mw-headline" id="Herausforderungen_des_Embedded_Software_Engineering">Herausforderungen des Embedded Software Engineering[edit source code ]

Die Besonderheit von Embedded Systemen liegt darin, dass sie "universelle Systemintegratoren" sind. Das technische System wird durch wechselwirkende Bauteile gebildet. Durch die Vielzahl der Bauteile, die zunehmende KomplexitÃ?t der Einzelteile und des gesamten Systems und nicht zuletzt der Anforderung immer besserer Messsysteme ist es in der Praxis immer wichtiger, die Einsatzbedingungen der Produkte und die Wechselwirkungen mit immer mehr an Bedeutung zu gewinnen.

Die Entwicklung von Software für Embedded Systems stellt die Entwicklung vor besondere Rahmenbedingungen, die für die einwandfreie Funktionsweise erfüllt sein müssen. Durch die physischen Vorgänge, mit denen die Embedded Systems verbunden sind und deren Interaktionen von der Software zu behandeln sind, wird das Unternehmen gezwungen, sich in einer bestimmten Zeit zu bewegen. Weil die Zeitabfolgen z. B. bei geregelten Antrieben nicht geändert werden können, muss das Embedded Systems in Realzeit funktionieren, d. h. sein zeitliches Übertragungsverhalten muss an das umgebende technische Gesamtsystem angepaßt werden.

Führt eine Fehlverhaltensweise zu einer Gefahr für Mensch und/oder Sachwerte, darf sie nicht auftreten und das Gerät muss die Zeitbedingungen unter allen Umständen einhalten. Weitere Adaptionen am physikalischen Gesamtsystem können z.B. die höchstzulässige Leistungsabgabe, z.B. durch die maximal verfügbare elektrische Energie oder die Beschränkung der Wärmeentwicklung, oder den durchschnittlichen Energieverbrauch sein.

Eine Anpassung der Stromwerte ist in der Regel nur durch ein gemeinsames Hard- und Software-Engineering (Co-Design) möglich. Bei den besonders hohen Anforderungen an die Zuverlässigkeit von Embedded Systemen geht es um die Qualität von Hard- und Software. Software-Qualität ist die Summe der Eigenschaften und Eigenschaftswerte eines Softwareproduktes, die sich auf seine Fähigkeit zur Erfüllung spezifischer oder impliziter Anforderungen bezieht.

Als Reliabilität wird hier die Eintrittswahrscheinlichkeit eines Systems in einem bestimmten Zeitraum und unter den zu erwartenden Betriebsbedingungen verstanden, d.h. es ist unversehrt und es tritt kein Systemabsturz auf. Für Irrtümer oder fehlerhafte Aktionen, die die Betriebssicherheit beeinträchtigen, ist zu unterscheiden zwischen der Fehlaktion, die zu einem späteren Irrtum führen kann, der Fehlstelle im Geräte- oder Programmiercode, auch "interner Fehler" genannt, und dem eigentlichen Irrtum, auch "Fehleraktion" oder "Fehlerausfall" genannt.

Der Anteil der externen Störungen wird in FIT (Failure in Time, Number of faults occurred per 109 operating hours) mitgerechnet. Der durch Software verursachte Irrtum übersteigt ohne spezielle Vorkehrungen die Hardwarequote um ca. 100 bis 1000[2] Dies ist eine wichtige Funktion des Embedded Software Engineering, um diese auf die erforderlichen Grenzwerte zu senken.

Weiterentwicklungen wie Smart-Sensoren (Sensoren mit integrierter Vorausverarbeitung, z.B. durch Mikroprozessoren) oder MEMS (Mikroelektromechanisches System) belegen, dass die Penetration eines physischen Verfahrens mit Elektronikbauteilen zum Messen, Steuern und Regeln sehr umfangreich sein kann und dass die Abtrennung von physikalischem Prozess und Informationsverarbeitung nicht mehr aufrecht erhalten werden kann. In der Software-Entwicklung solcher Anlagen können die Problemstellungen durch zwei am häufigsten nachgefragten Merkmale dargestellt werden:

Einerseits sollte eine solche dezentrale Anwendung stabil, verlässlich und in Realzeit arbeiten, andererseits funktioniert die dezentrale Anwendung hochparallel, und das gesamte System ist in der Regel auch dynamisiert, d.h. die Anwendung muss sich an die veränderten Gegebenheiten gewöhnen. Zusätzlich zur algorithmenmäßigen Richtigkeit einer Anwendung müssen für Embedded-Anwendungen in der Regel eine oder mehrere weitere Voraussetzungen erfüllt sein.

Neben den Grundlagen des Software-Engineerings, die auch im Embedded-Bereich angewendet werden, können weitere Verfahren zur Erfüllung dieser Anforderungen eingesetzt werden. Abbildung 1 stellt das generelle Vergleichsmodell eines nicht verteilten integrierten Gesamtsystems dar. Kennzeichnend ist die enge externe Verbindung mit Hilfe von Stellgliedern und Stellgliedern; sie bilden die unverzichtbare Verbindung zu der technischen Umwelt, in die das Gesamtsystem eingebunden ist.

Auf die Benutzeroberfläche kann verzichtet werden, in diesem Falle ist es ein tiefgreifendes Embedded-System. Der Referenzaufbau verdeutlicht, dass Embedded-Anwendungen eine hohe Input/Output (I/O)-Bindung aufweisen. Entsprechend sind Hard- und Software in hohem Maße I/O-dominant. Das Echtzeitverhalten einer Softwareanwendung ist die am häufigsten auftretende Vorbedingung.

Das Echtzeitverhalten verweist auf das Bezugsmodell aus Figur 1, d.h. das Gesamtsystem muss in der Regel zeitnah auf externe Gegebenheiten mitwirken. Dies ist z.B. dann erforderlich, wenn in einer möglicherweise dezentralen Anwendung mehrere Aktionen parallel stattfinden müssen. Es stehen zwei Verfahren zur Verfügung, um die Verbindung zwischen Umweltereignissen und dem Embedded Systems herzustellen:

Zeitgesteuerte Ausführung und ereignisgesteuerte Ausführung. Der zeitgesteuerte Entwurf geht davon aus, dass es in der Software einen regelmäßig gerufenen Teil gibt, in dem das Vorhandensein von Vorkommnissen bestimmt wird. Der Zyklus zeit hängt von der erforderlichen Maximalreaktionszeit für dieses und andere Male im Netz ab.

Mit dieser Entwurfsmethodik wird ein statischer Entwurf erstellt, bei dem alle Tätigkeiten zur Kompilierungszeit bekannt sein müssen. Wie echtzeitfähig dieses Konzept ist, kann nachgewiesen werden, wenn alle Worst-Case-Ausführungszeit (WCET) und Worst-Case Unterbrechungsdeaktivierungszeit (WCIDT) bekannt sind. Bei ereignisgesteuertem Entwurf wird den Events selbst eine Interruptanforderung zugeordnet.

Allerdings kann das Gesamtsystem selbst nicht schlechter gestaltet werden als das zeitgesteuerte Konzept, da die Real-Time-Fähigkeit gewährleistet sein muss. Ein weiterer negativer Aspekt des ereignisgesteuerten Designs ist, dass die maximale festgelegte Eventrate nicht zwangsläufig einhalten wird. Weitere Hardware-Maßnahmen sind notwendig, wenn - z.B. durch springende Switches oder außerhalb der Spezifikationen arbeitende Subprozesse - die angenommenen Event-Raten übertroffen werden können, um die Funktionsfähigkeit der Anwendung zu gewährleisten.

Der zeitgesteuerte Entwurf kann generalisiert werden, um einen synchronen Systemaufbau zu wählen. Auf den Softwareentwurf bezogen bedeutet dies, dass die algorithmenmäßige Kalkulation und Verständigung (vor oder nach der Berechnung) in einer voraussichtlichen zeitlichen Spanne erfolgt und am Ende dieser Spanne alle Resultate als Input für den nächstfolgenden Zeitraum abgespeichert werden.

Bei echtzeitfähigen verteilten Systemen muss die Kommunikationsdauer selbst limitiert werden, was durch besondere Netze (z.B. TTP/C, Time-Triggered Protocol Class C oder verschiedene Echtzeit-Ethernet-Standards) sichergestellt ist. Bei der Entwicklung selbst muss dann die Vermutung, dass die Algorithmik innerhalb einer bestimmten maximalen Zeitspanne stattfindet, bewiesen werden (WCET-Bestimmung). Synchronsprachen, die die Entwicklung ermöglichen, sind Esterel, Lustre und Sign.

Es gibt nur wenige softwaregestützte Verfahren zur Erfüllung energie- oder verlustleistungsbezogener Anforderungen. Durch die Wahl eines Microcontrollers aufgrund seiner Energieeigenschaften oder gar die Umstellung auf andere speicherprogrammierbare Bauweisen wie Field Programmable Gate Arrays (FPGA) kann deutlich mehr Energie eingespart werden als bei reinen Software-Lösungen. Im Rahmen des Software-Designs können drei Verfahren zur Reduzierung des Energieverbrauchs und der Leistungsaufnahme eingesetzt werden:

Dabei wird die effektive Programmlaufzeit pro beobachteter ZE so gering wie möglich gehalten und in den Leerlaufzeiten des Prozessors der Betriebszustand "Ruhezustand" o.ä. ausgewählt. Die weitgehende Abschaltung und das Aufwecken des Prozessors kann nur von Fall zu Fall festgelegt werden und hängt vom Typ des Prozessors, der Planungsfähigkeit der Anwendung und so weiter ab.

Dies ermöglicht ein einheitlich funktionierendes Konzept mit minimaler Leistungsaufnahme. Optimal ist die Überperiode (= kleinster gemeinsamer Vielfacher über alle unterschiedlichen Periodensequenzen im System), aber die Einstellung der Taktrate muss für jede Einzelperiode möglich sein. High-Springen Helmut Balzert: Schulbuch der Softwaretechnik.

Volumen 1: Softwareentwicklung. Ein: In: EEEE Micro 24(6), S. 36-45. Sastry Shankar, Janos Szipanovitis, Ruzena Bajcsy, Helen Gill: Modellierung & Design von Embedded Software.

Mehr zum Thema