¶ Intro
Was? Moin, war einfach komplex. Wir sind wieder Gerrit oder Brückert Moin Burkhard.
Moin Moin und wir haben. Heute einen Gast, den Alexander Eisenhut. Da stellt sich gleich noch mal genauer selbst vor, ja, er ist aber Experte im Bereich Embedded Systems, und das ist auch unser Thema für die Folge, wir wollen mal verstehen, was Embedded Systems sind, wie die Software Architektur in dem Embedded System eigentlich aussieht, wo sie überall eingesetzt werden und was es sonst noch zu erfahren gibt in dem Bereich. Aber jetzt Alex überlasse ich
dir mal das Wort, wer bist du denn eigentlich und was machst du? Ja Moin Moin, mein Name ist Alex Eisenhut. Ich bin Embedded Software Architekt. Und wo in Freiburg hier Familienvater von 2 Kindern und habe meinen Weg in die Selbständigkeit schon 1996 gefunden, war dort in verschiedenen verschiedenen Unternehmen tätig und. Seit ungefähr sag ich mal 10 Jahren bin ich jetzt Software Architekt bei Embedded Systems, meistens in Teams, die agil
arbeiten. Was ist jetzt der Unterschied zwischen dem Embedded Software Architekten und einem Embedded Entwickler oder Developer? Lässt sich das kombinieren oder oder ist das noch ein bisschen eine andere Rolle, je nach. Teamgröße gibt es da eine dedizierte Rolle dazu? Also Teams, in denen ich unterwegs bin, ist immer so ungefähr zu zehnt und bei der Softwareentwicklung gibt es einfach immer architekturarbeit zu tun. Softwarearchitekt bist du der Kümmerer?
Dieser Arbeit, das heißt nicht, dass du es machen musst, sondern du musst es einfach auf dem Schirm haben, dass es gemacht wird. Ja, schön, dass du da bist und uns und unsere Hörer beglückst mit deinem, mit deinem Fachwissen. Wie fangen wir denn mal an, also willst du einfach mal einen Überblick uns geben über ein Embedded System, was das eigentlich ist und wo wir die finden. Battle System ist eigentlich immer ein System, das eine ganz spezielle Aufgabe hat und das
meist sehr zuverlässig erledigt. Bei der Zukunft sind eigentlich überall in unserer Umwelt, ich nenne mal ein paar, denkt man an
¶ Embedded Systems und Unterschiede zum PC
eure vielleicht ein bisschen modernere Kaffeemaschine. Da ist ein Beta System drin oder denkt mal an euer Auto, ein Bremssystem, das ist ja ein Teil vom ganzen Autosystem ist, da ist auch ein Embedded System drin oder denkt mal irgendwo in der Medizintechnik, dort wird ja ganz viel mit Embedded Systems gearbeitet, auch so endoskopische Operationen oder ähnliche Dinge sind einfach immer Systeme die ganz spezielle Aufgaben haben und das einfach ziemlich gut machen.
Im Gegensatz dazu kann man vielleicht so einen PC und eine Software auf dem PC. Das ist so eine generischere Geschichte. Auf dem PC kann man ganz viele Software Applikationen haben, aber ein Embedded System macht halt nur eine ganz spezielle Aufgabe.
Könnte man sagen, dass ein Embedded System sowas ist wie ein ganz ganz kleiner Mini Computer, der weil die sind also embedded heißt ja eingebettet, da läuft ja irgendwie Software, also das muss ja aber auch irgendwie ein Computer sein, dass die Software da irgendwie läuft, wahrscheinlich ist der dann irgendwie direkt an irgendwelche Kabel mit Kabeln verbunden, wo die Hardware dran ist. Ist das falsch wenn man sagt das ist irgendwie ein Mini Computer?
Ja, ein bisschen. Musst du zwischen der Technik und der Fachlichkeit unterscheiden? Die Technik kann ja alles möglich sein, was rechnen kann, das kann ein Computer sein, das kann Mikrocontroller sein oder was immer, aber das System hat ja immer ne fachliche Aufgabe, ne das muss ja irgendwas ganz spezifisches tun und das ist der Aspekt beim Embedded System. Die Aufgabe ist irgendwo integriert und nicht die Hardware.
Also es ist quasi genau nicht so, dass ich irgendwie auf der gleichen Hardware verschiedene Apps zum Beispiel beim Telefon laufen lassen möchte und mir morgen überlege, beim Telefon kann auch was anderes, weil ich irgendwie eine neue Kalender App
habe, sondern andersrum. Ich habe irgendwie genau ein einziges Stück Software und das wird quasi in Hardware gegossen oder eingegossen und dieses Stück Hardware so wie es da ist kann auch nur oder macht auch nur dieses eine Programm diese eine Aufgabe. Immer wieder gleich und immer wieder zuverlässig. Und es gibt nichts anderes, was
da irgendwie reinfunken kann. Ich. Glaube durch den Nagel auf dem Kopf, weil das wäre ziemlich unvorsichtig, wenn du neben deinem wirklich deiner spezifischen Aufgabe doch den Rechner andere Aufgaben machen lässt, dann. Beeinflusst sich das in der Regel eigentlich und das möchte ich eigentlich überhaupt nicht.
Kann. Man jetzt so sagen, man kommt bei dem Embedded System eigentlich von der Softwareaufgabe und die seitener Hardware, also die perfekt ist für diese diese Software. Im Gegensatz zum zum Telefon was erstmal? Ja ne ne ne starke Hardware ist die perspektivisch alles Mögliche an an Software ausführen kann. Eigentlich kommt es traditionell immer von der Hardware, weil du hast ja die Hardware Schnittstelle zuerst ne du hast n Gesamtsystem und da gibt es
dann verschiedene. Ich sag jetzt mal Busse, Busse, bussysteme so Industriebusse oder ähnliches. Wenn du im Automatisierungsbereich unterwegs bist oder du hast ein Gerät das du ansteuern musst. Es gibt ja immer eine Hardware vor und dann kommst du mit deinem System, machst eine Hardware die in dieses Hardware System technisch rein. Dann kommt die Software drauf. Ich glaub jetzt musst du mal erklären was n was n Bus ist. Den kennen viele nur von der Haltestelle.
Ja gut, jetzt erstmal was Allgemeines was Kommunikation ermöglicht. Da kannst du einfach mit anderen Teilnehmern in diesem Gesamtsystem kommunizieren und das läuft dann oft über Buße und die Industrie hat ganz spezifische Bussysteme, so dass einfach das ein sehr offener Standard ist, damit sich Geräte rein integrieren können, ohne dass es die anderen stört. Also da ist schon sehr genau vorgegeben, wie die Miteinander kommunizieren kann.
Man sich das so vorstellen, Alex, dass beim Bussystem. Das Daten losgeschickt werden an einer bestimmten Stelle und jeder Teilnehmer man könnte sich jetzt ich nehme mal das Busbeispiel aus der echten Welt Haltestellen ja also die Buße selber sind quasi meine Datenpakete. Und dann habe ich ganz viele Haltestellen.
Haltestellen sind diejenigen, die interessiert sein könnten an den Datenpaketen und dann fahren die Busse die Datenpakete an den Haltestellen vorbei und wenn ne Haltestelle Lust hat. Nimmt sie sich was raus aus dem Datenpaket oder packt auch was
rein? Ja, also entweder steigt was aus n Teil aus dem Bus rausgenommen und das wird wieder was reingegeben und dann fließt es weiter, aber man kann nicht verhindern, dass immer die Busse an einem Vorbeifahren den ganzen Tag irgendwie ist jetzt n gemaltes Bild, aber es gibt ja andere Kommunikationsprotokolle, die sind ja immer Punkt zu Punkt, da will ich genau mit einem also ich sag ja immer kleinen Server in der Webwelt gibt's ja immer das also ich
kommuniziere exakt mit einer Gegenstelle und beim Bus weiß ich gar nicht so genau wer irgendwie das alles erreichen wird und wer was damit macht, sondern da konzentriere ich mich eher quasi auf die. Ja, aha, so eine Art Kreisweg, ne, also der der, der der Weg ist festgelegt wo die Linie 3 immer lang fährt, er fährt irgendwo ab und kommt auch immer wieder an und das sind halt quasi meine Datenwege. Wenn du dann deine Anwendung an Haltestelle 3 baust in dem Haus
dahinter gehst du raus. Steckt die Pakete in den Bus rein, der fährt los und bringt sie dann an Haltestelle 1212 hat vielleicht wieder ne Antwort und dann gucken wir ob wir jetzt wieder bei 3 ob da für mich was drin ist. Dann nehm ich es raus und dann ist ne Information die die Applikation das Systems verarbeitet das passt schon so. Gut, jetzt haben wir Busse im Sinne der Kommunikationstechnik mit Bussen aus den Straßen, aus dem öffentlichen Nahverkehr
erklärt. Prima, aber trotzdem also noch mal, es sind 2 verschiedene Dinge, so jetzt soweit ein ein perfekt passendes Bild kreiert, ja was das gut erklärt okay verstanden gut, hat jetzt aber primär auch erstmal mit dem Bad Assistant nichts zu tun, nur das Embedded System oder wird eventuell gefüttert mit Daten aus diesem aus dem Bus letzten Endes oder zieht sich dort Daten raus. Okay gut also so eine Beta System ist eingebettet.
Also ich glaube eingebettetes System ist auch etwas was man ja sagt, wahrscheinlich auf Deutsch oder wie ist das im Sprech im Lingo wenn du unterwegs bist bei deinen Kunden sagt man eingebettetes System oder oder Embedded System worüber spricht man da? Man spricht eigentlich im englischen Embedded System an, aber klar, das im Deutschen heißt es eingebettetes System als Direktübersetzung.
Okay und ich würde versuchen, noch weiter zu verstehen, wo die Unterschiede sind zu einem normalen PC und so normal oder einen normalen Telefon, was wir so kennen und ich glaube für unsere Hörer ist es am einfachsten. Von irgendwas zu starten, wo man eine Vorstellung von hat, wo man schon mal was verstanden hat und dann auf so ein ungekanntes Terror wie Embedded System zu gehen. Ich stelle noch mal eine These auf Alex du. Korrigierst mich, wenn ich das falsch mache.
Für mich ist ja auch noch so n Unterschied, wenn ich jetzt so n so n Telefon zum Beispiel starte, also wenn es aus war und ich starte es, dann komm ich ja irgendwie erstmal auf so n Startbildschirm oder auch beim Betriebssystem ist ja ähnlich ne so da wird irgendwie alles geladen, da seh ich irgend n Desktop oder ne Oberfläche und dann muss ich erstmal aussehen was will ich überhaupt machen so ja jetzt mach ich Spotify an oder ich mach Word auf oder irgendwie was und kann man sich
da beim abbette System das so vorstellen, dass sobald ich das unter Strom setze wenn ich das Anschalte und das Strom bekommt? Das ist, wieso eine Art Kiosk System ist. Also da kann ich ja nichts auswählen.
Ich hab ja auch oft gar keinen. Vielleicht habe ich gar kein Interface dazu, dass ich irgendwie als Mensch damit agieren kann, ich hab ja gar keinen, vielleicht auch noch nicht mal ein Display da dran und es nimmt einfach sofort seine Arbeit auf und die Arbeit ist halt ganz klar fest definiert, weil wir vorher gesagt haben, es gibt ja nur eine Aufgabe und ein Programm, also kann das sofort gestartet werden, wenn ich es ausmache ist auch egal.
Also ich kann es so ein bisschen, ich habe so einen Drucker zu Hause, den kann ich halt aus und anmachen, mein Sohn macht das immer, dann habe ich das, quält mich immer, weil der macht das Halt aus und an so ganz schnell hintereinander und hinter startet und ich denke immer irgendwann bleibt das hängen und stirbt so weil der arme Software entwickelt, aber das muss der sich alles gedacht haben, dass das Abkann.
Ja und dann denk ich, na ist vielleicht n Embedded System und es ist dem alles völlig wurscht, ich mach das halt an und dann passieren halt Routinen und dann und wenn es zwischendurch ausgeschaltet wird es auch egal so, du nickst da mal gucken was ich jetzt für n Quatsch erzählt hab. Nee, also das kann man schon so vergleichen.
Ne, wenn du an einem Prozessor den Strom anmachst, dann springt der erstmal auf ne vorgegebene Adresse im Speicher oder in in der Hardware und startet erstmal so von 0 an ne, dann dann wird Schicht für Schicht sage ich jetzt mal in Betrieb genommen und. Dann irgendwann ist man aus einer Hardware Initialisierung draußen und dann geht's in die Software, wann auch immer dein Sohn ausschält wenn es ein robustes System ist, macht das dem überhaupt nichts aus.
Du kannst ja auch immer den Stecker rausziehen oder ähnliche Dinge wenn was kaputt geht, dann ist das meistens im applikativen Bereich, dann dann wird auch der Hardware manchmal.
Daten nicht mehr richtig abgelegt oder ähnliche Sachen, aber bei entweder System hat man selten diese Anforderung beziehungsweise man Designs ist so robust, dass also ne Rettundanz, also wenn das schief geht hat man immer zum Beispiel in so sicheren Systemen doppelte Speicherung und wenn der eine gerade korrupt ist, weil der Sohn halt gerade in dem Moment den Strom rausgezogen hat, dann nimmt er den anderen Speicher, der robust ist und handelt es dann selber.
Das ist dann beim Entwurf muss man das schon mal. Darauf achten jetzt. Sagst du Alex Speichern und Speicherung, das heißt mein mein Drucker speichert, hat also obwohl das irgendwie nur so ein ganz kleines Mikrochipchen ist, vielleicht dünn wie eine Briefmarke oder irgendwas auch so von den Ausmaßen ungefähr. Das hat dann auch irgendwie eine Festplatte drin und kann irgendwie was speichern, wie kann, wie kann man sich das jetzt vorstellen?
Ja, so eine kleine Hardware oder so eine System, eine Chip wie man auch allgemein sagt, das ist ja ein System aus verschiedenen Hardware Bausteinen. Und es gibt ja immer Rom Speicher oder Programmspeicher, der kann nur gelesen werden.
Dann gibt es RAM Speicher der auch geschrieben werden kann und den gibt es ja noch in in volatil oder in in statisch ne also der in persistent der verliert dann sein Gedächtnis nicht mehr wenn man einmal reingeschrieben hat und der andere ist der Arbeitsspeicher mit dem das Programm immer
arbeitet wenn es ausgeführt. Und ich habe ein Stichwort Eprom das habe ich immer, gehöre ich immer so als Passwort, haben vielleicht unsere Hörer auch schon mal gehört, ja, hier hat das Ding eprom oder irgend sowas, kannst du einmal eprom aufklären, was ist eprom hat das was mit Speicher zu tun?
Ja, das hat Rom zum Schluss. Das ist ein Read only Memory eigentlich, aber man kann einen Eprom einfach reinschreiben, rauslesen, aber es ist ein eigener Hardware Baustein mit einer bestimmten Technologie um dort persistent Daten abzulegen. Persistent heißt, ich kann ausschalten und was ich vorher geschrieben habe bleibt erhalten, wenn ich wieder anschalte kann ich darauf zugreifen.
Genau, dauerhaft. Jetzt sind wir schon also beide bei der Hardware und du hast jetzt System on Chip gesagt. Oder Onlineshop, oft abgekürzt SOC ne, da würd ich gerne mal kurz bleiben, weil die spielen ja glaub ich ne wichtige Rolle in nem Battle Systems. Ne, Warum heißt das nicht einfach Chip? Warum heißt das System on Chip oder oder also erklär doch mal. Ja, das lese ich tatsächlich oft. Eprom hab ich offen gestanden, noch nie gehört, aber systemodhip schon häufig.
Und das ist ja anscheinend die Grundlage. Also lass uns doch da mal n bisschen erklären, was das ist. Ich. Würd mal sagen die sind zuerst
¶ SoC: System-on-a-Chip
in den letzten sag ich mal 10 Jahren groß geworden.
Je komplexer die Systeme werden, desto leistungsfähiger wird die Hardware und in so n Chip. Also es ist ein Baustein, ist ein ganzes System integriert, da können mehrere CPUS integriert sein, da können mehrere Arten von Speicher integriert sein, da können so ganz spezielle Bussysteme schon drauf sein, zum Beispiel kann das schon USB drin sein oder alle anderen Peripheriebusse, da muss ich nicht aufzählen, ich glaube es verwirrt nur, aber das ist massig an so einzelnen
Komponenten drin, die man dann aber auch ganz individuell verschaltet und benutzen kann. Und das ist natürlich schon Wahnsinn, dass du so ein System hast, das du für dann ganz viele Anwendungsbereiche vorkonfigurieren kannst. Die sind natürlich schon ein bisschen so Grundausstattung.
Also entweder mache ich da Bildverarbeitung da vielleicht drauf, oder ich mache, ja, ich integriere mich in industrielle Bussysteme oder ich mache vielleicht Videobearbeitung, das sind dann schon Chips drin, die schon so. Spezielle Aufgaben erfüllen können und jedem näher oder je dedizierter die Hardware ist, desto leistungsfähiger kannst du
das auch machen. Ne, wenn du jpg in Software, also jpg so n Bildformat, wenn man das runter rechnet in Software brauchst du um ein Vielfaches mehr Zeit, wie wenn du eine reduzierte Hardware Komponente hast die das machen kann, deswegen spezialisierte Hardware schon ein bisschen für ihre Anwendung. Und die dann aber jetzt tatsächlich durch die Software, durch das eigentliche Programm, dann letzten Endes ihre Aufgabe perfekt erfüllen kann oder überhaupt erst ihre Aufgabe erfüllen kann.
Ich habe immer gehört, Firmware, Software, Hardware, also Hardware ganz unten und dann wird ja oft gesagt. Also mit dem Embedded Sachen mit denen ich arbeite. Ich weiß ja gar nicht, ob das in deiner Welt embedded ist, aber ich habe ja mal diese Arduino, die Arduino Sachen, die Arduino Chips, also das sind schon auch System on the Chip, die sind ja ganz klein, also die Kleinsten sind irgendwie so groß wie 2
¶ Hardware, Firmware, Software
Briefmarken aneinander etwas dicker und da hat man ein paar Kilobyte mal für unsere Hörer, also Arbeitsspeicher und so weiter ist im Kilobyte Bereich irgendwo also hier nichts hier mit Gigabyte und so muss auch schon gucken was man da tun kann. Ähm, aber da heißt es auch schon, wenn ich da drauf programmiere, sag ich mal, dann ist das wahrscheinlich schon durch dieses Arduino System irgendwie so ne Art, ja. Wach gemacht vielleicht, als dass ich jetzt so ganz low leveler bin.
Und es gibt halt quasi ne Firmware, heißt es immer ne Firmware ist schon vorinstalliert auf diesen Arduino Chips, die regelt wahrscheinlich diese, ja dieses Miteinander und die Steuerung der Komponenten die du
aufgezählt hast. Also zum Beispiel der Aufgelöteten und schon mitbereiteten Schnittstellen was weiß ich, Bluetooth und USB und so weiter aber kannst du uns Alex vielleicht noch mal genau auseinanderdröseln oder gibt's da auch nur Grauzonen und ist das Verhandlungssache was genau aus Hardware, Firmware und Embedded Software, also die Software die immer noch auf dem Chip ist macht man diesen Unterschied heute noch oder gibt es da fließende Übergänge?
In meiner Welt ist diese Begrifflichkeit Firmware ist die komplette Software, die auf einem Mikrocontroller läuft.
Das sind die ganzen Schichten. Wenn du ein Betriebssystem drauf hast ist das Betriebssystem und dann die Applikation drauf und so weiter und sofort, aber in deinem Fall programmierst du ja irgendwie auch schon in einer Software vielleicht ich weiß nicht genau, vielleicht ist da schon irgendeine Art von Software. Startet die nennt sich Firmware und Du machst da nochmal ne Applikation zusammen mit der anderen Grundsoftware wird das dann eine Firmware?
Eigentlich ist meine Welt so, ich lade die Firmware auf n Embedded System und das ist die Software und der Rest der. Hardware Okay das macht mir das ein bisschen einfacher. Es ist so ein bisschen, ich kann ja mal erzählen, wie das bei mir ist. Also es ist ja so, dass man. Das ist ja auch n riesen Unterschied. Wenn ich jetzt Software entwickel an meinem an meinem Laptop, dann sitz ich, dann hat mein Laptop natürlich n Display angeschaltet und ich entwickle direkt die Software.
Mit dem Gerät, wo die auch dann später läuft, also Entwicklungsumgebung und Editor für die Software zum Entwickeln und Ausführgerät für die Software, ist im Notfall, wenn ich im Testmodus bin und es nicht gerade die Cloud geladen hab das gleiche Gerät. Das funktioniert natürlich nicht für so n Embedded System, wenn ich auf meinem Arduino Chip, der hat gar nicht die Power irgendein Editor mir anzuzeigen, das heißt ich benutze jetzt meinen Laptop um die Software zu
entwickeln, die würde aber nie laufen auf meinem Laptop weil das funktioniert nicht weil der Arduino halt ein ganz anderer Hardware ist und so, aber ich habe quasi einen speziellen Editor, ein bisschen Unterstützung der mir sagt Okay das wird schon ganz gut werden für das was du dann machst.
Dann kompiliere ich das. Ich schreibe das in C plus plus bei Arduino und habe so ich habe 2 wichtige Funktionen die eine heißt Setup, die passiert, das ist so ein passt so ein bisschen zu dem Kiosk System was ich gesagt habe, setup wird genau dann aufgerufen wenn der Strom dran kommt, dann wird die einmal aufgerufen die Setup da kann ich alles mögliche initialisieren und so weiter und die andere Funktion heißt Loop und die wird so schnell aufgerufen wie dieser Mikroprozessor der auf dem
Arduino ist halt takten kann. Also eigentlich furchtbar schnell im Kreis und da läuft dann eigentlich die Software drauf, die ich so machen möchte. Ja und und wenn ich das dann geschrieben hab, die Software, dann kompilier ich das in C plus ist um das Kompilieren, dann entsteht ein ein binäres Produkt, dann ja ein Paar ein kein Paket aus binären Zahlen und das kann ich dann per USB Kabel runterladen auf. In Arduino Chip ja, und sobald das da drauf geladen ist.
Ihr kriegt ja Strom und das führt sich aus, ja. Also so, so so ist meine, so ist meine kleine Welt embedded, das ist eigentlich gar nicht ja das, das eigentlich gar nicht so kompliziert, aber dann verschmilzt wahrscheinlich das, was ich getan habe, als Anwendungssoftware mit der Software, die da schon drauf ist, zusammen zu einem großen Block Firmware und der ist dann halt quasi da drauf und wird ausgeführt. So jetzt deine Definition verstanden. In den Applikationsteil deine
Applikation mit rein. Das eine was du gesagt hast ist bestimmt die Initialisierung des Microcontrollers, weil du hast ja verschiedene Bausteine drauf, die können verschiedene Aufgaben machen, du kannst verschieden konfigurieren und danach läuft ja noch die Anwendung, das passt.
Ja genau, und da geht es immer ganz viel darum und ich weiß nicht, ob das, wenn das zu weit führt, dann musst du mich hier gleich mal abgrätschen, aber da geht es immer ganz viel darum, bei der Initialisierung zu sagen, welche Pins. Mit welchen Pins ich irgendwas mache und die Auslese. Und es gibt analoge Pins, also analoge Input Pins, analoge Output Pins und digitale Input und digitale Output Pins und diese 4 Sachen. Es gibt viele Konzepte am Ende.
Wir wollen jetzt auch nicht in unsere Zuhörer überführen, überführen, genau überfordern, aber ich glaube, dieses A, also analog Input, Output, Digital Input und Output, ist das, was auch was bei dir auch in deinen, in deinen täglichen Aufgaben eine Rolle spielt. Und wenn wenn das sehr zentrales Thema ist, können wir das kurz einmal anleuchten.
Sagen wir mal nicht, man wird hier als Softwarearchitekt aber für die Produkte, für die ich unterwegs bin, die haben auch analoge ein und Ausgänge und digitale Ausgänge. Aber natürlich. Okay, und damit kann ich dann quasi einfach einen Strom auslesen oder sowas. Wenn ich sage analoge Eingang, dann habe ich irgendwie eine Spannung anliegen und dann kann ich quasi an dem PIN quasi. Also da liegt dann irgendwie 3 Volt an, dann kann ich quasi in
der Software direkt auslesen. Ok es sind 3 Volt. Also das wird dann umgerechnet irgend ne floatingzahl oder ne integerzahl egal 3 Volt entsprechen dann 256 zum Beispiel und wenn 0 Volt ist ist es 0 und alles dazwischen ist halt der Zahl dazwischen und dann kann ich anfangen quasi aus einem Gerät was irgendwie Strom abgibt oder wo ich ne Spannung setze, denn es gibt ja Input und Output.
Das eine ist halt quasi lesen, das andere schreiben, dann kann ich damit anfangen schon zu lesen und zu schreiben und irgendwas zu steuern und zum Beispiel irgendeine Spannung zu regulieren, was dann dafür da ist, dass das Gerät was weiß ich ja irgendwie. Die Kaffeemaschine, dass sie sich aufheizt. Ja, also das ist ich glaub nicht, dass sie sich leistungsspannung ist. Da kommt noch mal ein Teil dazwischen. Aber genau wir. Müssen irgendwie mal jetzt
wieder den Bogen kriegen. Am Anfang hatten wir die Anwendungsbeispiele und dann meinte Alex, gäbe es die Kaffeemaschine, du hast ein Bremssystem im Auto, du hast gesagt irgendwas in der Medizintechnik, also eigentlich überall da wo du ein Gerät hast, was irgendwo innen drin auch Software hat, letzten Endes aber jetzt kein kein Display oder so per se sondern eigentlich eine Aufgabe erfüllt.
Ja genau, also. Display ist ein ein Teil des Gesamtsystems. Das ist eine Ausgabeschnittstelle, ne und ähm, Knöpfe oder whatever Buttons sind Teil des Systems Schnittstelle zum Menschen und das ist ne Eingabe jetzt. Sind wir schon n bisschen
eingestiegen in die Entwicklung? Also wie sieht denn so n Entwicklungsprozess aus von irgendeinem Embedded System und mach gern mal ein Beispiel, also schnappt ihr irgendwas, vielleicht kannst du ja anonym von einem Kunden erzählen oder denkst dir schnell 1 aus, weiß nicht neue Kaffeemaschine oder neues Auto, neues Bremssystem und wie geht's los? Wie wird Embedded Software entwickelt? Was welche Rolle spielt Architektur denn dort auch? Ja, führ uns doch mal durch diesen Prozess.
Okay dann machen wir mal die Kaffeemaschine. Ich glaub, das ist schön, das versteht jeder.
¶ Entwicklung eines Embedded Systems & Embedded Softwarearchitektur
Ein Hersteller kommt her und sagt, er möchte neue Kaffeemaschine. Er hat ja ein super Konzept, zum Beispiel möchte er es besonders energiesparend machen oder es muss, es kann super schnell aufheizen oder was auch immer das heißt er hat eine Systemidee so und dann überlegt er sich was. System, denn alles können soll, beschreibt es auf irgendeine Art und Weise und.
Dann kommt man, kommt der Systemarchitekt eigentlich ins Spiel. Erst ne der designt dann das System das das heißt der entscheidet Oh wo, hier brauch ich ne kleine elektronische Schaltung um das anzusteuern, hier brauch ich das und dann hab ich hier innen drin meinen Microcontroller, wählt dann auch den Microcontroller passend für die Anwendung aus, der wird dann kein System onechip mit irgendwelchen gigantisch schnellen Prozessoren nehmen, sondern der wird ein ganz kleines kostengünstiges.
Kostengünstigem Meiko Controller auswählen und dann integrieren in quasi so ein Systemdiagramm. Also man zeichnet sich zuerst so ein kleines Diagramm wo man das ganze System designt. Und mit diesem System geht man dann eigentlich her und spezifiziert das machen. Wir mal n paar Beispiele. Also ich will jetzt ne Kaffeemaschine, ich will dass die WLAN hat weil ich möcht die schon aufheizen lassen können, ist ne Siebträgermaschine, die soll sich schon aufheizen.
Wenn ich in der Nähe von meinem Haus ankomme, nach meiner Morgenrunde joggen, ja, dann soll das Ding aufheizen, damit ich, wenn ich da oben bin, in der Wohnung gleich Kaffee machen kann, ja. Genau das heißt, er würde einen Microcontroller auswählen, der schon eine WLAN, der schon WLAN unterstützt ne und dann musst du an dein Gerät an deine Kaffeemaschine n schön schön ne ne WLAN ANTENNE irgendwo
integrieren. Und. Du, wenn wir jetzt beim WLAN bleiben, dann auch beschreiben, was es denn jetzt über WLAN oder über eine LAN Verbindung machen soll. Also ein Use case musst du beschreiben, also sprich. Immer wenn ich komme auf mein Smartphone drücke oder von von unterwegs, schalte ich meine Kaffeemaschine ein und das ist dann quasi eine Systemfunktionalität, die du über irgendeine Schnittstelle
eben reinbringst. Das heißt, wenn du zeichnest, was du gesagt hast, wenn du dann quasi den Mikrocontroller auswählst und eine WLAN Schnittstelle und du das irgendwie zeichnest, kann ich mir das vorstellen wie beim richtigen Architekten, der in einem CAD Programm quasi ein Haus zeichnet, nur dass du quasi jetzt hier den Mikrocontroller
zeichnest als Hardware quasi. Und wenn du dann alles ausgewählt hast, die ganzen Einzelkomponenten den quasi aufs Blatt Papier oder wahrscheinlich mit dem richtigen, es gibt wahrscheinlich. Sehr wahrscheinlich hochspezialisierte Programme, mit denen man das quasi so wie beim CAD Programm Halt designen kann.
Dann suchst du dir eine Firma aus, die das Halt sehr günstig produzieren kann in einer hohen Schlagzahl und dann ist das quasi echt ein Stück. Also die die ganz kleinen Komponenten, die gibt es aus dem Schrank vielleicht im besten Falle aber das das ganze System dann dieses Embedded ja das Brett. Das ist dann das ja, das, das ist dann individuell für für die Kaffeemaschine wird das dann gemacht, irgendwo in was weiß ich ja und kommt zurückgeschickt
per Post und dann fängst du an die die Software darauf zu laden, oder? Also diesen Sock, den musst du ja erst noch auf eine Platine bringen. Also du brauchst ein Stück Elektronikentwicklung, dazu noch hardwareentwicklung und es muss ein bisschen aufpassen. Ich bin Software Architekt und kann systemarchitekt ja das Mach nicht ich, sondern ich habe es jetzt einfach mal exemplarisch beschrieben. Also System ist designt.
Jetzt sagen wir mal die Hardware ist bestellt und beauftragt und man hatte jetzt da ja und der Sock ist auf einer Platine. Die Software dafür schreiben. Wie geht das? Zuerst mal ne Software Architektur überlegen. Wie könntet ihr aussehen? Nein, jetzt muss ich mal kurz glaub ich Software Architektur abholen. Es ist so sagen wir mal ne Grube Strukturierung. Dessen, was die Software leisten soll.
Und da arbeiten wir ganz gerne mit logischen Komponenten, zum Beispiel Kaffeemaschine, habe ich irgendwas, was meinen Durchlauferhitzer oder Boiler ansteuert, dass die Temperatur hält, dann habe ich vielleicht noch irgendwas, wenn ich schon weiß, dass das WLAN gibt, dann habe ich irgendwas was kontrolliert das ein und ausschalten der Maschine aufgrund irgendwas, das kann ja einmal über den Ausschalter sein, aber zusätzlich möchte ich dann eben auch noch über WLAN
ein Ausschalten, das hat natürlich auch verschiedene Bedingungen. Und die Architektur? Die hat ein bestimmtes Muster. Es gibt so Software Architekturen für Kaffeemaschinen, vielleicht jetzt ganz passend, und es gibt Software Architekturen wie für Bild verarbeiten ganz, ganz passend sind. Und dann gibt es so Softwarearchitekturen für Systeme, die ich super erweitern können will. Unterscheiden sie sich in den Qualitäten?
Ne, Was möchte ich mit dieser Software machen können, weil Qualitäten sind so das was nicht die Funktionen sind, sondern was eine andere Abstraktionsebene ist. Ne Software die sehr performant ist, hat ne andere Architektur wie ne Software die eine einfache Benutzeroberfläche darstellt. Vielleicht, so kann man sich das entscheiden, so Grundorganisationen von Software ja. Eine Sache würde ich gerne noch
mal vertiefen. Wir haben ja auch schon mal in unserem Podcast über Funktionen gesprochen und über grundsätzlich wie Software aussieht. Da gibt es also bei der Software, die wir so als nicht Embedded Software benutzen, sondern als normale Software sag
ich mal. Gibt es sowas wie Klassen und Objekte und Funktionen. Gibt es das Konzept Funktion auch auf diesem Level und wenn, dann würde ich nämlich jetzt schon sagen, du hast ja das Beispiel genannt an und ausschalten und ich habe jetzt zum Beispiel 2 Möglichkeiten. Entweder drücke ich auf den Knopf an der Maschine zum an und
ausschalten. Oder äh, Garrett schickt irgendwie auf dem Telefon das anschalten Signal, das heißt über 2 unterschiedliche Wege kommt jetzt das Event, bitte anschalten, rein in die Software.
Und am Ende habe ich aber quasi ja nur diesen Boiler Kreislauf, wo ich ihm einmal sagen muss, jetzt an ja und würde man dann auch als Architekt sagen, OK, das packen wir irgendwie in der Funktion ja irgendwie Boiler an, könnte die heißen ne oder Heat oder heating oder irgend sowas und dann designe ich mir das so, dass ich quasi verschiedene Wege habe oder verschiedene Events habe, die dann auch beide auf diese eine Funktion zugreifen
können, damit ich nicht so ein Spaghetti bekomme und dann das Anmachen und Hochheizen für den Knopf von außen programmieren muss und dann nochmal das Anmachen und Hochheizen oder ausmachen für das WLAN Ding machen muss und vielleicht fällt mir noch was drittes und viertes ein und dann habe ich irgendwie einen Riesencode und Spaghetti. Und strukturiere ich also quasi dann den Code auch so, dass es irgendwie effizient genutzt
werden kann? Ist das auch Rolle des Embedded Software Architekten oder ist das auf dem Level gar nicht so abstrakt zu sehen mit Funktionen und so weiter, dass das einfach noch vom Code her noch irgendwie, wie soll ich sagen, noch Hardware näher und nicht so zu nicht so zusammenzufassen wie ich das gesagt habe? Das kannst du schon vergleichen. Du hast halt ganz viele Dinge, die dazu führen, um letztendlich
den Boiler an und auszuschalten. Du hast so von oben hast du ja schon gesagt, es gibt so ein Ereignis, aber damit das Ereignis eben den Boiler an und ausschalten müsste, sind noch ganz schöne Menge, andere Bedingungen müssen erfüllt sein, das heißt in der Architektur wird zuerst eine Komponente machen und sagen okay diese Architekten, diese Komponente ist für das Ansteuern des Boilers verantwortlich, das ist
jetzt. Von der Abstraktionsebene größer als eine Klasse eine einzelne, sondern es ist einfach mal so ein Aufgabenbereich. Dann habe ich aber noch eben die anderen Aufgabenbereiche und dann habe ich so Schnittstellen zwischen diesen verschiedenen Bereichen der Software und das ist das, was man so quasi als Architektur bezeichnet.
Ich als Architekt entwickle mit dem Team so eine Vision und sage okay wie wollen wir unsere Software strukturieren, wir alle kennen schon die ganzen Anforderungen und dann kümmer. Ich, dass die Schnittstellen stimmen, ne das dann alles gedacht ist was es können muss, aber die das Team das ist entwickelt, das kümmert sich dann wirklich ums Codieren, um das Austesten, um das auf das Gerät bringen.
Das Wichtige ist, dass wir beide natürlich das gleiche Bild haben, der Architekt und das Team. Gut, dann entsteht diese Software, wie auch immer. Ob man sich da wiederholt in den Funktionen oder ob man da Dinge wiederholt, wenn das Bucket fällt weiß hast du auch eine Ahnung, ich weiß nicht wie ihr bei der Software geschrieben wird, hast du mal? Hast du mal Embedded Software geschrieben Burkhard so Rumgefragt außer für Arduino.
Nee, ich habe nur, also tatsächlich nur als Hardware, nur diese Arduino Sachen da gehabt, aber auch da kannst du ja auch unter dieses Level, was ich gerade gesagt habe, Setup und Loop, das ist natürlich, da machst du die Anwender Software.
Ich habe aber mal eine Bibliothek geschrieben für das Arduino und das geht sehr wohl, also ging bei Arduino sehr wohl mit der Programmiersprache C plus plus, die ja voll in der Lage ist Funktionen, Objekte, Klassen und so weiter darzustellen und genau und da musste ich mir eigentlich ähnliche Fragen stellen wie über der normalen Software Entwicklung sich das so gut Strukturiere und zusammenbastelt, dass. Dass ich nen möglichst kurzen, effizienten und sehr wartbaren Code habe.
Ja, ich weiß nicht inwieweit ich also was was ich gehört habe ist ja, dass die die Hardwareentwicklung, die geht ja immer weiter voran, also wir können ja heute auf viel kleinerem Raum, auch wenn es embedded ist, schon viel mehr schaffen und auch bei niedriger Energieeffizienz und so weiter.
Dann sind so sprachen wie C, Plus, Plus oder C. Ich glaube C ist ja so der UR Standard oder C plus Plus sind glaube ich schon auch Sprachen mit dem, mit denen solche Kaffeemaschinen programmiert werden oder? Und dann habe ich ja die, habe ich das in der Hand oder ist das oder gibt es noch andere Programmiersprachen, sage ich mal für. Für Embedded Systeme. Es ist im Endeffekt nicht mehr als die Programmiersprache da,
da gehört nicht mehr dazu. Ne, ich hab ja nur eine Sprache, ich hab einen Compiler und der übersetzt das in Maschinencode und einfach ne interessante Erkenntnis die den Maschinencode sieht es nicht mehr an ob der NC Plus Plus in C oder in anderen Programmiersprachen geschrieben ist. Und jetzt die zweite Frage nach der Programmiersprache. Ja, C und C plus Plus sind die angestammten.
Ganz früher waren wir Assembler, aber das kommt nur noch ganz selten zum Einsatz und Rust, also eine Programmiersprache, die sich so gerade erhebt und. Sage ich mal den Einzug anfängt. Klar, man kann auch Java natürlich auf so einem Embedded System laufen, dass mich mein Arduino kannst du bestimmt auch mit Java programmieren, nehme ich mal an. Du hast halt dann immer so ein bisschen Overhead, da wird ja das Speicherprogrammspeicher einfach benötigt.
Wenn du komplexe oder abstraktere Programmiersprachen oder wie Python oder was auch immer auf so einen Chat drauf haben möchtest. Vielleicht Haken wir das noch mal fest. Ich wiederhole das mal. Ich glaube, das ist ein ganz wichtiges Konzept, was vielleicht unsere Hörer mitgeben können. Also das Konzept des Compilers. Und weil du sagst es, dann ist
es eigentlich egal. Das sehe ich ja genauso, also wir haben, was ist denn noch mal genau der Compiler, also wir haben eine Programmiersprache CDA C plus plus, das ist wie Englisch oder Französisch, ja EC plus plus sage ich immer so ein bisschen eher wie Latein. Den Entwickler schon ziemlich haarig, ja, aber trotzdem irgendwie ne Sprache, die man als Mensch irgendwie komprimieren kann. Also kann man verstehen, kann man lesen und so weiter was man
¶ Compiler
nicht mehr kann ist das was dann passiert. Der Compiler der C plus plus Compiler nimmt diese quasi in so ne Art englische geschriebene Sprache, die man noch als Entwickler verstehen kann und komprimiert das in wirklich eine Abfolge von 100 Nullen im Binärpaket und zwar jetzt ist wichtig, es gibt der gleiche Stückcode kann im Prinzip mit unterschiedlichen Einstellungen des Compilers. Verschiedene Hardware fertig gemacht werden, so dass es dann
da gut läuft, das ist wichtig. Also da steckt total viel Know How in dem Compiler ein, ein ein binäres Bündel zu schaffen, ein Maschinencode, nämlich der Mikrocontroller, der versteht nur Einsen und Nullen, ne der versteht nicht mehr hier irgendwie IF Thunder Else oder irgend sowas, ja der versteht nur diese Einsen und Nullen im Bündel und zwar auch nur so, wenn sie für seine Architektur richtig zusammenkondensiert wurden und dieses und dieses Kompilieren, das kann ich noch
machen, überall irgendwo auf meinem Laptop. Und aber dieses binäre Bündel, was da rauskommt, das ist dann nur noch ausführbar für die Embedded Hardware, für die es dann halt quasi gedacht habe. Und dahin lege. Ich glaube, das ist wichtig, ja hak mich hak ein Alex, wenn ich zu stark vereinfacht habe er. Versteht nicht Nullen und einzelne, weil das wäre ja sehr binär, würde ja nur Nullen 1 verstehen, sondern er hat eigene Befehle, die er versteht.
Instruction Set, Ich weiß es nicht genau, die Risk Prozessoren. So ganz spezielle Prozessoren, ob die jetzt 2030 40 Befehle haben, was sie verstehen, weil was machen die, die Schreiben irgendeinen Wert an irgendeine Stelle oder Register im CPU dann berechnen können Sie ja schon, also die können ja schon bisschen so mathematische Operationen durchführen und und und du.
Denselben Compiler für unterschiedliche Hardware, sondern du nimmst einen Compiler, der ne spezielle Hardware unterstützt um diese Instruktionen herzustellen als Programm. OK, perfekt. Das heißt du sagst der Mikrocontroller hat ein minimales Set, das hatten wir auch mal ne Folge, das stimmt. Von von ganz unten an der Low levelten Kante irgendwie
befehlen. Das sind vielleicht nur 1020 oder irgendsowas und die wilde Kombination und die richtige Abfolge von diesen Befehlen führt am Ende zu einer komplexen Logik und. Und und diese, und zwar zu der komplexen Logik, die ich da mal in C plus Plus oder C
ausgedrückt hatte. Ja exakt der Übergang zwischen der Hochsprache, die wir als Mensch verstehen und der wirklich low Level Sprache, die dann noch der der CPU versteht, oder der Mikrocontroller hat, das Macht der Compiler, dann haben wir das mal festgehalten, das ist gut. Dann steht ja eine wichtige Rolle nach dem während der Entwicklung eigentlich schon, aber auch danach, dass das Testen und die Backen die Backen eher während der Entwicklung.
Wie funktioniert das mit so einem System oder mit einem Mikrocontroller, weil es ist ja wahrscheinlich einen Tick anders als am Computer ist. Forderung und dann anschließend die Frage, wie kommt das Stück Software, was denn da entwickelt wurde auf hunderttausend Kaffeemaschinen, ja die dann vielleicht produziert werden oder noch mehr. Wie funktioniert das? OK, also wenn du deine große
¶ Testen und flashen
Aufgabe in Kaffeemaschinen in viele kleine Aufgaben schneidest. Du hast die Architektur, du weißt die Schnittstellen, also du weißt, wie dein Stück Code, das du schreiben möchtest, auszusehen hat, dann machst du das heute eigentlich so Testgetrieben, das heißt, dieses kleine Stückchen, das du schreibst, da schreibst du einen Test dazu und testerwartungen, das heißt, wenn ich. Schöne Dinge ausführe, möchte ich als Ergebnis das haben und.
So organisierst du dann deine Entwicklung und wenn du diesen diesen Testcode dann geschrieben hast, dann integrierst du den in das bestehende in die bestehende Architektur und testest es dann auch auf der Hardware damit. Wenn ich jetzt hier mal. Meinen Boiler einschalten möchte, dass der auch hinten wirklich anschallt und das nennt man dann so eine Software Hardware integrationstest. Ähm.
In der industriellen professionellen Entwicklung gibt es jetzt solche sogenannte Systeme dazu, die das, wenn du eine Änderung am Code machst, möchtest du ja auch ausschließen, dass du dadurch andere Programmteile
beeinflusst. Und dann gibt es ein CI System, das heißt da gibt es ein Testsystem, wo 12 Kaffeemaschinen mit unterschiedlichen Softwareständen, unterschiedlichen Ausbaustufen drin ist und sprich die Software auf und das wird getestet, soweit als möglich ist immer schwierig Hardware. Zu erfassen, das heißt so ein Thermometer dann auch ins Wasser reinzuhalten. Es wird ja auch sehr langwierig sein. Aber gibt es andere Test Ausstattung um das zu ermöglichen, das heißt?
Änderungen an der Software werden in einen, in einen in einen Softwareänderungsstand eingepflegt und getestet und das wird dann automatisiert gemacht. Wenn du dann irgendwann mal so deine kleinen vielen kleinen Aufgaben fertig hast und du bist eigentlich sicher, dass es jetzt deine Kaffeemaschine fertig ist, dann machst du so einen Systemtest.
Du hast am Anfang dir ja aufgeschrieben, das muss meine Kaffeemaschine alles können und wenn ich dann mit dem Auto herfahre und auf WLAN über WLAN hier die Kaffeemaschine einschalte, muss das auch alles erfolgen das. Auch nochmal alles manuell nachtesten und dann machst du einen Knopf dran. Dann sagst du jetzt ist meine Software fertig. Diese fertige Software kannst du ja aus deinem Programmcode jederzeit herstellen und es gibt dann während der Produktion der Kaffeemaschine.
Den Schritt, den auch der Burkhard macht, nämlich. Er bringt uns seine Software auf das Gerät drauf, das nennt man oft flashen, weil es in diesen persistenten Speicher reinschreibt, und dann ist da eine Kaffeemaschine fertig, kann rausgeschickt werden. Und das Flashen passiert dann sehr schnell und in irgendeinem Produktionsschritt einfach in der Produktion der Kaffeemaschine. Das ist so schön, dass du sagst, und dann machst du einen Knopf dran und dann ist die Software fertig.
Ich glaube, das ist auch ein Unterschied von, also bei Embedded zu normaler Software, die ist nämlich gefühlt nie fertig. Gerade wenn wir jetzt, ich spanne mal kurz zum Web rüber, da ist ja eine Software, die lebt ja davon, dass die ganz viele Abhängigkeiten hat und also der Browser die ganzen Sicherheitsbibliotheken und und
und. Pdf, Verarbeitung und so weiter und alles das verändert sich ja in Lichtgeschwindigkeit um dich herum, das heißt du musst ständig deine Software wieder anfassen, wieder aufmachen, nur alleine um sie sicher zu halten und um die neuesten Patches einzuspielen und Sicherheitsglück die gefunden wurden habe ich nicht das Problem bei Embedded Systems, weil die Hardware und alles um mich rum ist ja festgezömert. Ist halt die Kaffeemaschine.
Ja, und das ist natürlich n ganz schönes Gefühl, dass dann irgendwann mal alles getestet ist, funktioniert und dann funktioniert es im besten falle, sofern der Akku noch hält und alles irgendwie von der Elektronik sauber ist, auch noch die nächsten 40 Jahre oder schon ganz cool. Ja so. Ist die Bauteile noch gibt natürlich ne. Ja und Nein. Es ist manchmal so, manchmal auch nicht.
Es gibt ja auch komplexere Dinge, wenn du Betriebssysteme drin hast, zum Beispiel Linux, es gibt ja auch Embedded Windows, es gibt ja was auch immer, und die haben natürlich auch sicherheitslippen. Die müssen natürlich dann auch fixen, und das heißt, du musst dann auch ein Update reinbringen und das musst du dir halt eine Software Architektur dann auch
¶ Bare Metal vs. OS
überlegen. Mache ich ein Betriebssystem rein, wenn ja welches und warum und das sind alles so Aufgaben so Architektur Entscheidungen die Software Architekt eben irgendwann mal fällen muss. Warum sollte ich denn das machen? Also tatsächlich bringst du mich jetzt auf was ich warte mal mit Android und Embedded an Android auch in Anführungsstrichen zu tun in der Vergangenheit. Und auch n Windows wie auch n Android oder sowas ist ja dazu in der Lage. Viele verschiedene Programme
oder Apps auszuführen. Und das hatte ich verstanden auf einem Embedded System. Das war eigentlich genau ein Programm, was zum Beispiel ne Kaffeemaschine regelt oder sowas warum wie komm wieso komm ich jetzt auf die Idee im Betriebssystem da drunter zu packen? Es kommt auf die Komplexität des Problems an, des der löst. Wenn du nur ne Kaffeemaschine stehst.
Ich glaub du wirst kein Betriebssystem dazu nehmen, dieser Programmablauf, den kannst du schon selber komplett implementieren und das sagt man auch, das sind bare Metal, sind also so wirklich direkt auf der Hardware und sonst nix so aber denk mal an. System im im im mcdonalds oder Burger King wo ich wo ich meinen Kram bestelle. Wenn ich dahin gehe. Ja, schon eher ne. Wenn du zum Beispiel viel Grafik brauchst. Du brauchst parallele Prozesse, du hast viele Dinge, die
miteinander vernetzt sind. Im Traktor vielleicht so ein so ein Ja auf dem Feld gerade das sind doch da sind doch total die Kassen Displays drin und so weiter und das muss ja mit allem irgendwie Kurbelwelle enden und irgendwie Trecker.
Du magst noch ein GPS dran? Genau und was auch immer und wenn du dann auch noch verschiedene verschiedene Prozesse hast, mit denen du kommunizieren musst, also je komplexer dein Problem. Desto eher nimmst du dann noch ein Betriebssystem rein, weil es einfach schon viel eingebaut hat und weil es dir die Hardwareabstraktion wegnimmt,
ne? Wenn du ne Hardware von Betriebssystem unterstützt wird, dann brauchst du keine Treiber zu schreiben, also keine Software Schicht die direkte Hardware ansteuert, sondern das hat schon mal jemand anders für dich gemacht. Verstehe das, spart ja unter Umständen. Also Zeit in der Entwicklung und es öffnet dir hinten raus vielleicht auch noch mehr Möglichkeiten, weil du auch so ein Betriebssystem ja auch vielleicht noch mal eine neue App drauf packen kannst oder
sowas. Im Betriebssystem ist wie zum Beispiel Embedded Linux. Dann kannst du die ganzen Tools und Utilities von Linux benutzen, was deine Entwicklung viel geschmeidiger macht, viel schneller macht, als wenn du wirklich auf dem Microcontroller direkt wie auf dem Arduino mit der ide Programmierst. Gibt. Irgendwelche Zukunftsaussichten also? Wie verändern sich Embedded Systems in der Zukunft, wenn sie
sich dann verändern? Ja, ich habe jetzt gehört, dass ja doch eigentlich überall Betriebssysteme reinkommen und wirkt dann irgendwie alles schon so ein bisschen wie ein. Smartphone in anderer Form ja, bin ich da richtig in der Annahme oder ist das eigentlich ganz anders? Ich weiß nicht, ob ihr es mitgekriegt habt, aber die Verschmelzung von Mensch und Maschine, das ist ja wirklich so ein Ding, das ja Science. Immer, ähm, Beredet wird aber
¶ Ausblick
jetzt kürzlich aufs Unternehmen, die diese die Chips ins menschliche Gehirn eingepflanzt haben. Das sind natürlich Embedded Systeme und die es ermöglicht, dann für medizinische Anwendungen, dass Patienten allein über ihre Gedanken gehirnströme wird vom Embedded System wahrgenommen, andere Geräte steuern können oder auch Prothesen ansteuern. Also das ist zwar wirklich ganz ganz jung, aber diese medizinischen Anwendungen, die gibt es schon und die funktionieren auch.
Immer besser also, das ist Horror, aber auch ja eine Möglichkeit, um Menschen zu helfen, ihre Defizite einfach auszugleichen. Und das finde ich schon auch sehr spannend. Ich glaube, man muss halt wirklich. Sehr genau hinschauen, was man erlaubt und was man nicht erlaubt oder was man machen möchte oder nicht machen möchte mit dieser Technologie.
OK, und das klingt jetzt ja erstmal so, als würde es den Menschen helfen und klingt irgendwie auch ziemlich viel cooler als ne Kaffeemaschine. In der Tat. Aber klar, das ist dann wirklich so speziell o. K, das heißt n Embedded System, was wirklich in der Lage dazu ist, die Eingangssignale des Körpers aufzunehmen und dann Aktoren in irgendeiner Art Implantat oder eine Prothese oder sowas zu bewegen. So.
Exakt natürlich anlernen und. Wenn man dann an lernen denkt, da ist natürlich auch sehr schnell bei der KI, weil es gibt natürlich auch KI auf Embedded Systeme, die sehr auf dem Vormarsch sind. Ok, da würde ich jetzt vielleicht auch noch eine Sekunde bleiben. Also das heißt, bisher redet man ja irgendwie von so Large Language Models, LMS und wie der Name schon sagt, sind die
ziemlich groß. Jetzt habe ich aber auch schon von den von den SL MS gehört, den Small Language Models ist das etwas in die Richtung die du da anreißt oder? Ja, ich glaube, das ist auch sogar. Der Ursprung der KI? Die Mustererkennung.
Also ich hab für n Sensorhersteller gearbeitet, der hat dann eben so n so NKI Modell auf NFPGA integriert und das macht jetzt Barcode Erkennung ne das macht es wahnsinnig schnell, viel schneller als dass man es ne Software machen kann und diese Modelle musst du dann einfach lernen und dann kannst du Barcode erkennen und ist auch auf dem Embedded System integriert, also nicht groß. Cool okay also da steht noch. Ja, viel an beim Thema Embedded Systems in Zukunft.
Dir wird nicht langweilig? Absolut. Ja, mir hat das n gutes Bild gegeben über Embedded Systems. Also ich mir war schon vorher halbwegs klar was es ist, aber nicht was dahintersteckt. Alex haben wir noch irgendwas vergessen, was du umdenkt, uns noch erzählen möchtest? Rundum beim Werte Systems. Ja, vielleicht noch mal das so was die generelle Entwicklung bei Embedded Systems im Vergleich zu Webanwendungen ausmacht.
Embedded Systems hast du ja eigentlich so ne ganz spezifische Anforderung und du machst jetzt aus einer Kaffeemaschine vielleicht auch keine Teemaschine unbedingt, das
¶ Embedded vs. Web-Entwicklung
ist schon irgendwie alles dann ein bisschen vom System her anders und deswegen gibt es eigentlich nicht mehr so grundlegende Änderungen und die Software ist viel stabiler. Wenn du jetzt eine Yoga App im Web entwickelt, dann gehst du ja viel Hypothesenbasierter vor, weil du gar nicht weißt wie dein Benutzer der. App benutzt wieder darauf reagiert, was der cool findet oder so.
Und da das das ist so n Trend, das sieht man, dass die sich diese Art der Entwicklung der Softwareentwicklung sich sehr ausdifferenziert was in Systems angeht und was es Informationssysteme oder Web oder Cloud Anwendungen angeht, wo man den Benutzer mit drin hat und die man auch dann quasi an seinen Reaktionen was er gut findet oder schlecht findet dann
einfach auch ausrichtet. So ist eigentlich mehr Hypothesenbasiert. Das andere ist mehr Anforderungsgetrieben. Schon ein ganz großer Unterschied. Verstehe gut, das war eine wichtige Ergänzung. Burkhard, willst du noch was
dazu sagen? Als Webentwickler siehst du das auch so. Ja, voll also das ist ja, das ist ja das leid, du musst ja irgendwie refaktorisieren, sage ich immer, ist das Stichwort, also du bringst was ins Feld irgendwie, es hat ja auch wirtschaftliche Aspekte, muss auch mal irgendwann fertig werden und so, gerade wenn eine kleine Firma bist, das kann man ja, das Lied können wir ganz laut singen und. Ja, und dann benutzen die ersten User das und die sagen, Oh nee und so und hier die UI und so
und dann fängst du an ständig. Deswegen sagte ich ja, deswegen sagte ich gerade schon, es ist ja so Herrlich zu sagen die Software ist fertig, ja die Software ist halt auch im Web nicht fertig wegen nicht nur wegen den Dependencies, sondern halt auch weil Kunden UX Mode es gibt Mode unter der Software Sachen so Gerrit sagt mir neulich Boah das sieht irgendwie ja das ist ja irgendwie schön so Material UI und so, aber irgendwie sieht das total altbacken aus, es gibt
Modeerscheinungen und auf einmal muss es irgendwie müssen die Ecken wieder ein bisschen runder sein und die und die Fenster ein bisschen transparenter und so und dann fängst du schon wieder an Rumzuschrauben an der Software und dieses Geschraube ist halt nie zu Ende, das ist genauso wie er sagt und das ist für die Architektur total wichtig, weil du musst mich tatsächlich entsorgt, den Code so anlegen, dass der, ohne dass er total kaputt geht und völlig Spaghetti ist.
Zum Schluss in der Lage ist, irgendwie ein bisschen hin und her geschiftet zu werden, je nach Anforderungen. Ja, ich glaube das ist, das kann man halt viel besser leisten, wenn man die Power hat der Hardware dahinter. Denn immer Generizität und und und. Wenn du Code so schaffst, dass er, dass er einfach zu verändern ist, verlierst du immer Performance.
Es ist einfach so. Ja ist glaube ich ein mathematisches Grundgesetz und bei den embalted Systemen wollen wir das nicht, da wollen wir exakt das, was es tun soll, sehr gut, sehr performant, sehr energiesparsam irgendwie hinrichten und es nicht noch mal komplett umbügeln, da kann man halt die Türen zuschließen. Freiheitsgrade auch aus meiner Richtung reinbringen. Bei uns sind es dann jetzt
weniger die. Das UI, das hier treibt, oder die Technologien, die Plattformen, die Frameworks oder ähnliche Dinge. Aber wenn du Produktvarianten hast, du hast jetzt eben nicht nur eine Kaffeemaschine, sondern du hast 12 oder vielleicht kann das Ding tatsächlich auch irgendwo in einem anderen System eingesetzt werden, dann musst du ein variantenmanagement dir überlegen, das heißt dieselbe Software so Aufteilbar machen, konfigurierbar machen, dass die für ganz verschiedene Anwendungen.
Zwecke auch wieder eingesetzt werden soll, weil du möchtest den Code ja eigentlich auch nicht noch mal dann einfach
schreiben. Ne, das verstehe ich also für die Kaffeemaschine 50€ kostet die die 150€ kostet und die 300€ kostet oder wie bei den Staubsaugern ne kann halt quasi die Software die Embedded Software auch mehr oder weniger ja also wenn wenn der Gerrit sich die 400 Rauslässt, dann kann die halt WLAN bei der 100€ Variante schmeißt du das WLAN raus und musst dann halt und dann ist eine andere Variante von fast dem gleichen Code WLAN access wenn. Nicht sogar die gleiche Software drauf ist.
Die wird nur anders parametriert. Das ist natürlich im besten Fall, also WLAN funktion einfach ausgeschaltet, wenn man so will auskommentiert der Code. Nein, nicht auskommentiert. Die Entscheidung, was das Varianten, ob das zum Zeitpunkt des Programmstarts entscheiden möchte oder zum Zeitpunkt, wenn du das Programm übersetzt, das sind so 2 Möglichkeiten, die musst du dir auch vorher überlegen, wie du das dann angehst. Compilation, Time und Runtime ja.
Ok, dann würde ich sagen, passt das erstmal und würde sagen wir kommen zum Ende von unserem Podcast. Aber nicht Alex, ohne dir noch mal die Gelegenheit zu geben, noch mal auf ja, deine Dienstleistung auch hinzuweisen, vielleicht vielleicht den Zuhörern noch mal zu sagen, wie man dich erreichen kann. Und wenn es um ein Embedded System Projekt geht, oder vielleicht sagst du einfach mal selber, in welchen Fällen man dich erreichen sollte.
Ich bin ja jetzt schon seit wie gesagt seit über 10 Jahren Software Architekt Systems und das heißt ich arbeite da im Projektteams mit Unterstützung. Die aber bei mir gibt es eben auch ein Mentoring in Embedded Software Architektur. Das heißt, wenn ein Entwickler Architekt werden möchte, dann macht er ja in der Regel Fortbildung, da gibt es jetzt AQB, das ist so ein Zertifizierungsprogramm.
Und ich unterstütze ihn dann aber in seiner alltäglichen Arbeit, weil als Entwickler hast du nen anderen Fokus. Wir als Architekt und vor allem ist diese Zusammenarbeit mit dem Team meistens herausfordernd. Du bist im Unternehmen auch in das Produktmanagement integriert. Genau da helfe ich mit meiner Erfahrung.
Das heißt, dass ich so ein Mentoring, das über ein paar Wochen geht, wir stecken uns so Ziele und wir telefonieren uns dann auch in der Woche zusammen und das ist dann so ein ganz lebendiger Austausch, und ja, das ist beides bei mir gibt. Es auch gut und wo kann man da mehr Infos noch finden?
Alexander Eisnuth im Netz googlen, dann landet bei mir die Domain ist eisenhut se de. Das sollte man hören, werden wir auch verlinken, natürlich in den Shownotes ja, dann mal herzlichen dank Alex für die Einblicke, die du uns gegeben hast und bis bald. Danke. Ja, wirklich ne sehr kurzweilige Angelegenheit. Hat viel Spaß gemacht. Ja, mir auch und entschuldigt
¶ Kontakt Alex
liebe Zuhörer. Ich hatte heute mindestens 12 Frösche im Hals und immer noch einen. Meine Stimme macht heute nicht das was sie soll, aber das wird vielleicht die nächste Folge wieder besser kann man sich nicht gegen wehren. Alles klar, Schiff aus Hamburg auch an meiner Stelle. Alex, vielen Lieben Dank.
Schluss aus, Freiburg. Einfach komplex wird präsentiert und produziert von Highsomware. Wir freuen uns auf deine Fragen und deinfeedbackanpodcast@heiseweb.com vielen Dank fürs Hören dieser Folge bis Dienstag in 2 Wochen und Tschüss aus Hamburg.
