Von der Steuerung von Aufzügen, Ampeln, den Ventilen Ihrer Waschmaschine oder sogar wie lange Ihr Toaster toastet, Embedded Computing ist überall.
Echtzeit-Embedded-Systeme sind eine Teilmenge von Embedded Computing, die kritische Prozesse innerhalb einer starren Frist abschließen müssen. Denken Sie an das Airbag-Auslösesystem eines Autos. Wenn der Mikrocontroller nicht innerhalb von Sekundenbruchteilen eine Kollision erkennt oder den Airbag elektronisch auslöst, ist das Ergebnis katastrophal.
Daher werden eingebettete Echtzeitsysteme oft mit unfehlbaren Anwendungen wie autonomem Fahren, Flugsteuerung oder Raketenstartinstrumenten in Verbindung gebracht. Sie sind aber auch das Herzstück eines jeden Speichergeräts. Und ihre kompromisslose Natur stellt Ingenieure vor ebenso zermürbende wie aufregende Herausforderungen.
Eingebettet in eingebettet
Udi Shnitzer ist Senior Manager von Realtime Embedded Firmware-Engineering bei Western Digital in Israel. Er erklärte, dass jedes Flash-Speichergerät eine bestimmte Datenrate in Echtzeit unterstützen muss, gemessen an der Anzahl der Transaktionen zum Speicher pro Sekunde oder wie viele Megabit pro Sekunde durch das Gerät bewegt werden können.
„Wenn ich festlege, dass ich vier Gigabit pro Sekunde in den Flash schreiben kann und ich nicht jedes Megabit in durchschnittlich 1/400 Sekunde schreiben kann, hält das System nicht“, sagte Shnitzer.
Shnitzer ist ein zwei Jahrzehnte alter Veteran der Echtzeit-Software und glaubt, dass nur wenige Handwerke es mit seiner technischen Schwierigkeit aufnehmen können. „Echtzeit-Embedded-Systeme stellen einige der größten Herausforderungen für das Hardware-Design und die Firmware-Programmierung dar, da sie zeitgebundene Aufgaben mit extrem begrenzten Ressourcen erledigen müssen“, sagte er.
„Eingebettete Echtzeitsysteme stellen einige der größten Herausforderungen für das Hardwaredesign und die Firmwareprogrammierung dar“
Read More: Die Zukunft bauen: Der nachhaltige Neustart der Fertigung
Während es relativ einfach ist, die Speicher- und Arbeitsspeicherkapazität in Computern und Servern zu erhöhen, haben eingebettete Systeme diesen Luxus nicht. Sie arbeiten mit festgelegten und begrenzten Ressourcen.
„Das erfordert viel Kreativität“, erklärt Schnitzer. „Der zugewiesene Speicher ist extrem begrenzt, sodass wir keine Anwendungen mit vielen Codezeilen schreiben können. Dennoch müssen wir immer noch sehr komplexe Operationen liefern. Wir müssen beim Programmieren extrem kreativ, originell und effizient vorgehen.“
Technische Sherlocks
Shnitzer und sein Team arbeiten an Western Digital iNAND-Produkte, der eingebettete Flash, der in allem zu finden ist, von Autos bis hin zu Smartphones und IoT-Geräten. Der allgegenwärtige, eingebettete und globale Charakter der Produkte birgt jedoch auch einige einzigartige Herausforderungen, insbesondere für das Debugging.
Während allgemeine Software debuggt werden kann, indem sie auf einem Computer oder einem mobilen Gerät ausgeführt wird, wenn es sich um eine App handelt, funktioniert dies bei eingebetteter Software nicht ganz. Wenn bei einem Auto in Korea ein Problem mit seiner eingebetteten Flash-Komponente auftritt, kann Shnitzer nicht einfach zum Autohersteller gehen, um es auszusuchen. Um diese Probleme zu lösen, bedarf es des Flairs detektivischer Arbeit.
„Wir können ein Problem nicht verstehen, wenn wir keine Informationen darüber haben“, sagte Shnitzer. „Das bedeutet, dass Sie im Voraus wissen müssen, welche Daten in Echtzeit auf dem Gerät gespeichert werden sollen, damit Sie bei Bedarf einige Hinweise zum Lösen haben.“
Hinweise wie thermischer Stress oder elektronische Interferenzen müssen jedoch immer noch in diese anfängliche, anspruchsvolle Speicherbeschränkung passen. Effiziente Wege zum Sammeln der Daten zu finden, „ist eine Aufgabe, bei der Können und Erfahrung vorherrschen“, sagte Shnitzer.
Eine Arbeit der Logik und Argumentation
Für Sowjanya Sunkavelli, eine in Bangalore ansässige Firmware-Engineering-Technologin von Western Digital, ist das Debuggen von Echtzeit-Embedded-Firmware wie das Lösen eines logischen Puzzles. „Im Gegensatz zur Softwareprogrammierung können wir nicht visuell sehen, was genau passiert“, sagte sie. „Wenn also etwas schief geht, sollten wir auf der Grundlage unserer Logik und der während der Laufzeit gesammelten Hinweise daraus folgern und zu einem Schluss kommen.“
Sunkavelli arbeitet an den Echtzeit-Embedded-Systemen der USB-Geräte des Unternehmens und Produkte für SD-Karten. Im Vergleich zu den iNAND-Produkten oder SSDs von Shnitzer haben USB-Geräte oft weniger strenge Echtzeitgrenzen. Diese Produkte stellen jedoch andere besondere Herausforderungen dar, die nicht weniger großartige Ingenieurskunst erfordern.
„Auf einer winzigen microSD-Karte, die so groß wie ein Fingernagel ist, laufen im Hintergrund Millionen von Codezeilen, nur um ein Foto von Ihrem Mobiltelefon zu kopieren“, sagte Sunkavelli.
„Auf einer winzigen microSD-Karte, die so groß wie ein Fingernagel ist, laufen Millionen von Codezeilen im Hintergrund“
Aber es wird noch komplexer. USB- und SD-Karten haben extrem kleinen RAM. Da diese Geräte für jeden Geldbeutel erschwinglich sein sollen, finden viele Untersuchungen und Berechnungen statt, bevor jedes Byte RAM hinzugefügt wird, um die Kosten so weit wie möglich zu senken.
Darüber hinaus nutzen diese Geräte häufig Speicher niedrigerer Qualität, bei denen zusätzliche Fehler- und Speicherbehandlung zusätzlich zu anderen Echtzeitoperationen durchgeführt werden müssen.
„Dies erfordert Innovationen, die es in keinem anderen Flash-Produkt gibt“, sagte Sunkavelli. All diese zusätzlichen Codezeilen, die überprüfen, ob die Daten korrekt in das NAND geschrieben wurden, müssen irgendwie in die begrenzte Menge an RAM passen.
Sunkavelli beschrieb das Herzstück des Echtzeit-Embedded-System-Designs: ein Puzzle aus fortwährenden Einschränkungen, die wählerische, clevere Algorithmen erfordern. „Wir brauchen Algorithmen, die mit minimalem Arbeitsaufwand das maximale Ergebnis erzielen“, sagte sie. „Sie wären überrascht, wie viele Prozesse ablaufen müssen, bevor ein Gerät einen tatsächlichen Schreibvorgang durchführt, und wie viele Patente dafür erforderlich sind.“
Die Nebenläufigkeit von eingebetteten Echtzeitsystemen
Die gleichzeitige Natur von Aufgaben und Schichten innerhalb eines Echtzeit-Embedded-Systems ist der schwierigste Teil des Systemdesigns. Ingenieure müssen alles berücksichtigen: Boot-Firmware, Gerätetreiber, mehrere Uhren, Timer und Schnittstellen, eingebettete Betriebssysteme, Anpassungsschichten und Hardwarebeschleuniger.
„Wir müssen entscheiden, was unsere höchste Priorität ist“, sagte Sunkavelli. „Aber wir müssen bedenken, dass eine andere Schicht und Benutzerbefehle einen Prozess jederzeit unterbrechen können. Daher sollte jede Schicht einen Puffer haben, um Anfragen von der anderen zu prüfen und ein Prioritätensystem zu erstellen, das daran arbeitet, wie diese Anfragen berücksichtigt werden. Wenn nur eine Ebene einer Anfrage nicht nachkommt, werden Probleme auftreten.“
Für Schnitzer, Multithread-Programmierung ist der Schraubenschlüssel für Echtzeit-Embedded-Systeme. „Es ist, als würden zwei Leute nach demselben Stück Kuchen auf einem Teller greifen“, erklärte er. Während im Leben eine Lösung durch Gesten oder Worte gefunden wird, spricht man in einem Echtzeit-Embedded-System von einer Kollision.
„Wenn es keine klare Definition dafür gibt, welche Aufgabe die Ressource zuerst erreichen muss, kommt das System zum Stillstand, oder noch schlimmer, es führt eine unerwartete Aktion oder ein unerwartetes Verhalten aus, das möglicherweise das genaue Gegenteil des beabsichtigten ist.“ sagte Schnitzer.
Die Anforderungen an die Zuverlässigkeit dieser Produkte sind hoch. „Mobile, Computer, künstliche Intelligenz und andere Industrien basieren auf [Western Digital] Systeme. Wenn unser Speicherchip Probleme hat, die den Benutzer betreffen, könnte eine ganze Produktlinie ausfallen“, sagte Shnitzer.
Scheitern ist keine Option
Ob es sich um ein Airbagsystem, eine Flugsteuerung oder ein Flash-Gerät handelt, jedes Szenario eines eingebetteten Echtzeitsystems muss mit unnachgiebiger Vorhersagbarkeit entworfen werden.
Bei Western Digital arbeiten Hunderte von Echtzeit-Embedded-Software-Ingenieuren wie Sunkavelli und Shnitzer an der Entwicklung neuer Algorithmen, Datenschemata und Speicherverwaltungsfunktionen. Für den Verbraucher unsichtbar, trägt ihr Einfallsreichtum zur Schaffung bemerkenswerter Produkte bei.
1 thought on “Eingebettete Echtzeitsysteme: Eine Arbeit der Logik”