Effektive Embedded-Softwareentwicklung durch Simulation: Ein Fallbeispiel

Florian Mehrkens

06/13/2024

Nie wieder Fehler beim Verwenden von Flashspeichern! Ein Traum, der mit etwas Mühe zum Greifen nahe ist? Ja, zumindest kann man sich das Entwicklerleben sehr erleichtern, wenn Fehler von vornherein vermieden werden oder das System, in dem ein Fehler gesucht werden soll, vereinfacht werden kann. Keine neue Idee, aber wie kann man das umsetzen? In solchen Situationen kann die Simulation bzw. Emulation von einzelnen Hardwarekomponenten ein echter Retter sein.

Im November 2022 haben wir uns im Blogeintrag, „Simulation? Wozu, hab doch ’ne Hardware“, bereits eingehend mit den Vorteilen von Simulationen in der Embedded-Softwareentwicklung befasst und nebst zahlreichen Anwendungsfällen auch die Emulation von Flash- oder EEPROM Speichern erwähnt.

Der folgende Blogeintrag zeigt anhand eines konkreten Beispiels, wie solch eine Emulation von Flashspeicher-Hardware dabei helfen konnte, Fehler schneller zu finden und Software gezielter und besser getestet zu entwickeln.
 

Houston, we have a problem

Dieser oder vielleicht auch etwas weniger dramatische Sprüche geistern im Kopf herum, wenn aus dem sprichwörtlichen Nichts heraus ein Fehler im System auftaucht, bei dem auf den ersten Blick erstmal alles komisch zu sein scheint. So auch in unserem Beispiel. Es handelte sich um ein Embedded-System mit externem Flashspeicher, auf den regelmäßig geschrieben und wieder gelesen werden soll. Blöd nur, wenn die gelesenen Daten nicht immer den zuvor geschriebenen Daten entsprechen, sondern Abweichungen auftreten. Klar ist, der Fehler liegt im Detail, in den meisten Fällen funktioniert alles wie es soll und es geht nur um wenige Bytes unter den hunderttausenden auf dem Chip.
 

Von der Theorie zur Praxis: Vorgehen

Um solche oder ähnliche Fehler im Umgang mit Flashspeichern in den Griff zu bekommen, können bestimmte Abschnitte der Logik abstrahiert und durch eine Emulation nachempfunden werden.

Im ersten Schritt gilt es den Fehler einzugrenzen und zu reproduzieren. Dafür kann beispielsweise der Teil des Codes, welcher für das Schreiben und Lesen des Flashspeichers, also für die Kommunikation zuständig ist, aus dem Sourcecode des Projekts herausgelöst und so umgebaut werden, dass er in einer herkömmlichen Entwicklungsumgebung auf dem PC laufen kann. Dazu wird, je nach Komplexität, freilich einiges an zusätzlichem Code benötigt, welcher etwa die benötigten Datenstrukturen, Klassen oder die zu Schreibenden Daten bereitstellt.

Die Kernidee ist jedoch die Isolation des Problems, daher werden im zweiten Schritt die für den Hardwarezugriff auf den Flash zuständigen Methoden durch einen einfachen Dateizugriff ersetzt. Der Inhalt des Flashs wird also in einer Datei abgebildet. Statt tatsächlich auf die Hardware zuzugreifen, werden die gewünschten Speicherzugriffe demnach nun simuliert.

War man auf der Suche nach einem Problem mit dem Speicher, zeigt sich nun, nach Ausschlussprinzip, ob die Fehler in der Hard- oder der Software entstanden sind. Ist dies festgestellt, kann, durch debuggen oder weitere Abkapselung und Vereinfachung der Fehler eingegrenzt und gefunden werden. Für die Fehlerbehebung kann nun, Dank der Emulation deutlich robustere Software entwickelt werden, da sich spezielle Hardwarefehler einfach vortäuschen lassen, oder sich (Unit-)Testen und Debuggen gemütlicher gestalten. Diese und weitere Vorteile, die sich aus präventivem Simulieren ergeben, können demnach auch für eine Folge- oder Neuentwicklung interessant sein.
 

Durch Simulation zum Erfolg: Vorteile auf einen Blick

Zu den Vorteilen, Simulationen auch schon während der Entwicklung einzusetzen und nicht erst, wenn ein Fehler auftritt, zählen:

  • Erleichtertes (Unit-)Testen und Debugging
  • Verifikation von Speicherlayouts (Verhalten an Blockgrenzen)
  • Überprüfung des Langzeitverhaltens (z.B. bei Speicherüberlauf von Ringspeicherimplementierungen)
  • Einfache Simulation von Hardwarefehlern wie kippenden Bits, defekten Speicherblöcken usw.
  • Bessere Portierbarkeit durch Layering, Abstraktion und Kapselung

 

Fazit

Die Simulation von Hardwarekomponenten ist eine äußerst wertvolle Praxis in der Embedded-Softwareentwicklung. Natürlich ist nicht jede Hardwarekomponente so einfach zu simulieren wie in unserem Beispiel durch simple Nachbildung eines Flashspeichers. Jedoch vereinfacht dieses Vorgehen Entwicklern die Arbeit enorm und durch geschickte Abstraktion und Simulation können Projekte schneller vorangebracht und potenzielle Probleme frühzeitig erkannt werden.

In jedem Fall lohnt es sich, bereits zu Projektbeginn über die Möglichkeiten der Simulation nachzudenken und kreative Lösungen zu entwickeln. Wir helfen Ihnen gerne, zögern Sie also nicht, uns mit ihren Fragen anzusprechen.


Geschrieben von Florian Mehrkens


Weitere Beiträge

  • 19/03/2025
  • Allgemein, Unternehmen, Veranstaltungen

Wir freuen uns, euch zu einem exklusiven VDI-Event des Netzwerk Systems Engineering einzuladen, das bei uns im Büro stattfindet!Am Freitag, den 28. März 2025, wird sich alles um die ...

Weiterlesen
  • 13/03/2025
  • Allgemein, Unternehmen

MEDtech Ingenieur verstärkt sein Führungsteam: Seit März 2025 übernimmt Daniel Saffer die Rolle des Chief Technical Officers (CTO). Mit seiner langjährigen Erfahrung in der Entwicklung sicherheitskritischer Embedded-Softwarelösungen für die ...

Weiterlesen
  • 29/01/2025
  • Allgemein, Hardware, Testen

EinleitungUm bei der EMV Prüfung für die Zulassung neuer medizintechnischer Geräte das Risiko zu reduzieren machen wir gerne Vortests mit den Geräten in der Prototypen Phase. Aktuell unterstützen wir ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies