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
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
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
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.
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
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
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
ü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
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
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
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.