00:00:07: Hallo und herzlich willkommen bei Digital Future, dem Podcast zu Technologie
00:00:11: und Unternehmenskultur.
00:00:13: Mein Name ist Wolfgang Schoch und ich bin Agile Coach bei InnoVex.
00:00:16: Ich habe aber auch schon einige andere Sachen gemacht und so die IT-Branche
00:00:20: aus verschiedenen Blickwinkeln kennengelernt.
00:00:23: Zum Beispiel als Softwareentwickler, als Experte für Suchtechnologie oder im Vertrieb.
00:00:28: Ich freue mich, euch in jeder Folge des Podcasts eine Kollegin oder einen Kollegen
00:00:32: vorzustellen und mich mit ihr oder ihm über das jeweilige Fachgebiet zu unterhalten.
00:00:36: So bekommt ihr einen Einblick in unseren technologischen und unternehmenskulturellen Alltag.
00:00:41: In der heutigen Folge spreche ich mit meinem Kollegen Stefan Lengfeld und meinem
00:00:45: Kollegen Florian Limberger.
00:00:47: Beide sind im Bereich Embedded Systems unterwegs und darüber unterhalten wir uns auch.
00:00:52: Mich hat interessiert, wie die Entwicklung von Embedded Projekten aussieht und
00:00:56: wo die Besonderheiten liegen, vor allem im Vergleich zur klassischen Softwareentwicklung.
00:01:00: Ich wünsche euch viel Spaß bei dem Gespräch.
00:01:04: Hallo Stefan, hallo Florian. Mich freut es, dass wir heute mal in so einer Dreierrunde
00:01:08: hier zusammen sind und mich freut es natürlich auch, dass ihr beide absolute
00:01:12: Profis für ein ziemlich spannendes Thema seid, nämlich für das Thema Embedded Systems.
00:01:18: Und bevor wir uns jetzt reinstürzen in die Embedded Systems,
00:01:22: würde ich mich freuen, wenn ihr beide euch mal ganz kurz vorstellt.
00:01:26: Wer seid ihr? Wie lange seid ihr schon bei uns?
00:01:28: Und was ist eure persönliche Embedded Systems Historie?
00:01:32: Stefan, magst du vielleicht anfangen?
00:01:35: Klar, hallo. Schön, dass ich da sein darf. Also meine Historie ist so,
00:01:39: also in den Linux-Programmiertopf bin ich in meiner Jugendzeit gefallen.
00:01:43: Hab damals so ein Lerncomputer Basic gelernt und dann ging es immer weiter.
00:01:47: Und Studium hatte ich jetzt nicht so viel mit Informatik und Technik zu tun,
00:01:52: aber ich war in der Linux-Welt, Programmierwelt, PHP, MySQL habe ich damals
00:01:56: gemacht, ganz viel unterwegs.
00:01:58: Und nach dem Studium habe ich bei einer Hardwarefirma angefangen,
00:02:01: die ARM-Hardware gebaut hat. Und dafür habe ich Linux-BSPs gemacht,
00:02:04: also Voodoo oder Kernel, Yocto.
00:02:06: Und das ist meine so Embedded-Erfahrung, Expertise, Schule, wo ich durchgegangen bin.
00:02:12: Und seit 2015, na aber 2017, bin ich jetzt hier bei InnoVex und mache jetzt
00:02:17: hier Embedded Android und Embedded Linux und mache das jetzt hier seit sieben Jahren.
00:02:23: Schon ganz schön schick.
00:02:24: Und es ist schon ganz schön lange vor allem.
00:02:26: Es ist eigentlich schon ganz schön lange, ja. Ich fühle mich schon so als Greybeard,
00:02:29: obwohl ich noch keinen grauen Bart habe.
00:02:30: Ja, das übernehme ich hier in der Runde. Florian, wie sieht es bei dir aus?
00:02:35: Ja, hi. Ich bin tatsächlich ein Jahr länger bei InnoVex als Stefan,
00:02:40: aber so Linux-technisch bin ich ein Spätzunder gewesen.
00:02:43: Ich habe erst an der Uni angefangen, während dem Maschinenbaustudium.
00:02:46: Und ich glaube, das ist auch der Winkel, über den ich auf Embedded gekommen
00:02:51: bin. Ich habe da gerne Dinge, die ich noch anfassen kann und nicht nur Software in der Cloud.
00:02:57: Ja genau, ich habe im Studium erst angefangen, Linux zu verwenden und bin dort
00:03:04: ins Rabbit Hole immer tiefer rein, immer tiefer rein und ja. Ja.
00:03:09: Und jetzt bist du ziemlich tief drin und ich finde es gut, dass du ziemlich
00:03:12: tief drin bist, denn deswegen kannst du heute auch viel erzählen.
00:03:16: Embedded Systems, ich glaube, den Begriff hat man sicherlich schon mal gehört.
00:03:21: Ich fände es aber trotzdem schön, mir von euch beiden mal definieren zu lassen,
00:03:25: was sind eigentlich Embedded Systems?
00:03:29: Also immer dann, wenn man die Software nicht sieht. Das ist vielleicht so eine
00:03:33: Definition. Also immer, wenn irgendwo in einem Gerät Software drin ist,
00:03:36: aber man nicht unbedingt bemerkt, dass da Software drin ist.
00:03:38: Also kein Computer, kein Personal Computer.
00:03:41: Dann ist es Embedded Software. Zum Beispiel in irgendwelchen Geräten,
00:03:45: in deinem Fernseher, in deinem Smart TV, in deinem DVD-Player,
00:03:49: in deiner Uhr, in deinem Auto, in deinem Flugzeug.
00:03:53: Also überall, wo Software schon drin läuft, aber du nicht unbedingt weißt,
00:03:56: dass da Software drin ist.
00:03:58: Für mich ist die Definition so ein bisschen, ich habe immer eine Hardware,
00:04:01: die dazugehört und ich muss mir auch Gedanken darüber machen,
00:04:05: wie ich die Software auf die Hardware bringe.
00:04:07: Da kann ich nicht einen Installer runterladen und doppelt klicken oder für die
00:04:12: Techniker eine CI-Pipeline starten, wo dann am Ende ein Continuous Deployment
00:04:16: stattfindet, sondern muss eben schon Gedanken machen,
00:04:19: wie bringe ich die Software auf die entsprechende Hardware.
00:04:22: Und eben, es ist nicht egal, was für eine Hardware läuft, sondern ich habe ganz
00:04:25: konkrete Zielplattformen, wie Stefan ja gesagt hat, im Auto, im Fernseher,
00:04:31: Die Software muss nicht auf allen Fernsehern laufen, sie muss nicht auf Fernsehern
00:04:35: und Uhren, Telefonen laufen, sondern es gibt genau ein Ziel dafür.
00:04:40: Und vielleicht so die Strategie, wie man das auf das Gerät bekommt,
00:04:44: ist ja auch so das Problem, weil die Embedded-Geräte, die stehen nicht bei uns
00:04:48: auf dem Schreibtisch, sondern die fahren draußen in der Welt rum oder sind irgendwo
00:04:51: verbaut, verschraubt oder sind in der Fabrik.
00:04:54: Also ja, da kommt man manchmal nicht so einfach ran an diese Embedded-Geräte.
00:04:58: Also so eine Spezialität auf jeden Fall, die Kombination aus einer speziellen
00:05:03: Hardware und einer passgenauen Software und dem Produkt, das dadurch entsteht.
00:05:09: Ja genau, das ist so eine gute Zusammenfassung. Also man hat immer auch viel
00:05:13: mit den Hardware-Leuten zu tun, also die die Hardware designen und bauen und konzipieren.
00:05:17: Man muss mit denen eng zusammenarbeiten.
00:05:19: Es ist nicht so eine One-Developer-Show, wo man einfach als Softwareentwickler
00:05:23: machen kann, was man will, sondern es geht immer ums Gerät.
00:05:26: Und da gibt es wahrscheinlich auch große und kleine Geräte. Also ich meine,
00:05:29: sowas wie jetzt ein Smartphone, ja, das merke ich schon, das habe ich jeden
00:05:34: Tag in der Hand, dass da irgendwie Elektronik drin ist, okay, klar.
00:05:37: Dass da auch Software drauf ist, okay, klar.
00:05:40: Es ist aber schon Embedded Software. Also nicht die Apps ungefähr,
00:05:42: also die würde ich nicht als Embedded Software bezeichnen, aber das Betriebssystem
00:05:45: da drauf und der Bootloader da drauf und dein Secure Element,
00:05:49: was da drin läuft, also dein Secure-Coup-Prozessor, der hat auch eine Software
00:05:52: drin und da ist Embedded Software drin.
00:05:54: Jetzt müssen wir mal einen Schritt
00:05:55: zurückgehen. Das sind so viele tolle Fachbegriffe ausgepackt, Stefan.
00:05:58: Die müssen wir uns jetzt mal Stück für Stück anschauen. Du hast gerade gesagt,
00:06:02: mein Bootloader ist Embedded Software.
00:06:07: Kannst du mir ganz kurz erklären, was ein Bootloader ist? ist?
00:06:10: Naja, du hast so eine CPU und da kommt irgendwann Strom dran und dann läuft
00:06:14: die los und verarbeitet Befehle und der Bootloader sind diese ersten Befehle,
00:06:19: die da verarbeitet werden.
00:06:20: Das ist nicht eine Java-Applikation, die da läuft, sondern das ist meistens
00:06:23: in Assembler geschrieben oder von C nach Assembler kompiliert und das Ding startet dann und bringt,
00:06:29: den kleinen Rechner da drin hoch. Also aktiviert irgendwelche Devices oder macht,
00:06:33: irgendwelche Channels auf oder macht ein Display an und das ist der Bootloader,
00:06:38: der dann das eigentliche Betriebssystem startet.
00:06:41: Und das ist dann bei der Software, weil auch nicht einfach updatable,
00:06:43: also nicht mit Doppelklick Excel updaten, kannst du deinen Bootloader auf deinem Gerät nicht updaten.
00:06:47: Was man ja auch nicht vergessen darf, ist wie unglaublich viele Schritte man
00:06:51: eigentlich heutzutage macht, bis eine CPU oder bis ein Computer eigentlich gestartet
00:06:55: ist, was zum Beispiel viele nicht wissen an einem Desktop.
00:06:59: Der DRAM muss trainiert werden. Das heißt,
00:07:02: also da kommt die Hardware hoch, da ist Strom drauf, aber ich kenne die Details
00:07:07: jetzt auch nicht auf dem FF, aber Sie müssen zum Beispiel mal schauen,
00:07:10: wie groß der Speicher ist und so weiter und mit welchen Frequenzen welche Daten
00:07:14: übertragen werden können.
00:07:16: Das muss alles bei jedem Start gemacht werden und dazu muss es eben Software
00:07:21: geben, die genau das macht.
00:07:24: Und solche Software, damit wir das richtig verstehen, Die unterscheidet sich
00:07:28: schon jetzt von, wenn wir beim Handy bleiben, von in der App,
00:07:31: die ich mir runterlade oder wenn ich am Desktop bin und ich installiere mir
00:07:35: irgendwas auf meinem Desktop, ich starte da irgendwas.
00:07:37: Das ist auch so natürlich Software, die da läuft, aber Embedded Software ist
00:07:42: eher das, was ganz, ganz weit unten läuft, also so direkt auf einer Hardware.
00:07:47: Also mit 1000 Meter Abstand ist es auch nur Software.
00:07:52: Am Ende des Tages ist alle deine Software Bits und Bytes, die vom Prozessor interpretiert werden.
00:07:58: Aber ich glaube, der große Unterschied ist eben, wo kommt diese Software her,
00:08:03: wie wird diese Software gestartet und wie wird sie verteilt.
00:08:10: Du hast eben nicht die Wahl bei deinem Bootloader. Der Bootloader gehört zum
00:08:13: Gerät, der wird vom Gerätehersteller mit ausgeliefert.
00:08:16: Du kannst danach ein Windows, ein Mac oder ein Linux installieren.
00:08:19: Aber die Wahl beim Bootloader ist stark eingeschränkt, weil der muss eins zu
00:08:23: eins zur Hardware passen.
00:08:24: Ja, und so Programmiersprachen und Auswahl, also man kann Embedded Software auch in Go schreiben.
00:08:29: Das kommt halt eher darauf an, wie dann diese Software auf dem Gerät läuft, sozusagen.
00:08:35: Ja, also wisst ihr, ich versuche es einfach noch ein bisschen besser zu greifen,
00:08:38: dass man vor allem den Bereich Embedded Software ein bisschen abgrenzen kann
00:08:43: von, ich sage mal, klassischer Softwareentwicklung.
00:08:46: Denn ich habe ja viele Jahre als Java-Entwickler gearbeitet.
00:08:49: Ich kenne so die normale Softwareentwicklung. Das heißt, ich sitze an meinem
00:08:53: Desktop, ich programmiere was, ich kompiliere das, ich starte das.
00:08:56: Ich habe sowas wie eine Build-Pipeline.
00:08:58: Ich habe sowas wie verschiedene Möglichkeiten, Software auch zu verteilen,
00:09:02: zu deployen. Sei es jetzt irgendwie auf einem Server oder auch auf irgendwelchen
00:09:06: Endgeräten über verschiedenste Mechanismen.
00:09:09: Das ist die Welt, die kenne ich. Und ich versuche jetzt noch ein bisschen so
00:09:13: den Unterschied ein bisschen besser herauszuarbeiten zu eurer Welt.
00:09:17: Zu unserer Embedded-Welt.
00:09:19: Ja, genau.
00:09:20: Der scharfe Graben zwischen den Kulturen, würde ich mal sagen.
00:09:24: Ja, es gibt auch schon diesen Kulturunterschied zwischen den normalen Desktop-Applikations-Wicklern.
00:09:28: Aber über dem Graben, da kann es natürlich auch eine Brücke geben.
00:09:30: Ja, natürlich.
00:09:31: Das sollte es natürlich auch geben.
00:09:32: Ihr könnt viel voneinander lernen. Also man muss sich immer,
00:09:37: bei Embedded Software geht es auch immer so ein bisschen um die Ausführung, also wo es läuft,
00:09:41: also weil dein Gerät hängt irgendwo in der Fabrik oder fährt rum durch die Gegend
00:09:46: oder es ist dein Smartphone.
00:09:49: Also es geht immer ums Gerät, weil du dann bestimmte Treiber brauchst oder du
00:09:52: hast bestimmte Peripherie dranhängen, du hast bestimmte Sensoren dranhängen,
00:09:55: die du ansprechen musst.
00:09:57: Da musst du immer Integrationsarbeit leisten als Embedded Entwickler,
00:10:00: um diese spezielle Hardware anzusprechen.
00:10:03: Und vielleicht kann Flo da noch ein bisschen mehr ins Detail gehen.
00:10:08: Was ist noch so der Unterschied? Sind auch die Release-Zyklen so ein bisschen anders?
00:10:15: Also man denkt anders, man denkt jetzt nicht, oh, wir können morgen gleich ein
00:10:17: neues Update shippen. Das macht man in Embedded nicht.
00:10:20: Sondern du denkst da eher so in Wochen oder Monaten, bis du da ein Update shippen
00:10:23: kannst, wenn überhaupt du die Möglichkeit hast, dein Gerät nachträglich noch abzudaten.
00:10:27: Was sehr sinnvoll ist, was man einplanen sollte in so modernen Embedded-Projekten,
00:10:31: aber teilweise nicht funktioniert oder schiefgehen kann.
00:10:34: Also ich denke auch, es gibt viele Gemeinsamkeiten. Wir schreiben einen Test, wir führen Tests aus.
00:10:38: Man kann auch einen Teil der Logik lokal testen, aber im Endeffekt ist wichtig,
00:10:42: dass die Software auf der Zielplattform läuft und beim Entwickeln hast du eigentlich
00:10:46: fast immer auch deine Zielplattform oder etwas, was dir sehr, sehr nahe kommt,
00:10:51: bei dir auf dem Tisch stehen und du führst die Software auf dem anderen Gerät aus.
00:10:57: Also du kopierst es nicht irgendwo hin in die Cloud, sondern auf diesen kleinen
00:11:01: Prozessor, der nebendran steht.
00:11:03: Und ja, du musst auch eben bei der Updatebarkeit auch im Blick behalten,
00:11:12: dass deine Ausführumgebung immer passt.
00:11:13: Also, es ist nicht so wie bei,
00:11:17: keine Ahnung, der JVM, dass ich sage,
00:11:19: hier, ich habe meine JVM, die lade ich runter, dann bin ich glücklich,
00:11:22: sondern klassischerweise hast du ein Embedded-Build-System, das den gesamten
00:11:26: Compiler schon mal mitbaut, damit, wenn man idealerweise zehn Jahre später ein Update shippen möchte,
00:11:32: man immer eine kompatible Ausführumgebung hat, nicht, dass man...
00:11:37: Wie bei der JVM oder so, in das Problem reinläuft, dass man jetzt von Java 21
00:11:40: auf 25 updaten muss und die Software dann nicht mehr so richtig sauber funktioniert,
00:11:46: weil es halt schon extrem komplex und man extrem viele Querabhängigkeiten gar
00:11:51: nicht unbedingt sehen kann und deswegen ist einer der Punkte,
00:11:56: dass man eben sehr genau auch drauf achten muss, was man wie baut und deployt.
00:12:01: Das war aber auch gerade ein wichtiger Punkt, da so Embedded-Winkler haben immer
00:12:06: Hardware auf dem Tisch stehen.
00:12:07: So ein anderer Entwickler, der hat sein MacBook und eine Kaffeetasse.
00:12:10: Und wir haben halt auch so ein Notebook oder PC unter dem Schreibtisch und ganz
00:12:14: viel Kabel und Platinen und Zeug auf dem Schreibtisch und haben das irgendwie
00:12:18: verdengelt und angebunden.
00:12:20: Also man erkennt die am Tisch schon sehr gut, um was es sich für Typentwickler handelt.
00:12:25: Da werde ich jetzt mal aufmerksam sein, wenn ich hier durchs Büro laufe.
00:12:28: Ja, die wirst du finden, die wirst du sehen.
00:12:29: Ja, also ich sehe ja schon zwei Stück. Ihr habt jetzt zwar nicht so viel Hardware.
00:12:32: Wir haben jetzt keine Hardware dabei, aber typischerweise haben wir Hardware dabei.
00:12:35: Aber das macht ja auch Sinn, weil wenn ich jetzt eine bestimmte Hardware-Plattform
00:12:38: habe, eine Emulation, die erreicht halt nie die Qualität vom Original.
00:12:43: Und ich meine, vielleicht ist für eine Emulation, für so ein einfaches Testing
00:12:48: ja vielleicht okay, aber um wirklich zu wissen, ob das auch von der Performance
00:12:52: und so passt, wirst du ja die Original-Hardware immer brauchen.
00:12:54: Genau, also du kannst eine Emulation natürlich benutzen, um den Vorgang zu beschleunigen,
00:12:59: wenn du sehr exotische, schwierig zu erreichende Software hast,
00:13:03: dann ergibt es natürlich Sinn, dass du erstmal im Emulator testest,
00:13:07: damit einfach die Cycle-Zeit runtergeht von deinem Entwicklungszyklus,
00:13:12: aber schlussendlich ist irrelevant,
00:13:15: dass es auf dem Emulator funktioniert, wenn es auf der Zielplattform nicht funktioniert,
00:13:19: weil relevant ist die Zielplattform nicht.
00:13:21: Also was ich für mich jetzt mitgenommen habe ist, es gibt verschiedene Arten
00:13:24: von Embedded Systems oder von Embedded Software und was auf jeden Fall das wichtige Merkmal ist,
00:13:30: es gibt immer so eine ganz enge Kopplung zwischen einer bestimmten Hardware
00:13:34: Plattform und der Software und das kann beispielsweise so was sehr low leveliges sein,
00:13:40: wie jetzt so ein Bootloader oder sonstige Software, die vielleicht auf dem Chip läuft.
00:13:45: Es kann aber auch was Komplexeres sein, wenn ich jetzt, keine Ahnung,
00:13:49: das Handy ist vielleicht nicht das beste Beispiel, aber vielleicht ist so ein
00:13:52: E-Book-Reader ein gutes Beispiel.
00:13:54: Ich habe irgendeinen proprietären E-Book-Reader von irgendeiner Firma und da
00:13:58: kommen auf der einen Seite meine E-Books drauf und in einem Format,
00:14:01: auf der anderen Seite muss da aber auch Software drauflaufen für spezielle Chips,
00:14:05: für ein spezielles E-Paper-Display und vielleicht ist da auch noch WLAN mit
00:14:10: eingebaut und da braucht man da alle möglichen Arten von so, ja.
00:14:14: Den Touchscreen, den Botanik-Controller.
00:14:17: So Zeug, USB-Stecker.
00:14:20: Das sind dann schon viele verschiedene Arten von Embedded-Software,
00:14:23: die in so Geräten drinstecken. Das ist doch nicht nur eine Software für alles, sondern ...
00:14:28: Da kommt es so ein bisschen darauf
00:14:29: an, wie viele verschiedene Chips und Co-Prozessoren dein Produkt hat.
00:14:33: Und das kommt so ein bisschen auf die Produktklasse an, was du da drin hast.
00:14:36: Und auch ein Faktor ist, so ein modernes Linux oder Windows hat Treiber dabei
00:14:41: für eine sehr, sehr große Bandbreite an potenziellen Ausgabegeräten.
00:14:46: Das ist nicht so wichtig, ob du jetzt eine, weiß ich was, Radeon 5600 oder 5800 hast.
00:14:54: Es sind am Ende beide Treiber dabei, die gebundelt sind, aber bei Embedded-Geräten
00:14:57: wird eben oft auch am Speicher eingespart, weil ich möchte nicht jedem E-Book-Reader
00:15:04: 200 Gigabyte Flash mit reinlöten, das kostet halt auch Geld.
00:15:08: Und oft ist eben auch die Software sehr stark ins Betriebssystem integriert
00:15:13: und im Betriebssystem sind auch nur die Treiber dafür da, für die Hardware,
00:15:17: die auch auf dem Gerät verfügbar ist. Und da sind wir dann auch wieder beim
00:15:21: Beispiel von so einem Handy.
00:15:24: Verschiedene Handys aus einer Serie können ja unterschiedliche Displays haben,
00:15:27: einfach zwei verschiedene Displaygrößen oder so.
00:15:29: Und dann brauchst du schon potenziell zwei unterschiedliche Treiber dafür.
00:15:32: Und je nachdem, bei einem E-Book-Reader könnte ich mir vorstellen,
00:15:36: dass dort auch wieder dann ein Unterschied gemacht wird zwischen der Firmware
00:15:40: für die beiden Geräte, obwohl die sehr eng miteinander verwandt sind,
00:15:44: aber halt einfach zwei unterschiedliche Treiber brauchen.
00:15:46: Und der Embedded-Entwickler kümmert sich darum, dass halt dein Gerät mit beiden
00:15:50: Displays funktioniert. Das machen wir.
00:15:53: Und wenn wir jetzt über, du hast gerade, Florian, du hast gerade schon über
00:15:55: Dings gesprochen, über Betriebssysteme.
00:15:58: Wenn wir jetzt bei so einem Beispiel bleiben, wie jetzt so einem E-Book-Reader,
00:16:01: verwendet man da dann irgendwie ein fertiges Betriebssystem,
00:16:05: das customised wird, also irgendeine Linux-Distribution, die man so ein bisschen
00:16:09: anpasst oder fängt man da durchaus bei null an?
00:16:12: Also ich glaube, heutzutage fangen fast alle mit einem Linux an.
00:16:17: Die Prozessoren sind meistens auch so groß, dass sie das problemlos stemmen
00:16:21: können und man kriegt einfach sehr, sehr viel mitgeliefert von diesem Linux.
00:16:26: Aber auch gleichzeitig ist es ein sehr, sehr stark angepasstes Linux.
00:16:30: Im Endeffekt, viele Embedded-Geräte haben ihre eigene Linux-Distribution,
00:16:35: die nur für dieses Gerät passt und entwickelt wird.
00:16:41: Also für so größere Consumer-Geräte, aber wenn du kleinere Geräte hast,
00:16:45: dann läuft eben auch öfters kein Linux,
00:16:47: sondern da gibt es dann Embedded-Betriebssysteme, oft Echtzeit-Betriebssysteme,
00:16:51: die ja eine Art Framework sind,
00:16:55: aber direkt auf der CPU laufen und auch die gesamte Hardware kontrollieren und
00:16:59: man integriert direkt mit dem Betriebssystem seine Applikation.
00:17:03: Tja, ich glaube, so wirklich von Null anfangen tut man nicht mehr.
00:17:07: Das ist auch nicht mehr möglich in so komplexen Systemen, wie wenn du WLAN dran
00:17:11: hast oder ein Display dran hast oder noch eine Grafikbeschleunigung und anders.
00:17:15: Das ist nicht mehr möglich, sondern du bist eher Systemintegrator.
00:17:19: Also du nimmst die bestehenden Komponenten, Softwarekomponenten,
00:17:21: die es gibt und die von deinem Hersteller geliefert werden, von deinem Hardwarehersteller
00:17:24: und musst die halt integrieren und oft musst du noch Bugs fixen,
00:17:28: weil die Treiber, die der Hersteller liefert,
00:17:30: noch irgendwie buggy sind und nicht funktionieren oder du hast einen bestimmten
00:17:33: Sensortyp noch dran gemacht auf deiner Platine, wo es keinen Treiber gibt,
00:17:36: dann schreibst du einen Treiber dafür und also da ist viel Integrationsarbeit.
00:17:39: Also man schreibt nicht unbedingt so viel Software, aber man debuggt sehr viel
00:17:43: Software und bringt sie zum Laufen.
00:17:45: Das ist auch so Tätigkeit von so einem Badded Engineer. Software zum Laufen kriegen.
00:17:49: Ja, das bedeutet, wenn man jetzt überlegt, was für Hardware man verwendet und
00:17:53: man entscheidet sich beispielsweise für irgendeinen WLAN-Chip,
00:17:56: dann gibt es in der Regel von dem Hersteller schon entsprechendes Software,
00:18:01: die damit funktioniert?
00:18:03: Ja, manchmal kriegst du einen Linux-Treiber für den falschen Linux-Kernel.
00:18:08: Da gibt es ja auch verschiedene Versionen und die sind inkompatibel,
00:18:11: haben interne Änderungen.
00:18:12: Dann musst du deinen Grafiktreiber portieren, dann ist das viel Arbeit.
00:18:16: Sowas würden wir dann machen, um es zum Laufen zu kriegen.
00:18:19: Man darf auch nicht vergessen, dass diese externen Komponenten oft eben auch
00:18:22: kleine eigene CPUs sind, die ihr eigenes Betriebssystem brauchen,
00:18:26: die Firmware für für dieses Gerät und das muss eben,
00:18:31: Passend zum Hauptsystem, also aus der Desktop-Welt kennt man ja vielleicht die
00:18:35: Grafikkarte, wenn man gerne Computerspiele spielt, die braucht einen Grafikkartentreiber,
00:18:40: der mit deinem Windows spricht,
00:18:42: aber gleichzeitig braucht sie auch eine Firmware, die auf der Grafikkarte selber
00:18:45: läuft, weil auf dieser Grafikkarte, das ist im Endeffekt auch, also es nennt zwar GPU,
00:18:52: weil es spezialisiert ist auf Grafikverarbeitung, aber im Endeffekt kann man
00:18:55: da auch ganz normale Programme laufen lassen.
00:18:57: Und die beiden müssen miteinander kommunizieren, da müssen beide Seiten zusammenpassen.
00:19:01: Und das ist genau diese Integrationsarbeit, die Stefan beschrieben hat,
00:19:04: diese Teile zum Zusammenpassen zu bekommen.
00:19:07: Und ich könnte mir vorstellen, dass das noch ein bisschen aufwendiger ist,
00:19:10: wie beispielsweise die Kommunikation zwischen Windows und zwischen einer Grafikkarte,
00:19:14: wo es vielleicht irgendwelche Standards gibt oder relativ überschaubar ist,
00:19:20: was es da für Hersteller gibt.
00:19:21: Das ist vielleicht, wenn man so ein bisschen low-level-mäßig unterwegs ist,
00:19:24: noch ein bisschen diverser.
00:19:27: Ich würde nicht die Komplexität von modernen Grafikkarten unterschätzen. Ja.
00:19:31: Da traut man sich normalerweise nicht rein, sondern nimmt das,
00:19:34: was der Hersteller bietet. Und wenn es nicht geht, dann hat man verloren.
00:19:37: Ich glaube, das ist das. Ja, also wir reden da eher von so, keine Ahnung,
00:19:41: jetzt ein Gyroskop, also ein Sensor, der misst, ob sich ein Objekt bewegt,
00:19:47: dein Gerät bewegt zum Beispiel aus dem Smartphone drin.
00:19:49: Und dann ist es ein I2C-Gerät, das ist so ein kleiner Hardware-Bus,
00:19:52: wo du Anfragen hinschicken kannst und Register auslesen.
00:19:54: Und dafür würden wir zum Beispiel Treiber schreiben. Ja, und der Klasse sind wir unterwegs.
00:19:59: GPUs sind wirklich schon riesige Biester. Das ist eine andere Welt.
00:20:04: Der Haken an dem Beispiel war, dass der Grafiktreiber und die Firmware für die
00:20:08: Grafikkarte normalerweise aus einer Hand kommen.
00:20:10: AMD oder Nvidia geben mir beides. Und dann wird aus dem Softwarepaket die aktuelle
00:20:17: Firmware auf die Grafikkarte geladen. Und dann passt das alles.
00:20:20: In der Embedded-Welt ist es oft so, dass du die Firmware bekommst und dich um
00:20:26: den Treiber dann selber kümmern musst.
00:20:28: Du kriegst mit Glück Spezifikationen, wie du mit dem Gerät zu sprechen hast.
00:20:32: Und dann kannst du den Treiber selber bauen. Manchmal kriegst du auch einen
00:20:36: fertigen Treiber, der einfach nicht
00:20:37: richtig ganz passt. Dann musst du ihn zurechtpatchen, bis es wieder passt.
00:20:42: Genau, dann gibt es die sogenannten Datenblätter von diesen Chips,
00:20:45: also 100 Seiten PDF je nach Größe von einem Chip, Komplexität von einem Chip
00:20:49: und dann sind da Registertabellen drin über 10 Seiten, musst halt dann lesen
00:20:53: und gucken, wie das Ding funktioniert und dann kannst du deinen Treiber schreiben und anpassen.
00:20:57: Das bedeutet aber, dass so der Job, den ihr macht, der hat auch viel mit so
00:21:02: Neugierde zu tun, vielleicht auch ein bisschen mit der Lust an Rätseln und ein
00:21:08: bisschen zu Nachforschung, Tüfteln?
00:21:11: Ja, ja, sehr, sehr viel, genau. Also man muss ganz viele Probleme debuggen und
00:21:17: sich reinfuchsen und so.
00:21:18: Ja, das Fable muss man haben, sonst ist man, glaube ich, in der Embedded-Entwicklung falsch.
00:21:23: Ja, das ist für mich aber ein ganz klassischer Unterschied jetzt zur klassischen Softwareentwicklung.
00:21:29: Denn, also ich habe halt so Business-Software entwickelt und das sind nicht
00:21:32: so komplett abgefahrene Sachen früher, aber der große Teil war schon straightforward. forward.
00:21:37: Also Kunde hat ein Problem, Kunde hat irgendwelche Daten, die sollen irgendwie
00:21:41: gespeichert, abgerufen, aufbereitet, dargestellt werden und zwischendrin soll
00:21:46: eine E-Mail verschickt werden.
00:21:48: Da war normalerweise jetzt nicht viel dabei, wo man dann im Team gesagt hat,
00:21:53: boah, keine Ahnung, wissen wir nicht, ist noch nie gemacht worden,
00:21:56: Heureka, wer weiß, wie es geht.
00:21:57: Nee, das war immer, jo, machen wir so, machen wir so, ah, habe ich im letzten
00:22:00: Projekt schon mal gehabt, ach ja, Benutzerverwaltung, schreiben wir die selbst
00:22:03: oder nehmen wir irgendwas von von Amazon Erwerbsservices und das war schon,
00:22:09: du konntest es immer gut schon abschätzen, was zu tun ist.
00:22:12: Es gab im Detail Überraschungen, es gab im Detail auch mal Probleme,
00:22:15: weil was nicht funktioniert hat.
00:22:17: Das war auch spannend immer, aber das war eher ein kleiner Teil und ich habe
00:22:21: jetzt den Eindruck, bei euch ist es genau andersrum.
00:22:25: Ja, also wegen sind auch so Abschätzungen, wie lang irgendwas dauert,
00:22:29: manchmal schwierig in Projecten.
00:22:31: Das Problem ist halt auch, dass wenn Hardware mal einen Fehler hat,
00:22:35: dann ist das mit der vorhandenen Hardware nicht mehr zu korrigieren.
00:22:39: Neue Hardware heißt halt ein Haufen Elektroschrott, was auch nicht super ist.
00:22:43: Deswegen ist das Mantra sehr oft, egal, wir fixen das in Software.
00:22:47: Heißt aber, dass du da als Embedded-Entwickler meistens on the Receiving-End bist,
00:22:53: du darfst das dann in Software fixen und dann sind die Fehler halt natürlich auch nicht bekannt,
00:22:58: wenn die Hardware gerade erst neu kommt und dann macht man alles,
00:23:03: wie es in der Dokumentation beschrieben ist, aber die Hardware verhält sich
00:23:05: eben nicht so, wie es dokumentiert ist und dann hat man ein großes Detektiv-Spiel.
00:23:10: Und das ist extrem schwer abzuschätzen, also,
00:23:14: Mein längster Bug, den ich gesehen habe, da war ich nicht persönlich dran involviert,
00:23:18: war kein Hardware-Bug am Ende, sondern ein Linux-Kernel-Bug.
00:23:21: Aber es hat zwei Monate gebraucht, bis der gefunden war und identifiziert war.
00:23:26: Hat ganz harmlos angefangen. Das System fährt nicht fertig runter,
00:23:32: weil das Init-System gesagt hat, halt, der Treiber hier, nein,
00:23:38: der Prozess ist noch aktiv. Der Prozess kann nicht gestoppt werden.
00:23:41: Der Prozess hat auf den Treiber gewartet und am Ende hat sich herausgestellt,
00:23:45: es gab einen Bug im Kernel.
00:23:46: Der Reference-Count war um eins daneben und der Kernel hat das Gerät nicht freigegeben.
00:23:53: Deswegen durfte der Prozess nicht weiterlaufen und deswegen ist der Prozessor
00:23:56: nicht drunter gefahren.
00:23:57: Aber stell dir mal vor, wie großartig der Moment ist, wenn du das herausfindest.
00:24:01: Wenn du wirklich sagst, ja, das ist es. Das ist ein Horeca-Moment, oder?
00:24:06: Ja, das sind coole Momente. Und also ja, zwei Monate, also ja oftmals zwei Wochen,
00:24:12: zwei Monate für ein Bit falsch.
00:24:15: Also das ist teilweise so, ja, du machst zwei Monate Forschung,
00:24:18: Debugging und am Ende ist es irgendein Bit, was du umdrehen musst und dann geht's.
00:24:22: Und das ist das Coole teilweise. was man dann findet.
00:24:25: Das glaube ich euch. Aber lasst uns doch mal bei der Gelegenheit mal noch ein,
00:24:29: zwei, drei Schritte zurückgehen und uns mal gemeinsam anschauen,
00:24:32: wie funktioniert eigentlich ein Embedded-Projekt?
00:24:34: Also wie läuft denn sowas ab? Weil beim normalen Software-Projekt,
00:24:39: naja, da kommt ein Kunde und der Kunde hat eine Idee oder hat ein Problem und
00:24:42: er braucht da Support dafür.
00:24:44: Man setzt sich dran, man nimmt die Anforderungen auf und dann geht man einfach
00:24:48: dran und entwickelt das.
00:24:49: Wir machen das in unserer, in Anführungszeichen, in unserer klassischen Softwareentwicklung
00:24:54: ja oftmals agil, meistens mit Scrum, da hast du so deine zwei Wochen Sprints,
00:24:58: alle zwei Wochen hast du ein neues Inkrement, das stellst du vor,
00:25:02: kriegst du Feedback, entweder war es super oder es war nicht so gut und dann
00:25:05: besserst du nach, machst was Neues und nach, weiß nicht, 10,
00:25:08: 20, 30 Sprints hast du was, was so weit entwickelt ist, dass irgendwelche Endkunden das nutzen können.
00:25:14: Also in meinem aktuellen Projekt sind wir jetzt bei Sprint 85.
00:25:18: Das läuft schon ganz schön lang, da arbeiten auch viele Menschen mit und wir
00:25:21: haben auch zwei Wochen Sprints und alle zwei Wochen da gibt es eigentlich immer
00:25:25: ganz interessantes Feedback und es gibt manchmal auch echt sehr spannende Sachen,
00:25:28: dass irgendwie Kundinnen oder Kunden ja sagten, ja, habe ich mal anders vorgestellt,
00:25:32: gehst in die Diskussion, machst dir weiter. So läuft es bei uns.
00:25:37: Läuft das bei euch ähnlich, wenn da ist ein Kunde am Start ist und sagt,
00:25:40: hey, ich habe eine tolle Vision für ein neues Produkt, Hardware-Produkt,
00:25:45: vielleicht ein E-Book-Reader, vielleicht irgendwas anderes.
00:25:48: Könnt ihr mir das bauen?
00:25:51: Also wir arbeiten tatsächlich auch agil im Normalfall.
00:25:56: Es kommt aber auch sehr stark eben aufs Projekt-Setup drauf an,
00:25:59: weil es eben sehr divers ist und sehr heterogen.
00:26:02: Da es Embedded-Projekte ist, gibt es eigentlich nicht.
00:26:06: Ein weiterer Unterschied ist auch, bei manchen Projekten hat man überhaupt keine direkten Kunden.
00:26:12: Deine Kunden sind eigentlich die Entwickler, die die normale Software in Anführungszeichen
00:26:17: eine Ebene drüber schreiben.
00:26:19: Da ist es dann manchmal ein bisschen seltsam, wenn man mit der agilen User-Fokus-Sicht
00:26:24: rangeht, weil deine User sind andere Software-Entwickler,
00:26:27: die andere Anforderungen haben und so dann eine Mischung aus Stakeholdern und End-Usern sind. sind.
00:26:36: Ja, aber an sich arbeiten wir oft auch agil. Ich persönlich mag zum Beispiel
00:26:40: Kanban ganz gerne, weil man da nicht so an diese Sprints gebunden ist, weil wenn man,
00:26:46: drei Wochen ein kleines Problem debuggt, ein größeres Problem debuggt und zwei
00:26:51: Wochen Sprints hat, dann ist es einfach immer ein komisches Gefühl,
00:26:56: wenn man sagt, ja, ich habe diesen gesamten Sprint überhaupt gar nichts erreicht.
00:27:00: Und zwei Sprints später kannst du dann sagen, ja, ich habe meinen Bug Das war ein Einzeiler-Commit.
00:27:06: Ein bisschen komisch, aber auf der anderen Seite ergibt es nach wie vor Sinn,
00:27:09: inkrementell zu arbeiten, auch beim Embedded-System.
00:27:12: Und mit Kanban machst du halt das Rate-Limiting, dass du eben dich nicht mit
00:27:17: zehn verschiedenen Aufgaben überlastest und im Endeffekt ist ja auch agil.
00:27:23: Also die Softwareentwicklung funktioniert sehr gut agil, auch in Embedded-Projekten,
00:27:26: weil man ja auch immer auf Kundenänderungen, Kundenwünscheänderungen eingehen
00:27:31: kann oder muss sozusagen, auch aktiv eingehen muss.
00:27:35: Und manchmal ist halt so, es gibt diese Prototypen-Projekte sozusagen,
00:27:41: wo du echt mit einer Prototypen-Hardware startest und dann erst später eine
00:27:45: Hardware-Entwicklung wirklich anfängt, aber es gibt auch die Projekte,
00:27:48: wo der Kunde mit der fertigen Hardware kommt und sagt so, hey,
00:27:51: ich hab hier ein Problem oder hey,
00:27:53: ich hab zu wenig interne Ressourcen und jetzt kommt man und hilft uns,
00:27:56: dann ist die Hardware schon eher fix und dann kann man wirklich gut in Kanban
00:28:00: einfach die Software, also die Base-Level-Software-OS darauf gut weiterentwickeln
00:28:04: und Features das in Kanban-Modus einbauen.
00:28:07: Was vielleicht ein Unterschied ist, wenn man eben schon festgelegte Hardware
00:28:11: hat, dann ist man ab und zu einfach an dem Punkt, wo,
00:28:14: der Kunde Wünsche äußert, die aber einfach nicht erfüllbar sind im aktuellen
00:28:18: Setup mit aktuellen Hardware und dann kann es halt auch eher mal sein,
00:28:24: dass es eine größere Diskussion gibt, ob,
00:28:27: das jetzt ein valider Wunsch ist oder nicht.
00:28:29: Da weiß ich jetzt nicht, wie das in der klassischen Software in Anführungszeichen
00:28:33: ist, ob es da dann eben auch irgendwann mal den Punkt geht und sagt,
00:28:36: nee, können wir jetzt leider nicht machen, weil Grund XY.
00:28:40: Bei uns kommt es halt ab und zu mal vor, dass die LEDs nicht genügend Speicherbrennbreite
00:28:45: haben, um das gewünschte LED-Animation anzeigen zu können.
00:28:50: Und dann gibt es halt nichts, was wir machen können, weil wir an der Grenze
00:28:53: der Physik sind. Und man eben nicht einfach,
00:28:57: noch zwei neue Server deployen kann und dann fixest du es dann wieder.
00:29:00: Ja, die Physik ist kompromisslos. Ich kenne so Situationen, wo Kunden dann teilweise
00:29:04: Wünsche haben, die halt aus Budget- oder Zeitgründen nicht erfüllbar sind.
00:29:08: Also dass ein Kunde sagt, hey, ich habe eine Deadline, die ist in zwei Wochen
00:29:12: und ich brauche ganz dringend folgende Sachen.
00:29:15: Und wenn man dann halt vorrechnet, naja, dafür brauchen wir aber zwei Monate,
00:29:19: dann gibt es natürlich manchmal das Argument, braucht ihr mehr Leute?
00:29:25: Ja, also solche Situationen kenne ich. Ansonsten, naja, meistens kann man schon
00:29:30: die meisten Wünsche zumindest theoretisch umsetzen.
00:29:34: Es sind halt immer die Ressourcen, an denen es scheitert.
00:29:36: Bei euch sind es auch Ressourcen, aber eure sind natürlich viel fixer.
00:29:39: Das auch. Bringt mich auch noch zu einer anderen Geschichte,
00:29:42: die recht Embedded-spezifisch ist, glaube ich. Der sogenannte Demo-Modus.
00:29:47: Wir hatten das schon öfters, dass eine Messe ansteht oder ein Termin wurde im
00:29:52: Vorstand präsentiert muss und man muss gut dastehen. Und entsprechend wird die
00:29:56: Software so weit hingefakt.
00:29:58: Das Größte, was ich gesehen hatte, war ein Sprachassistent, der die Spracherkennung
00:30:03: nicht funktioniert hat.
00:30:04: Und im Nachbarraum saß jemand, der remote auf dem Gerät eingeloggt war und ein
00:30:09: Skript ausgeführt hat, nachdem das Schlüsselspot im Nachbarraum ausgesprochen wurde.
00:30:13: Und da ist auch eine Form von Ressourcenplanung, aber es ist dann halt umso
00:30:21: widersinniger, wenn man sich's eigentlich überlegt.
00:30:22: Weil in der Zeit, wo du eine Demo bastelst, die toll präsentiert werden kann,
00:30:28: machst du keinen Fortschritt, was das eigentlich Projekt angeht.
00:30:32: Das ist was, was man immer wieder antrifft und was, glaube ich,
00:30:35: auch recht spezifisch ist.
00:30:36: Total gefährlich, wenn man halt sozusagen nach außen verkauft,
00:30:39: dein Produkt geht sozusagen und man sieht sozusagen von außen,
00:30:43: sieht man das Projekt, das wirklich funktioniert von außen und so, hast gute Erfahrungen,
00:30:48: und dann willst du das sozusagen übermorgen deployed haben und geschippt haben
00:30:51: und verkauft haben und man denkt sich nur, oh Gott, nein, wir sind da noch nicht fertig.
00:30:55: Das ist ein ganz kritischer Zustand. Ja, den will man eigentlich nicht in Projekten haben.
00:30:59: Ja, klar. Ich meine, es ist ja dann noch okay, wenn ihr die Funktionalitäten,
00:31:03: die da präsentiert werden, dann
00:31:04: im Nachhinein noch umsetzen könnt und das Produkt das dann auch erfüllt.
00:31:07: In der Geschichte gab es ja auch durchaus mal vielleicht den ein oder anderen
00:31:10: Fall, wo Geräte vorgeführt wurden mit gar sagenhaften Fähigkeiten und man später
00:31:16: feststellte, oh, das hat eigentlich physikalisch gar nicht funktionieren können.
00:31:23: Alles fake, ja.
00:31:24: Aber eine Sache, die ich jetzt noch spannend finde, ihr habt gemeint,
00:31:28: es gibt Projekte, in denen ist die Hardware schon fertig Und dann wird erst
00:31:31: die Software entwickelt oder ihr unterstützt erst dann.
00:31:34: Das stelle ich mir als extrem große Herausforderung vor, weil ich hätte jetzt
00:31:38: so naiv gesagt, hey, wenn ich was Neues entwickeln möchte, würde es doch Sinn
00:31:41: machen, die Hardware und die Softwareleute an einen Tisch zu bringen und mal
00:31:45: drüber diskutieren zu lassen.
00:31:46: Hey, was brauchen wir eigentlich für eine Hardware für irgendwelche Dinge?
00:31:49: Wie muss die vielleicht dimensioniert sein oder was für Kenngrößen muss die
00:31:54: irgendwo haben, um das wirklich halt ja perfekt hinzubekommen?
00:31:58: Also ich finde, beide Projekttypen eigentlich passen. Sozusagen,
00:32:03: wenn die Hardware schon fix ist, dann muss man darüber auch nicht mehr diskutieren.
00:32:06: Sozusagen, dann kann man sich darauf fokussieren, auf dieser Hardware das alles
00:32:09: fertig zu bauen und zu deployen und richtig zu bauen.
00:32:13: Und wenn es dann Anfragen gibt, die nicht erfüllbar sind, dann sagt man das
00:32:15: halt, ja, dann ist es halt so.
00:32:17: Und bei den anderen Projekten, da muss man halt wirklich sich mit den Hardware-Entwicklern,
00:32:21: die eigene Anforderungen haben und andere Zeitpläne haben, weil so eine Hardware-Entwicklung
00:32:26: ist, Ich will nicht sagen Wasserfall, aber sozusagen vom Produktionsprozess von neuer Hardware,
00:32:32: ist ein langwieriger Wasserfallprozess.
00:32:35: Da kannst du nicht agil morgen neues Board bestellen.
00:32:38: Oder nicht iterativ.
00:32:39: Kannst du so ein bisschen iterativ machen. Also es gibt dann immer schon so
00:32:43: Platinrevision 1, Platinrevision 2.
00:32:45: Und dann näherst du dich immer sozusagen deinem fertigen Produkt näher an.
00:32:49: Kannst am Ende noch so vielleicht ein, zwei Chips austauschen.
00:32:52: Aber du kannst nicht deinen Hauptprozessor neu reingesignen.
00:32:54: Ja, das ist einfach, dann hast du ein neues Produkt.
00:32:57: Also du kannst schon so iterativ die Bugs rausholen und ein bisschen was verändern,
00:33:01: aber dieser Prozess, der geht halt über Monate und der ist ja,
00:33:04: ich würde nicht sagen, nicht wirklich agil und da ist halt oft dann das Ding,
00:33:08: dass man so ein Projekt hat, man muss halt vorher wissen,
00:33:11: was man am Ende haben möchte und kann jede Produktfeature-Änderung nachher wird
00:33:15: halt tendenziell teurer an der Hardware.
00:33:19: Und es ist ja auch nicht so, dass, also man hat halt echte Hardware,
00:33:23: die custom für dein Produkt hergestellt wird und da kannst du nicht, keine Ahnung,
00:33:28: vier Server hochspinnen auf AWS und wenn du feststellst, war nix,
00:33:33: hat nicht so funktioniert, wie wir es gedacht haben, wir machen die Instanzen
00:33:35: wieder dicht, das geht da halt nicht.
00:33:38: Wenn du Hardware gebaut hast, dann ist die Hardware da und die kostet halt auch
00:33:43: Geld und der ganze Produktionsprozess kostet auch Geld und was die Software
00:33:48: möchte ist meistens natürlich mehr Performance,
00:33:51: weil da muss man sich weniger Gedanken machen, aber mehr Performance heißt halt
00:33:54: mehr Hardware drin verbaut, das heißt halt teurer und ist ein sehr schwieriger
00:33:58: Trade-Off zwischen günstiger Produktion und guter Entwicklerzeit.
00:34:03: Ich glaube, da gibt es auch keine goldene Regel.
00:34:07: Die Faustregel ist, wenn du spät im Projekt feststellst, dass die Performance
00:34:11: nicht ausreicht, dann ist das Tunen sehr, sehr teuer, weil es sehr lange dauert.
00:34:17: Da müsste man sich vorher den Ruck geben, dass man die Hardware ein kleines
00:34:21: bisschen größer dimensioniert, als man am Anfang denkt. Aber wenn man dann halt
00:34:25: mit einem rein produktionsfokussierten Elektrotechniker zu tun hat,
00:34:29: der wird sie natürlich mit Händen und Füßen wehren.
00:34:32: Und wenn man halt auch eine Stückzahl hat von vier Millionen Geräten oder so,
00:34:36: da sind 20 Cent pro Einheit mehr halt.
00:34:40: Da bist du ganz schnell bei sehr großen Summen, die natürlich dann auch eingespart werden wollen.
00:34:44: Da ist so der Fachbegriff, die Bombkosten. Die Bombkosten, Bill of Material.
00:34:51: Die Bombkosten pro Gerät und je nachdem, umso mehr Geräte du vorhast zu bauen,
00:34:55: umso wichtiger sind diese Bombkosten.
00:34:57: Ja, ich glaube, vielleicht kommt ja auch noch dazu, wenn ich jetzt mehr Bauteile
00:35:02: irgendwie drauf habe auf meinem Hardwareboard, dann kann tendenziell vielleicht
00:35:05: auch mehr kaputt gehen irgendwie.
00:35:06: Ist das auch ein Faktor, der bei euch da rein spielt?
00:35:08: Na, bei uns nicht. Wir sind keine Hardware-Engineers. Die Hardware-Engineers
00:35:12: müssen sich darum kümmern, ihr Design so zu haben, dass es effizient ist, energiesparend.
00:35:18: Kosten reduziert und Wärme reduziert und gut funktioniert und WLAN gut funktioniert,
00:35:23: ist auch ihr Metier sozusagen, ist dann nicht mehr unsere Baustelle.
00:35:27: Ja, da haben wir eigentlich nicht so viel zu tun. Das wird hauptsächlich dann
00:35:30: unser Problem, wenn, also ich hatte es einmal in einem Projekt,
00:35:32: da wurde ein sehr günstiger Platinenhersteller gewählt und dann gab es,
00:35:38: also so eine Platine hat ja mehrere Layer.
00:35:39: Im Endeffekt sind in der Platine drin Kabel, wo du nichts siehst,
00:35:44: wo du nicht rankommst und die hatten dort mitten in der Platine in den mittleren
00:35:47: Schichten einen Kurzschluss und ich dachte wochenlang ich hätte einen Bug geschrieben
00:35:51: und am Ende kam dann raus mit Oszilloskop und Unterstützung von demjenigen,
00:35:56: der die Hardware entworfen hat,
00:35:57: dass dort ein Kurzschluss ist und zwei Gatter einfach wild hin und her flattern
00:36:01: und deswegen die Werte vom Sensor einfach völlig zufällig geliefert wurden.
00:36:08: Embedded-Probleme. Ja, Embedded-Probleme.
00:36:10: Was machst du dann? Die Platinen wegwerfen und neu machen?
00:36:13: Die Platinen kann man nur wegwerfen, ja.
00:36:15: Ist halt gut, wenn du noch nicht 4000 Stück davon bestellt hast.
00:36:18: Deswegen machst du auch iterativ so ein bisschen im Entwicklungsprozess.
00:36:22: Ja.
00:36:22: So Platine 1, Platine 2.
00:36:24: Platine 3. Deswegen sollte man so arbeiten. Das machen nicht alle Kunden leider,
00:36:27: aber prinzipiell sollte es durchaus parallel stattfinden, dass wenn man eben
00:36:33: solche Probleme findet,
00:36:36: Dass man die dann noch einfach mit einer neuen Platinenrevision beheben kann.
00:36:41: Ja, klingt einleuchtend, wenn ich da das gute Schnäppchen habe und sage,
00:36:44: ach, wenn ich da direkt eine Million bestückte Platinen fertigen lasse,
00:36:48: dann bekomme ich nochmal ein paar Prozent Rabatt drauf und dann merke, da ist ein Fehler drin,
00:36:53: Denkfehler oder die ist falsch dimensioniert, dann ist es natürlich ärgerlich.
00:36:57: Ja, das ist richtig teuer.
00:36:58: Wenn ich viel Elektroschrott habe.
00:37:00: Also in dem Fall war es nicht mal
00:37:02: ein Designfehler, sondern es war ein Fertigungsproblem gewesen. gewesen.
00:37:05: Das heißt, da hast du im besten Fall dann auch noch Gewährleistung vom Hersteller.
00:37:08: Ja, aber damit haben wir dann wiederum nichts mehr zu tun. Das dürfte dann der Kunde regeln.
00:37:13: Mit was ihr was zu tun habt, ist natürlich mit Software, mit Softwareentwicklungswerkzeugen,
00:37:18: mit Programmiersprachen.
00:37:20: Wie sieht es denn da bei euch so unter der Haube aus? Mit was programmiert man da?
00:37:23: Hat man da irgendwie UI auf der Konsole und hackt da ein bisschen nativen Assembler-Code rein?
00:37:30: Also ich schreibe meinen Code im Hexylitor. Ja? Nein, Scherz.
00:37:35: Ich frage nach.
00:37:39: Nee, nee, also ich bin im WIM-Camp, also ich programmiere viel in WIM,
00:37:45: wenn es möglich ist, also mein meistens C-Code oder C++-Code schreibe ich in WIM, wenn es geht.
00:37:50: Aber zum Beispiel, wenn ich Java-Code schreibe, den würde ich auch nicht in
00:37:53: WIM schreiben, sondern dann nehme ich dann IntelliJ, weil ohne Auto-Vervollständigung
00:37:57: willst du kein Java-Code schreiben.
00:37:58: Und ja, auch in meinem Job passiert es, dass ich manchmal Java-Code schreibe.
00:38:01: Also ja, es ist ein bunter Mix, wie man entwickelt, aber was man vielleicht
00:38:04: sagen kann, viel auf der Konsole.
00:38:06: Also so grafische Oberflächen oder grafisch bauen eher weniger,
00:38:10: sondern man ist viel auf der Konsole unterwegs, hat viele Konsolenbefehlen,
00:38:13: schreibt eigene Scripts, schreibt eigene Makefiles, schreibt viel so als Embedded-Entwickler
00:38:17: in, baut man auch so viel so ein bisschen eigenes Tooling. Ja.
00:38:21: Weil es nichts, weil dein Board ist speziell, deine Schnittstellen sind speziell,
00:38:25: deine Software ist speziell immer so ein bisschen maßnah, gibt es nichts Standesiertes.
00:38:28: Also man schreibt viele Skripte und baut sein Tooling selber und macht so.
00:38:32: Also das ist, glaube ich, auch typisch für diese Ecke-Entwicklung.
00:38:36: Ja, da sind wir eben auch wieder sehr heterogen. Das ist unsere Ecke.
00:38:41: Ich bin auch ein Win-Nutzer.
00:38:43: Ich bin einfach von meiner Veranlagung her nicht sehr kompatibel mit IDEs.
00:38:50: Aber es gibt auch Bereiche, ich glaube, im Automotive, Aerospace,
00:38:54: Defense-Bereich gibt es da sehr, sehr viel Windows-only,
00:38:58: Spezialsoftware, wo im Endeffekt auch eine spezialisierte IDE verwendet wird,
00:39:03: weil der Compiler ohne außerhalb überhaupt nicht richtig funktioniert.
00:39:07: Das Build-System ist tief in die IDE integriert.
00:39:11: Dort ist es dann ähnlich in Anführungszeichen, dass dort auch eine große IDE
00:39:15: verwendet wird, aber wir machen sehr viel Yocto-Embedded-Linux-Sachen und dort
00:39:19: ist es einfach auch sehr flexibel.
00:39:22: Der Vorteil ist auch, man kann auch ein WIM auf der Target-Plattform installieren
00:39:28: und kleine Fixes oder beim Debuggen, beim Ausprobieren dort in einer sehr ähnlichen
00:39:33: Umgebung arbeiten. Das ist manchmal sehr angenehm.
00:39:36: Und was man auch sagen muss, ist, es ist ja auch sehr, sehr große Bandbreite
00:39:41: an Software, die man schreibt für Dinge.
00:39:44: Also wir haben Embedded-Geräte schon gehabt in einem Projekt,
00:39:46: da war ein Großteil der Firmware in Anführungszeichen in Python geschrieben.
00:39:51: Und ob ich da jetzt Visual Studio Code oder PyCharm oder Vim verwende, ist relativ egal.
00:40:00: Man muss halt gucken, dass die Ausführungsumgebung passt und dass die IDI auch
00:40:06: versteht, was die Zielumgebung ist.
00:40:09: Das ist für mich persönlich auch immer eine der größeren Schwierigkeiten bei IDIs.
00:40:14: Ich habe immer wieder mal versucht, zum Beispiel eine C-Line von JetBrains warm zu werden.
00:40:19: Aber das ist sehr stark auf CMake fokussiert, was an sich eigentlich schon mal
00:40:23: gut ist, weil gerade bei C++-Projekten oft CMake verwendet wird,
00:40:26: aber hat trotzdem sehr konkrete Vorstellungen, wie das CMake-Bild auszusehen hat.
00:40:30: Und zumindest anfangs war es ein größerer Act immer wieder,
00:40:34: Der IDE beizubringen, dass nein, es benutzt nicht einfach irgendeinen zufälligen GCC,
00:40:39: den es im Dateisystem gefunden hat, sondern mein Compiler für die Zielplattform
00:40:44: liegt an dieser und jener Stelle und der ist zu verwenden und er soll auch nicht
00:40:48: irgendwelche Binary Utilities,
00:40:51: die sonst wo rumfliegen, benutzen, sondern auch die aus meinem SDK für die Zielumgebung.
00:40:57: Und das war zumindest früher immer wieder problematisch zum Konfigurieren,
00:41:01: weswegen ich, ja, bei Vim, wenn du alles selber strickst, dann passiert halt
00:41:06: auch was, was du möchtest.
00:41:08: Aber ich finde, das passt ganz gut zu dem, was wir am Anfang schon besprochen
00:41:11: haben, dass es so individuell ist in der Embedded-Entwicklung,
00:41:13: weil wenn ich eine IDE habe, dann habe ich normalerweise schon irgendwie eine Zielplattform.
00:41:19: Also wenn ich jetzt irgendwie Java entwickle und ich habe es irgendwie IntelliJ,
00:41:22: dann ist meine Plattform halt die JVM. Und wenn ich jetzt irgendwie klassisch
00:41:26: C++ entwickle, dann in der Regel
00:41:28: will ich es vielleicht auch für meinen Linux-Rechner kompilieren oder so.
00:41:32: Oder wenn ich jetzt Python habe, dann habe ich halt Python als Plattform.
00:41:36: Aber wenn ich jetzt würde ich sagen, ich habe eine spezielle Hardware-Plattform
00:41:39: und ich brauche einen speziellen Compiler und ich brauche das alles ganz speziell,
00:41:43: dann brauchst du diese Flexibilität wahrscheinlich.
00:41:46: Also die Ausführungsumgebung, also auf deinem Embedded-Gerät läuft zum Beispiel auch Linux drauf.
00:41:51: Das ist sehr ähnlich zu deinem normalen Desktop-Linux, aber es sind halt doch
00:41:56: viele kleine Änderungen. Da sind dann von den Libraries andere Versionen drauf
00:41:59: oder du brauchst, wie gesagt, einen speziellen Compiler für eine spezielle Architektur.
00:42:03: Es gibt so viele kleine Unterschiede und deswegen brauchst du eben diese spezielle
00:42:08: Magie, die du da reinschreiben musst oder dafür konfigurieren musst.
00:42:12: Und was auch noch interessant macht das Ganze ist deine Unitests,
00:42:16: willst du ja normalerweise lokal bei dir ausführen.
00:42:18: Das heißt, die werden mit einem anderen Compiler kompiliert als das Binary für
00:42:23: deine Zielplattform, weil ich habe einen x86 Linux Rechner mit Ubuntu und meine
00:42:28: Zielplattform ist eben eine Custom Linux Distribution auf einem ARM Rechner.
00:42:33: Das heißt, wenn ich einfach nur ein Bild starte, dann soll das Binary für die
00:42:39: Zielplattform rausfallen, dass ich rüber kopieren kann.
00:42:41: Und wenn ich meine Unit-Tests ausführe, muss ein anderer Compiler verwendet
00:42:45: werden und die müssen lokal ausgeführt werden.
00:42:47: Komplexität, yay! Heterogen.
00:42:51: Ja, aber gibt es da dann nicht vielleicht doch irgendwelche Patterns oder irgendwelche
00:42:58: Tools, die man so übergreifend verwenden kann?
00:43:00: Also es gibt ja wahrscheinlich viele Arten von Embedded-Entwicklungen,
00:43:04: es gibt viele Leute, die Embedded-Entwicklungen machen.
00:43:06: Gibt es da nicht für Uwim vielleicht so eine Art Baukasten, wo ich sage,
00:43:10: okay, ich habe ein neues Embedded-System und ich brauche die zwölf Parameter
00:43:13: und die customise ich mir jetzt.
00:43:15: Also es gibt diese Baukästen, um Embedded-Betriebssysteme zu bauen.
00:43:18: Und zum Beispiel eins davon ist Yocto. Und damit baust du dein Embedded-Linux-System.
00:43:21: Und das ist so ein Baukasten.
00:43:22: Der ist aber auch highly configured für deine Zielplattform.
00:43:27: Ja, und da fällt dann auch ein Compiler raus und da fallen deine Pakete raus
00:43:30: und da fällt sogar ein SDK raus, also ein Software-Development-Kit,
00:43:33: was du dann für die Applikationsentwicklerinnen haben kannst,
00:43:36: um dann Software zu entwickeln für deine Tageplattform und so.
00:43:38: Also du hast diesen Baukasten, trotzdem gibt es diese tausend Stellschrauben,
00:43:42: die halt leicht anders sind, bei jedem anderen Projekt sind die leicht anders.
00:43:47: Also man kann sich die Sachen auch immer hinbauen. Ich hatte mal ein Projekt,
00:43:50: da war in Visual Studio Code, waren dort mit Shell-Skripten,
00:43:54: dass man eine Tastenkürzel hatte, dann wurde automatisch gebaut und auf die
00:43:59: Target-Plattform deployed.
00:44:00: Aber das waren eben gar nicht unwesentlich viel Shell-Skripte,
00:44:04: die mit der Visual Studio Code-Konfiguration verheiratet waren und im Repo verteilt wurden.
00:44:10: Und vielleicht bin ich einfach irgendwie komisch, bei mir ist es immer kaputt gegangen.
00:44:16: Und ich hab am Ende die CI-Skripte benutzt, weil die CI-Skripte funktionieren,
00:44:20: weil ohne CI-Pass durfte man nicht, also ist der Commit nicht gemerged worden
00:44:25: und wenn ich die Lokal bei mir ausgeführt hab, dann wusste ich,
00:44:28: dass es auch in der CI-Pipeline,
00:44:30: durchgeht und dann hab ich damit gearbeitet, da hab ich mich wohl damit gefühlt.
00:44:34: Ja.
00:44:35: Aber man kann sich's schon hinbauen und Und es ist aber auch wirklich sehr heterogen,
00:44:39: weil es ist immer die Frage, wie greift man auf seine Zielplattform zu?
00:44:43: Mal hat man ein Gerät, das hat WLAN, dann ist es im gleichen WLAN eingecheckt
00:44:49: und man kann einfach per SSH deployen und ausführen.
00:44:52: Manchmal hat man ein Ladenkabel, mal hat man eine USB-Verbindung.
00:44:55: Bei Android gibt es ein sehr gutes Tool namens ADB, die Android Debugging Bridge,
00:45:00: mit der man das dann automatisieren kann.
00:45:04: Aber das ist halt ja, immer vom Projekt abhängig und so eine pauschale eine
00:45:10: Lösung für alles Lösung, die gibt's nicht.
00:45:12: Und oft hat man auch eine serielle Konsole. Also man guckt da mit der Serien-Con-Konsole
00:45:16: drauf, was dein Gerät tut, besonders wenn man so die Anfänge debuggt, also Bootloader und,
00:45:22: Kernelstart und genau, also jedes Projekt hat verschiedene Schnittstellen und sehr unterschiedlich.
00:45:28: Das ist ein gutes Argument. In meinem letzten größeren Embedded-Projekt da haben
00:45:32: wir eigentlich hauptsächlich per WLAN gearbeitet.
00:45:36: Aber wenn aus Gründen das WLAN kaputt ist oder das Betriebssystem nicht bootet
00:45:41: oder der Prozessor so stark überlastet ist, dass die SSH-Verbindung abreißt,
00:45:47: eine serielle Konsole funktioniert immer.
00:45:49: Da ist der Stack, den man braucht, um mit dem Gerät kommunizieren zu können,
00:45:53: sehr viel einfacher und sehr viel weniger komplex.
00:45:55: Das heißt, er funktioniert mit relativ hoher Wahrscheinlichkeit ziemlich zuverlässig,
00:45:59: auch wenn es auf den ersten Blick nicht so angenehm erscheint.
00:46:03: Manche Konfigurationen sind so, dass das Terminal nur 80x20,
00:46:07: also dieses 80x20 Raster konfigurieren kann.
00:46:12: Du kannst ein Terminal größer ziehen, aber das Fenster wird einfach nicht mehr
00:46:15: geupdatet außerhalb, weil die serielle Konsole auf der Zielplattform so eingestellt ist.
00:46:20: Wirkt ein bisschen komisch, ist aber tatsächlich Gold wert, wenn aus irgendeinem
00:46:24: Gründen das Netzwerk kaputt ist.
00:46:25: Also Technologie aus dem letzten Jahrhundert, wir brauchen die manchmal noch.
00:46:29: Ich wollte gerade schon sagen, so 80x20 oder 80x40, das kenne ich noch als Vollbild
00:46:34: von meinem Röhrenmonitor mit 12 Zoll damals, aber möchte gar nicht so viele
00:46:42: Geschichten von früher erzählen.
00:46:43: Es ist ganz schön klein, wenn man sich damit Pfade im Linux-Dateisystem anschaut.
00:46:48: Die sind ganz schön schnell am rechten Rand.
00:46:51: Ja, da braucht man halt ein bisschen Ausdauer und einen guten Scrollfinger, dann geht das schon.
00:46:59: Was mich noch interessieren würde, wäre, wenn wir bei der Technologie sind,
00:47:03: was für Programmiersprachen denn gängig sind.
00:47:06: Also ihr habt schon ein bisschen was darüber erzählt, du hast gesagt,
00:47:07: Stefan, du hast mit Go schon entwickelt, du hast schon, Florian,
00:47:11: mit Python was gemacht, C, C++ kam schon. schon.
00:47:16: Gibt es da irgendwie eine Tendenz, dass man sagt, ja, wenn man im Embedded-Bereich
00:47:21: arbeitet, sollte man eher stark in C sein oder in Assembler oder woanders?
00:47:27: Also, was man auf alle Fälle können muss, ist Latein.
00:47:32: Also jetzt nicht Latein im Sinne von Latein, sondern halt C können,
00:47:35: weil C ist das Latein, der Computer und das musst du auf alle Fälle können,
00:47:41: um auf der Ebene unterwegs zu sein.
00:47:43: Und sonst ist es echt so so eine Bandbreite. Also es kommt auch immer drauf
00:47:46: an, welche Komponente man im System halt gerade anfasst.
00:47:49: Also wenn man beim Bootloader unterwegs ist oder beim Linux-Kernel,
00:47:52: dann ist es halt C, was du können musst und programmieren kannst.
00:47:54: Und Makefiles musst du noch ein bisschen können und Bash-Skripte solltest du
00:47:58: auf alle Fälle können, um auf der Ecke unterwegs zu sein.
00:48:00: Aber wenn du dann halt immer höher in einem Stack gehst, dann musst du halt
00:48:03: auch Zipfels Plus können für deine Applikation, die vielleicht in Zipfels Plus
00:48:06: geschrieben wird oder auch vielen,
00:48:08: modernen Embedded-Systemen kann man auch Go laufen lassen oder Python,
00:48:12: wie vorher schon erwähnt, oder wenn du ganz komisch drauf bist,
00:48:15: hast du auch eine JVM auf deinem Embedded-System laufen, dann schreibst du dann
00:48:18: eine Applikation in Java.
00:48:19: Da gibt es dann meistens die anderen EntwicklerInnen, die die Applikation machen.
00:48:23: Damit haben wir dann weniger zu tun, aber wir müssen halt die Ausführungsumgebung
00:48:25: dafür dann bereitstellen.
00:48:28: Also genau, man muss eigentlich viel Sprache in diesem ganzen Stack können und
00:48:31: den Neuzugang, was müssen wir dann auch irgendwann schreiben können,
00:48:34: weil da kommt auch immer mehr Software, die auf unseren Embedded-Geräten deployed werden.
00:48:38: Ja, es kommt immer auf die Anforderungen drauf an. Meine Faustregel ist immer,
00:48:41: wenn ich mit dem Netzwerk der kommuniziere, dann möchte es eigentlich seltenst
00:48:44: in C machen, ähm, weil, ähm,
00:48:48: Ja, ich möchte mir nicht die Probleme ans Bein binden.
00:48:52: Security, Security, Back, Bing.
00:48:54: Es ist nicht nur Security, sondern es ist einfach viel aufwendiger,
00:48:57: weil C sehr viel Bare Bones ist.
00:48:59: In Go und Python habe ich eine riesige Standardbibliothek, die kommen von Haus aus HTTP-Requests.
00:49:04: Bei C brauchst du da zig Libraries, beziehungsweise curl heutzutage,
00:49:08: aber du brauchst immer externe Abhängigkeiten bei C und musst wieder neue Dinge lernen.
00:49:12: Und wenn du eine Hochsprache hast oder eine moderne Programmiersprache,
00:49:15: Programmiersprache, die von Haus aus viel mitbringt, dann brauchst du dir einfach
00:49:19: viel weniger Sorgen drum machen.
00:49:21: Auf der anderen Seite, wenn ich, besonders Audio-Processing als Beispiel,
00:49:25: ist sehr, sehr zeitsensitiv.
00:49:28: Wenn die Daten Millisekunde zu spät kommen, dann hast du bereits hörbare Artefakte,
00:49:33: dann knackt's und raucht's.
00:49:34: Und sowas kannst du nicht in einer Programmiersprache schreiben,
00:49:37: die einen Garbage-Collector hat, weil früher oder später wird der Punkt kommen,
00:49:41: wo der Garbage-Collector sagt, halt, stopp, jetzt muss ich arbeiten.
00:49:44: Und dann wirst du die Deadline verpassen. Und deswegen sind die Systeme selbst
00:49:49: auch oft heterogen, weil dann gucke ich eben, dass ich die Komponente,
00:49:53: die mit der Audioverarbeitung zu tun hat, in C oder C++ oder Rust geschrieben
00:49:57: wird, ohne Garbage Collector.
00:49:59: Und der Teil, wenn es ins Netzwerk geht, habe ich sowieso Jitter drin ohne Ende.
00:50:03: Und dann kann ich aber auch Python oder Go oder sonst irgendwas nehmen,
00:50:06: wo es einfach sehr viel schneller, also sehr viel schnellere Entwicklungszeit
00:50:10: dann auch da ist und sehr viel bequemer einfach.
00:50:12: Und bei diesen größeren Nerve-Wertesystemen hat man ja auch die Wahl,
00:50:15: Also sobald ein Linux draufläuft und man ein bisschen mehr Rechenpower hat,
00:50:18: dann kann man auch andere Sprachen verwenden.
00:50:20: Aber jetzt bei diesen ganz kleinen Mikrocontrollern, wo dann so ein Real-Time-Operating-System
00:50:24: draufläuft wie Cepha, naja, dann gibt es auch keine andere Wahl außer C.
00:50:30: Dann hat man auch nicht die Wahl, dann schreibt man halt C.
00:50:32: Ja, wenn du halt sehr begrenzte Ressourcen auch nur hast und dann nicht Lust
00:50:36: hast, da noch eine JVM draufzupacken.
00:50:38: Geht halt auch nicht mehr. Geht auch nicht.
00:50:40: So ein Echtzeit-System oder so ein RTOS, wie es auch oft genannt wird,
00:50:43: Real-Time-Operating-System, haben, das ist ja kein Betriebssystem,
00:50:47: wie man es normal kennt wie Windows, wo man,
00:50:50: installiert und dann bekommt man eine grafische Shell oder eine Kommandozeile,
00:50:55: sondern das ist im Endeffekt ein Framework, in das man sein Programm mit einbettet
00:51:01: und dann kompilierst du dein Programm und dieses Programm kompiliert wie eine
00:51:05: externe Bibliothek das gesamte Betriebssystem mit und dann hast du am Ende ein Binary, das du auf den,
00:51:10: Flash-Speicher von deiner und einer Hardware-Plattform rüberkopierst und die
00:51:15: wird dann geladen, oft ist sogar der Bootloader mit reinintegriert schon in
00:51:20: dieses eine Binary, weil man eben einfach nur ein Flash-Image rüberkopiert.
00:51:25: Hast du da ein Beispiel für ein Device, wo sowas drauf läuft?
00:51:31: Also für ein Device, wo so ein Real-Time-Operating-System draufläuft.
00:51:35: Also wir haben jetzt schon über ein paar Sachen geredet, beispielsweise über
00:51:38: ein Handy oder so, oder über so eine Smartwatch vielleicht.
00:51:42: Smartwatch?
00:51:43: Ist eine Smartwatch sowas?
00:51:44: Deine Bluetooth-Dastatur.
00:51:46: Okay, ich habe eine zu Hause.
00:51:48: Die Bluetooth-Dastatur. Bluetooth ist ein relativ komplexes Protokoll und das
00:51:52: macht keinen Spaß, das zu Bitbangen, also von Hand die Datenpakete zusammenzuschnüren,
00:51:59: weil auch bidirektionale Kommunikation stattfindet.
00:52:01: Und da brauchst du eigentlich schon einen Prozess und Netzwerkabstraktion.
00:52:06: Und das wird eben sehr oft über Embedded-Systeme gemacht.
00:52:10: Die Apple AirPods zum Beispiel gab es vor einiger Zeit, haben Sicherheitsforscher
00:52:14: die gehackt in Anführungszeichen und reingeschaut, was dort läuft.
00:52:19: Apple hat dort auch sein eigenes Echtzeitbetriebssystem, auf dem laufen.
00:52:22: Also im Endeffekt, sobald du ein Bluetooth-Gadget hast, Bluetooth Low Energy
00:52:27: Gadgets heutzutage haben fast immer ein Echtzeitbetriebssystem laufen.
00:52:30: Okay. Ja, spannend, weil das finde ich auch immer noch interessant,
00:52:33: wenn man über so Embedded-Sachen spricht, sich auch mal bewusst zu machen,
00:52:37: was ist das dann eigentlich?
00:52:38: Weil ich glaube, manche Sachen sind halt wirklich so super greifbar,
00:52:40: wie jetzt gerade die Smartwatches, Handy oder ich habe hier dieses Aufnahmegerät auf dem Tisch stehen.
00:52:46: Das ist wahrscheinlich auch ein Embedded-System. Aber es gibt ja wahrscheinlich noch viel mehr, oder?
00:52:50: Wenn du ein USB-Kabel hast, das Power Delivery kann, dann ist dort normalerweise
00:52:55: ein ARM Cortex M0 Prozessor dran verbaut im Kopf,
00:53:00: also im Stecker und auf dem läuft Embedded Firmware,
00:53:03: die vermutlich nicht allzu viel macht, außer Pakete vom Host zu empfangen, der sagt,
00:53:10: gib mir bitte mehr Strom und dann tut es irgendwelche Register schreiben,
00:53:15: damit mehr Strom durchgelassen wird, aber es ist alles Software, die läuft.
00:53:20: Das heißt, in meinem Kabel steckt quasi ein kleiner Computer drin.
00:53:24: What a time to be alive, oder?
00:53:26: Aber ja, ich glaube, das ist auch so ein Ding von Embedded Software.
00:53:29: Oft sieht man nicht, dass irgendwo Embedded Software drin ist,
00:53:31: weil sie gut versteckt ist, aber tut, was sie soll.
00:53:35: Dafür sind wir da, dass sie tut, was sie soll. Hey.
00:53:40: Ihr habt schon viel erzählt über euren Arbeitsalltag. Und ich muss sagen,
00:53:43: bis jetzt finde ich das unglaublich interessant, weil das so vielfältig ist.
00:53:47: Weil das nicht nur so, ihr habt eine Technologie, mit der ihr arbeitet,
00:53:51: sondern eher so, ihr habt viele Technologien, die verändern sich.
00:53:55: Ihr müsst immer mal neue Ansätze suchen. Das finde ich schon mal super spannend.
00:54:00: Was mich interessieren würde, wäre aber auch noch, was sind denn die größten
00:54:04: Herausforderungen, die ihr so habt? Ich meine, ihr habt viele Herausforderungen.
00:54:07: Ich glaube, das wurde jetzt auch schon klar im Gespräch, dass es die ein oder
00:54:12: andere Herausforderung gibt.
00:54:14: Aber wenn ihr mal so generell darüber nachdenkt, über die ganzen Projekte,
00:54:18: die ihr schon gemacht habt, was sind denn für euch so die größten Challenges beim Thema Embedded?
00:54:25: Updates.
00:54:26: Updates?
00:54:26: Ganz klar. Also wenn dein Gerät
00:54:30: mit der Cloud spricht und Netzwerkzugriff hat, dann Fehler passieren.
00:54:35: Es gibt keine bugfreie Software, egal in welcher Programmiersprache sie geschrieben ist.
00:54:39: Du wirst irgendwann ein Update verschicken müssen. Sicherheitsupdates, Featureupdates.
00:54:45: Wir hatten ja vorhin auch über agile Herangehensweise gesprochen.
00:54:48: Das ist ja auch durchaus valide zu sagen. Ich würde sagen, ich shippe mein Gerät in einer MVP-Variante.
00:54:54: Das hat zwar schon relativ viel Hardware verbaut.
00:54:57: Also ich meine, beim Google Home war
00:54:59: das so, das wurde geschickt mit einem Bluetooth-Chip, der nicht aktiv war.
00:55:03: Und das ist dann später per Firmware-Update aktiviert worden.
00:55:06: Und ab da konnte er dann Bluetooth.
00:55:09: Also man braucht immer einen Weg, um Updates ans Gerät zu bringen.
00:55:14: Das ist ganz schön schwierig, wenn ich nicht mit dem Internet verbunden bin.
00:55:18: Wenn es nicht mit dem Internet verbunden ist, dann muss man sich Gedanken machen,
00:55:21: aber dann hat man eben auch nicht das Problem, dass sich dein Gerät in ein Botnet,
00:55:25: Teil eines Botnets wird, wenn es nicht mit dem Internet verbunden ist.
00:55:28: Aber die meisten Geräte sind heutzutage mit dem Internet verbunden.
00:55:32: Deswegen Security so wichtig.
00:55:34: Für mich, also Updates, ja, stimme ich voll zu.
00:55:38: Sozusagen, dass ein Produkt auch sozusagen in seinem Lebenszyklus,
00:55:41: also regelmäßig Updates bekommt, Security-Updates, ist eine Herausforderung.
00:55:44: Ja.
00:55:45: Und vielleicht mein biggest pain point ist so Verständnis für Embedded Software
00:55:53: im Projektzyklus und Management,
00:55:58: weil meistens,
00:56:02: kommen Leute aus einer Produktdenke oder Produktdenke, also wirklich ganz,
00:56:07: ganz High-Level oder aus einer Hardware-Denke und die verstehen die Schwierigkeiten
00:56:12: von Embedded Software nicht oder die Herausforderungen oder wie lange irgendwas
00:56:16: dauert oder dass du halt ein Updates-System brauchst, dass man das nicht aufschieben kann,
00:56:21: sondern das muss halt mit von Anfang an bedacht werden oder Ressourcen müssen
00:56:25: von Anfang an bedacht werden.
00:56:26: Und da habe ich oft so, muss man dann halt viel erklären und viel argumentieren
00:56:30: und dieses komplexe Themenfeld, was Software auf Embedded Geräten bedeutet, halt näher bringen.
00:56:37: Weil es ist nicht nur ein Klotz, den man einmal produziert und irgendwo hinstellt,
00:56:40: sondern da hängt viel mehr dran.
00:56:42: Das ist wahrscheinlich auch schwierig, weil das alles ein bisschen abstrakter ist, was ihr macht.
00:57:12: Nie was zeigen können.
00:57:13: Selbes Problem, cool.
00:57:15: Ja, und vieles von dem, was wir machen, wird auch als selbstverständlich angenommen.
00:57:20: Wenn du dann beim Sprint Review kommst und sagst, WLAN geht jetzt,
00:57:25: sitzen alle anderen Entwickler da und sagen, wow, WLAN geht jetzt.
00:57:29: Ich hab Zeit, ich denken kann an meinem Laptop WLAN und für den ist nicht klar,
00:57:34: wie kompliziert eigentlich dieser gesamte Stack ist, dass das alles funktionieren muss.
00:57:40: Kann.
00:57:41: Kann man da die Awareness irgendwie schaffen, indem man, weiß nicht,
00:57:45: anders kommuniziert, bessere Buzzwords verwendet?
00:57:50: Ja gut, man kann da glaube ich nur viele Blockdiagramme malen,
00:57:55: sozusagen, um die Komplexität zu zeigen oder die verschiedenen Layer im Betriebssystem
00:57:59: oder Blockdiagramme von deiner Hardware und welche Komponenten es alle gibt
00:58:02: und wie die alle miteinander reden müssen.
00:58:04: Und da kann man halt viel erklären und sagen und hoffen, dass es ankommt in den Köpfen.
00:58:09: Ja, also für Leute, die sich nicht gerne in so obskure Probleme vergraben,
00:58:16: ist das halt vermutlich auch einigermaßen dröge und uninteressant.
00:58:18: Ob ich jetzt mit meinem Modem per USB-Serial oder irgendeinem anderen Protokoll
00:58:25: spreche und der Treiber irgendwie nicht so richtig funktioniert.
00:58:27: Das ist für jemanden, der produktorientiert ist, der einem Kunden was verkaufen
00:58:33: möchte, Table Stakes, für den ist es relativ uninteressant.
00:58:36: Ich glaube, das ist einfach so ein bisschen ein Mismatch. Und wie Stefan gesagt
00:58:40: hat, du musst halt aufklären, dass es halt nicht einfach so geht.
00:58:46: Du bekommst es nicht geschenkt, du.
00:58:48: Genau, also irgendwie.
00:58:50: Aber die Erwartungshaltung ist oft so.
00:58:52: Genau.
00:58:52: Weil es geht ja an meinem Laptop und mein iPhone kann das auch.
00:58:55: Und dann denkst du, oh, ist das kompliziert.
00:58:57: Ja, aber ich meine, das kenne ich auch so aus der Softwareentwicklung.
00:59:01: Also ich habe ja früher viel mit so Suchtechnik gemacht.
00:59:03: Und ich habe es oft bei Kunden gehabt, dass Kunden dann irgendwie ein Produkt hatten.
00:59:08: Und da brauchte man irgendwie eine Suche. Und das waren teilweise auch sehr komplexe Sachen.
00:59:11: Und die hatten sehr viele Wünsche. und ich weiß doch, der Klassiker war immer,
00:59:16: wenn man Workshops gemacht hat, dann kam irgendwann immer so der Spruch,
00:59:20: also für den Anfang so 60% Google reichen, das war also die valide Metrik.
00:59:26: 60% Google oder so von der Qualität, was auch immer das bedeutet,
00:59:31: aber das darf nicht so schwierig sein.
00:59:33: Und das war halt auch sowas dann zu erklären, jo, bei Google da arbeiten vielleicht
00:59:37: 10.000 promovierte Informatikerinnen und die haben da seit seit zehn Jahren
00:59:41: daran gearbeitet, deswegen ist das so gut.
00:59:43: Und also ich würde es alleine machen im Projekt.
00:59:48: Also die Erwartungshaltung, das so ein bisschen einzunivellieren,
00:59:51: das war auch nicht immer einfach.
00:59:54: Dann ist es vielleicht, dann haben wir vielleicht dieselben Probleme in der
00:59:57: Embedded-Entwicklung, die auch andere Leute in Softwareentwicklung haben.
01:00:01: Erwartungsmanagement oder so.
01:00:02: Die Probleme hast du, glaube ich, öfters mit diesem Erwartungsmanagement.
01:00:05: Also mein Favorit war, wo ich mal vom Management gehört habe,
01:00:07: wir bauen in kürzerer Zeit für weniger Geld ein besseres Produkt als Amazon?
01:00:13: Ja, nein. Antwort ist nein.
01:00:16: Ich glaube, wir aus der Technik, wir haben aber schon irgendwo auch so die Verantwortung,
01:00:23: uns Wege zu überlegen, wie man das den Leuten dann auch klar macht.
01:00:27: Weil ich verstehe das auch, wenn ich jetzt aus dem Produktmanagement komme und
01:00:31: ich habe keinen technischen Background, sondern ich bin halt ein Experte für
01:00:34: meine Zielgruppe, fürs Produkt etc.
01:00:36: Und ich weiß vielleicht, was die Kunden möchten und ich habe ein gutes Feeling
01:00:40: da einfach und habe halt keine Ahnung von der Technik.
01:00:44: Woher soll ich es denn wissen?
01:00:46: Also es ist ja auch total valide dann in dem Kontext sozusagen,
01:00:50: dann hat man auf beiden Seiten einmal die Fachexpertise und einmal die technische
01:00:52: Expertise und dann ist es eigentlich auch okay.
01:00:54: Aber man muss halt trotzdem diese Kommunikationsarbeit leisten.
01:00:56: Ja, es ist anstrengend.
01:00:59: Und man muss eben kooperieren. Und es ist ja auch oft genug andersrum,
01:01:02: dass das Produktmanagement die Entwickler einfangen muss, weil die andere Prioritäten einfach haben.
01:01:10: Focus, Focus! Habe ich doch gar nie erlebt. Lass mich mal diese Funktion noch
01:01:15: kurz vergolden. Ich habe da ganz tolle Ideen.
01:01:19: Ja, ich glaube, wie so oft, Kommunikation ist herausfordernd, ist wichtig.
01:01:24: Ich finde es dann auch immer spannend, wenn du im Projekt dann halt Leute hast,
01:01:28: die vielleicht so beide Seiten ein bisschen verstehen und versuchen,
01:01:30: die Leute an den Tisch zu bringen.
01:01:32: Und ich weiß nicht, wie es euch geht, aber ich habe auch Meetings gehabt,
01:01:35: wo dann nach einem anstrengenden Meeting wirklich so dieser Aha-Effekt da war,
01:01:39: wo man die andere Seite dann verstanden hat. So, ach ja, okay,
01:01:42: klar, so macht das jetzt Sinn. Gut.
01:01:45: Und das finde ich auch super, super, super befriedigend.
01:01:49: Eine Kleinigkeit finde ich noch spannend. Florian, du hast es angesprochen,
01:01:53: weil du gesagt hast, Updates sind für dich eine große Herausforderung.
01:01:56: Und dann hast du auch gemeint, Stefan, ja, Security ist ein Ding,
01:02:01: vor allem wenn ein Gerät irgendwie mit dem Internet verbunden ist.
01:02:03: Es gab vor drei Wochen, vor vier Wochen gab es mal so einen Artikel,
01:02:08: da stand dann drin, es gibt ein Botnet und zwar auf Basis von irgendwelchen
01:02:13: gehackten elektronischen Zahnbürsten.
01:02:15: Kurz darauf, ich glaube bei Bleeping Computer war das glaube ich,
01:02:19: kurz darauf gab es dann noch ein Update, ja das stimmt jetzt nicht so,
01:02:21: aber theoretisch könnte das sein.
01:02:24: Und da sind wir doch auch im Bereich Security, im Bereich Embedded, oder?
01:02:29: Ja, also bei dem Artikel war natürlich der große Fail, dass die Zahnbürste selbst
01:02:33: keinen Zugriff aufs Internet hat. Damit kann sie per Definition nicht Teil eines Botnets werden.
01:02:38: Und wenn die zugehörige App Teil des Botnets ist, dann sind wir bei,
01:02:42: keine Ahnung, 10 Prozent aller Android-Apps.
01:02:46: Ja, also der Artikel war ein Fail, da wurde vielleicht viel falsch kommuniziert,
01:02:49: aber das ist an sich, so gefühlt kannst du diesen Artikel also in echt alle
01:02:55: zwei, drei Monate haben,
01:02:57: also zum Beispiel ganz die Plasterouter,
01:03:01: Fritzbox und andere, wenn die halt nicht regelmäßig Sicherheitsupdates bekommen,
01:03:07: ist schon passiert, dass du halt dann 10.000, 15.000 von diesen internetfähigen
01:03:11: Geräten, die haben dann halt Skripte ausgeführt, und E-Mails verschickt. Das kommt vor.
01:03:16: Genau, und das muss man dem Artikel auch ganz klar lassen. Er setzt Zahnbürsten
01:03:19: durch smarte Türklingel mit Internetanschluss und zack sind wir bei dem Punkt,
01:03:24: den sie hatten und das Argument,
01:03:26: Ist auch soweit valide, wenn das Gerät im Internet hängt und bekannte Schwachstellen
01:03:31: hat, die ausgenutzt werden,
01:03:33: dann ist es durchaus möglich, dass die mit Schadsoftware infiziert werden und
01:03:36: entweder dich ausspionieren oder
01:03:38: an Distributed Denial of Service Attacken teilnehmen oder Spam versenden.
01:03:45: Ich finde das echt schwierig aktuell, denn bei mir privat zum Beispiel,
01:03:49: also ich habe verschiedene Computer daheim.
01:03:51: Weißt du, wie viele internetfähigen Geräte du daheim hast?
01:03:54: Ja, ich wollte gerade überlegen. Also ich habe verschiedene Computer,
01:03:57: mit denen ich regelmäßig arbeite.
01:03:59: Da achte ich auch darauf, dass die aktualisiert werden. Wenn es Updates gibt
01:04:02: und Betriebssystem-Updates, dann installiere ich die, soweit das möglich ist,
01:04:05: installieren die sich auch automatisch. Ich habe ein Smartphone, das ist internetfähig.
01:04:10: Ich habe kein Smart-TV, ich habe so ein altes TV.
01:04:14: Ich habe ein Boring-TV, aber ich habe an meinem Boring-TV so eine Streaming-Box
01:04:19: dranhängen von einem großen Versandhaus.
01:04:23: Da gibt es auch regelmäßig Updates. Ansonsten überlege ich gerade, ich habe noch so…,
01:04:37: Die sind aber nicht direkt mit dem
01:04:39: Internet verbunden. Ich kann die aber aktualisieren über eine Handy-App.
01:04:43: Ansonsten bin ich echt ziemlich langweilig.
01:04:47: Drucker? WLAN-Drucker?
01:04:48: Ich habe einen Kabeldrucker. Save a Tree, mein Kabeldrucker steht im Schrank.
01:04:55: Wenn ich ab und zu mal was drucken muss, hole ich den raus und stecke den ein über ein USB-Kabel.
01:04:59: Okay, das Gerät ist sicher. Auch vom Botnetz.
01:05:02: Aber klar, Drucker sind glaube ich die Hölle, oder? WLAN-Drucker,
01:05:04: da liest man auch immer wieder Geschichten.
01:05:08: Ich habe jetzt seit vielen Jahren keinen Drucker mehr.
01:05:11: Ich glaube, es ist.
01:05:12: So ein bisschen ein Muster, dass viele Embedded-Entwickler nicht ganz vorne
01:05:15: an der Cheap-Smart-Hardware-Front dabei sind.
01:05:20: Wenn man weiß, wie die Wurst gemacht wird, dann findet man es ein bisschen weniger
01:05:24: appetitlich und braucht vielleicht nicht unbedingt das nächste Gadget,
01:05:27: das sich im Internet einloggt.
01:05:30: Ja, ich persönlich habe auch so eine kleine Aversion einfach gegen jedes Gerät
01:05:35: braucht einen Account. Also bei manchen Sachen finde ich es ganz gut,
01:05:39: wenn die Internetzugriff haben, wie beispielsweise mein Smartphone oder mein
01:05:42: Computer, finde ich total gut.
01:05:44: Und diese Streamingbox, wenn ich mir da mal irgendwelche YouTube-Dokus angucke,
01:05:47: direkt über den Fernseher, finde ich auch praktisch. Aber meine Lampen,
01:05:50: die ich daheim habe, ich finde es ganz cool, dass ich die dimmen kann oder mal
01:05:54: eine andere Farbe reinmachen kann über mein Handy. Das finde ich super praktisch.
01:05:58: Aber ich muss das jetzt nicht aus dem Büro ausmachen, weil das sieht ja niemand.
01:06:02: Und diese ganzen anderen Smart-Gadgets, die es gibt. Ich habe auch keine IP-Cams
01:06:06: daheim. Ich habe auch keinen cleveren Staubsauger-Roboter.
01:06:09: Ich wollte gerade sagen, Staubsauger-Roboter.
01:06:10: Ich bin echt langweilig, was sowas angeht. Ich habe einen normalen Staubsauger. Qualitätsprodukt.
01:06:18: Gut, also dann hast du nicht so viele IoT-Geräte, wo Sicherheitsupdates ausstehen,
01:06:22: aber das ist ein Problem, dass halt die Hersteller oft nicht halt zeitnah fähig
01:06:28: sind, Updates auszurollen auf den Geräten.
01:06:31: Und da sind wir auch wieder beim Problem von vorhin. Man hat eben auch sehr
01:06:34: viele Abhängigkeiten untereinander. Software ist sehr, sehr kompliziert.
01:06:39: Man hat ja immer das Problem, also im Embedded-Bereich ist man oft ein paar
01:06:43: Versionen hinter der aktuellsten Entwicklungsversion hinterher,
01:06:47: weil man einfach überhaupt nicht die Zeit hat, jedes Mal Software zu aktualisieren.
01:06:51: Und muss auch ehrlich sagen, der Mehrwert ist natürlich auch zweifelhaft.
01:06:54: Die Software funktioniert, wie sie ist. Sie hat gerade keine bekannten Sicherheitslücken.
01:06:57: Warum sollte ich Arbeitszeit und auch Bandbreite, sowohl von mir als auch meinem
01:07:01: Kunden, aufwenden, um...
01:07:04: Einfach nur die Versionsnummer hochzukriegen.
01:07:06: Das ergibt nicht viel Sinn. Risiko, es könnte ja was kaputt gehen.
01:07:10: Genau, das Risiko, dass was kaputt geht. Andererseits ist dann aber oft so,
01:07:14: dass wenn eine Sicherheitslücke auftritt, wird die meistens nur in der neuesten
01:07:17: Version behoben und dann ist es am Hersteller und transitiv auch an uns,
01:07:24: diesen Security Fix entweder zu backporten oder die neueste Version zu aktualisieren,
01:07:30: da draußen Firmware-Updates zu schnüren und das Ganze zu verteilen.
01:07:34: Ja, also die Herausforderung, die sehe ich auf jeden Fall. Also vor allem,
01:07:38: wenn ich ein kleiner Hersteller bin.
01:07:40: Darf ich es noch komplexer machen?
01:07:41: Ja, gerne.
01:07:41: Weil oft ist es ja so, dass man nicht seine komplette Software als Endprodukthersteller
01:07:46: unter Kontrolle hat selber, sondern man hat die ja von jemand anders bekommen,
01:07:49: von einem Zwischenhersteller und der hatte vielleicht noch einen Zwischenhersteller.
01:07:53: Und dann müssen so Software-Updates oft von dem ursprünglichen über drei Hersteller
01:07:57: bis zu dir fließen und dann hast du halt jahrealte Software bekommen.
01:08:02: Sofern es die Hersteller alle auch noch gibt.
01:08:03: Genau, das ist Supply Chain Software mäßig ist da auch ein großes Problem,
01:08:08: dass es auch nicht zeitnah schnell genug durchläuft, die neueste Software bis unten.
01:08:11: Und die Software, die die Hardwarehersteller sich auch dafür interessieren müssen.
01:08:15: Qualcomm ist ja berühmt-berüchtigt, dass sie ihre Margen sind relativ gering.
01:08:20: Die sind darauf angewiesen, dass sie sehr viele Chips verkaufen und gerade bei
01:08:24: Smartphones, bei Android-Smartphones ist das große Problem, dass Qualcomm veröffentlicht einen neuen Chip.
01:08:31: Dann haben sie ein Board-Support-Package, nennt sich das, für Android,
01:08:35: das mit diesem Chip funktioniert und das wird zusammen veröffentlicht und dann wieder angefasst.
01:08:42: Manchmal gibt es eine neue N-Word-Version als Update.
01:08:45: Manchmal gibt es auch eine neue N-Word-Version und.
01:08:47: Ein paar Bugfixes, aber du bist halt von 12 auf 13 gegangen.
01:08:50: Wenn man jetzt aber auf einem alten Serienchip arbeitet, der,
01:08:54: keine Ahnung, zwei, drei Jahre schon alt ist, weil man einfach relativ weit
01:08:58: hinten in der Pipeline sitzt und aus welchen Gründen auch immer.
01:09:03: Dann kriegt man einfach kein Update von Qualcomm, weil das nicht zu ihrem Geschäftsmodell passt.
01:09:08: Und das ist nicht nur bei Qualcomm so, sondern das ist generell ein Problem
01:09:12: in der Branche, dass sehr viel Geld mit neuen Gadgets, mit neuer Hardware verdient
01:09:17: wird und der lange Rattenschwanz, der wird nicht bezahlt, aber der wird dann eben zum Problem.
01:09:22: Das scheint mir so, als ob der Kapitalismus jetzt auch eine Schattenseite hat.
01:09:27: Vielleicht. Vielleicht.
01:09:29: Ja, gerade bei solchen Smartphones finde ich das echt problematisch.
01:09:32: Also ich habe ein iPhone und da gibt es immer relativ langen Support.
01:09:37: Apple ist da die beste Firma sozusagen.
01:09:41: Ich glaube, bis zu fünf Jahre oder mehr kriegst du da Software-Updates,
01:09:45: also auch Feature-Updates.
01:09:45: Genau, also ich habe jetzt letztes Jahr ein neues Gerät bekommen und das davor
01:09:48: hatte ich, glaube ich, fünf Jahre oder so. Und da gab es auch immer noch Updates.
01:09:52: Ich sehe es aber bei meiner Freundin. Die hatten ein Samsung-Handy,
01:09:56: ein Samsung Galaxy irgendwas.
01:09:59: Und ich glaube, da gab es jetzt zwei Jahre noch Updates oder so.
01:10:03: Und wir haben da neulich mal drüber gesprochen.
01:10:06: Und da sagte ich, nee, guck mal, ich schaue mal. Ich bin ja der Computerexperte.
01:10:09: Ich schaue mal, ob es da noch ein Update gibt.
01:10:11: Ich musste feststellen, oh nee, gibt leider keins mehr. Und das finde ich super
01:10:15: schade, weil das Gerät selber ist noch gut.
01:10:17: Jaja, also zwei Jahre als Smartphone sind top. Aber kriegst du halt keine neuen
01:10:20: Android-Versionen mehr und teilweise sogar keine Security-Updates mehr.
01:10:23: Mehr. Also nicht mal Security-Updates, die nicht so offensichtlich werden.
01:10:25: Aber Samsung verdient das Geld mit neuen Smartphones. Nicht mit Software-Updates. Kapitalismus.
01:10:33: Das sind Google und Qualcomm, auch die Kombination aus der Hölle.
01:10:35: Qualcomm hat keine Lust auf langwierige Support für alte Chips,
01:10:39: mit denen sie kein Geld mehr verdienen.
01:10:41: Und Google baut immer neue Features, erhöht damit die Anforderungen.
01:10:45: Also das alte Fairphone, ich glaube zwei oder drei, eins von denen,
01:10:49: die hatten einen Qualcomm-Chip, weil Qualcomm hat nun mal ein gewisses Preis-Leistungs-Verhältnis.
01:10:54: Und Qualcomm hat den nicht mehr unterstützt, also haben sie Zeit und Geld investiert,
01:10:59: um das selber zu machen und danach hat Google die Anforderungen erhöht,
01:11:05: dass, ich glaube, das Entschlüsseln einer Datei nicht länger als zwei Millisekunden
01:11:09: dauern darf und so weiter.
01:11:10: Und da dieser Prozessor keinen entsprechenden Krypto-Prozessor hatte,
01:11:15: waren sie nicht in der Lage, die Anforderungen zu erfüllen.
01:11:18: Und wer möchte schon ein Google-Handy, ein Android-Handy, das keine Google-Services
01:11:22: hat? Google zertifiziert solche Handys nicht mehr.
01:11:25: Das kommt auch noch dazu im Smartphone-Bereich.
01:11:28: Ja, da hast du keine Chance mehr. Aber das heißt doch eigentlich,
01:11:31: für die Zukunft ist doch sicher zu erwarten, dass es noch viel mehr solche Devices
01:11:35: geben wird. Ich meine, alles ist smart.
01:11:38: Smartphone, Smartwatch, Smart Home, Smart Everything.
01:11:43: Da brauchen wir doch eigentlich für die Zukunft irgendwelche Regeln,
01:11:47: damit sowas besser funktioniert.
01:11:48: Weil ich meine, auf der einen Seite wird ganz stark gepocht auf Nachhaltigkeit,
01:11:52: Benutzt eure Geräte länger.
01:11:54: Auf der anderen Seite wird aber auch gesagt, hey, Security ist wichtig,
01:11:58: denn wenn jetzt irgendwie hier so ein potenzielles Spotnet am Start ist von
01:12:02: lauter smarten Devices irgendwie, das möchte ja auch keiner haben.
01:12:08: Und die Hersteller, denen fehlt, glaube ich, die Motivation,
01:12:11: da was anderes zu tun, oder?
01:12:14: Definitiv. Firmen in Amerika sind AGs dazu verpflichtet, ihren Shareholdern
01:12:21: gegenüber Gewinn zu machen.
01:12:22: Die können von ihren Shareholdern verklagt werden, wenn sie das nicht machen.
01:12:26: Entsprechend brauchen wir uns eigentlich nicht wundern, dass die sich nur fürs
01:12:29: Geld verdienen interessieren, weil die werden sonst angezeigt,
01:12:32: wenn sie es nicht machen. und die Leidtragenden sind eben die Leute,
01:12:37: die auf diesen Geräten sitzen bleiben an dem Punkt, also da müsste man die Regeln ändern.
01:12:42: Ich denke, mit dem Ride to Repair sind wir schon ein bisschen in die richtige Richtung gegangen.
01:12:46: Als Open-Source-Nutzer ist man da natürlich immer mit der Lösung parat,
01:12:50: dass Open-Source dort helfen könnte, wobei man da auch ehrlich sagen muss,
01:12:54: auch Open-Source-Projekte haben begrenzte Bandbreite, auch dort hast du nicht
01:12:57: Leute, die endlos Motivation haben, irgendwelche Uralt-Hardware zu unterstützen.
01:13:03: Und ja, also das ist einfach ein Problem, dass wenn die Hardware deployed ist,
01:13:08: wenn es Internetzugriff hat, muss sich irgendjemand verantwortlich fühlen dafür.
01:13:12: Und wenn sich niemand dafür fühlt, dann muss jemand gezwungen werden.
01:13:17: Genau, ich glaube, das Zwingen ist halt der Punkt. Also ich glaube,
01:13:19: da müsste man gesetzliche Regeln einfach, keine Ahnung, Verpflichtung zu drei
01:13:23: Jahre Security-Updates oder drei Jahre Feature-Updates oder fünf Jahre,
01:13:27: da muss man einfach mal die Regeln anziehen, sozusagen, um das Problem in Schrift zu kriegen.
01:13:33: Und ich glaube, was man auch nicht vergessen darf, ist, dass wir Konsumenten
01:13:35: haben natürlich auch noch die Wahl. Also wenn wir jetzt sehen...
01:13:37: Ah, das ist immer schwierig.
01:13:41: Konsumentenwahl finde ich immer schwierig.
01:13:43: Nee, da stehe ich voll und ganz dazu. Ich meine, bei Autos ist es ja auch so,
01:13:47: dass die Lebenszeit immer kürzer wird.
01:13:49: Man hätte die Wahl, ein anderes Produkt zu kaufen, aber in der Gesellschaft
01:13:53: ist es einfach so, dass das Prestige hängt an...
01:13:57: Geräten mit kürzerer Lebensdauer. Entsprechend machen die Leute das.
01:14:01: Aber das kann man auch nicht durch Gesetze lösen.
01:14:04: Ja, aber es gibt immer schon so ein Baseline an Sicherheit auch im Auto.
01:14:09: Es gibt Regeln, wie sicher ein Auto sein muss.
01:14:11: Oder Abgaswerte, die wurden immer weiter erhöht und erhöht und erhöht.
01:14:15: Weil wohin wollen wir als Gesellschaft? Und wir wollen eine nachhaltigere Gesellschaft.
01:14:20: Solange die günstig ist.
01:14:22: Solange jeder die Wahl hat, das Günstigste zu nehmen, muss man halt die Baseline,
01:14:27: finde ich, halt immer weiter hochschrauben.
01:14:29: Ich glaube, das ist aber auch ein großer Faktor mit günstig.
01:14:32: Es wird ja auch sehr viel Geld einfach mit den Daten, Metadaten verdient und
01:14:36: auch da sind smarte Gadgets mit Internetzugriff ein Problem.
01:14:41: Man weiß ja jetzt schon nicht, wie man auf einer Webseite ausspioniert wird,
01:14:44: aber jetzt stell dir vor, dass dein Handy allein schon anfängt,
01:14:48: dich auszuspionieren oder deine smarte Türklingel einfach ein Screenshot von
01:14:52: jedem Gesicht, das kommt zum Hersteller schickt.
01:14:55: Ich las gestern oder heute einen Artikel über einen Snack-Automaten,
01:15:01: der in Kanada aufgestellt wurde und da ist eine Kamera verbaut und die fotografiert
01:15:08: dich und macht dann über KI-Technologie eine Auswertung, um herauszufinden,
01:15:12: wer bist du, was für ein Geschlecht hast du,
01:15:14: wie alt bist du, wie groß bist du und diese Daten werden dann natürlich anonymisiert
01:15:19: verwendet fürs bessere Marketing. Marketing.
01:15:22: Bestimmt besseres Marketing und nicht, ah, der Wolle, der ist ein bisschen pummelig,
01:15:25: den machen wir die Snacks ein bisschen billiger, dann kommt er nachher wieder.
01:15:29: Nee, ein Schelm, wer Böses denkt.
01:15:32: Auch interessant ist ja, dass in dem Artikel ist es ja nur aufgefallen,
01:15:36: weil die Windows-Applikation abgestürzt ist und eine Fehlermeldung angezeigt wurde.
01:15:41: Ansonsten wüsste man es bis heute nicht.
01:15:43: Ich glaube, das ist auch an den Entwicklern,
01:15:47: Dort sich zu wehren und dem Management zu sagen, das ist nicht legal, was man hier tut.
01:15:52: Hat man ja auch beim Abgasprozess gesehen. Auch dort war den Leuten ja eigentlich
01:15:56: klar, dass sie was Illegales tun.
01:15:58: Und da kann man eigentlich nur an die Zivilcourage appellieren,
01:16:01: dass entweder jemand Whistleblower macht oder irgendwie anders dagegen vorgeht.
01:16:08: Aber das ist einfach sehr schwerflüchtig.
01:16:10: Ja, das glaube ich auch. Ich glaube, am Ende sind es wahrscheinlich viele Faktoren.
01:16:14: Also ich glaube, sowas wie gesetzliche Regelungen sind wichtig.
01:16:17: Ich glaube, Regulation bringt uns Kunden und uns Usern immer irgendwas.
01:16:24: Also ich finde, das ist meiner Meinung nach ein bisschen so die Aufgabe von
01:16:28: so einem Staat, dass es dafür sorgt, dass es den Leuten gut geht.
01:16:30: Und ich finde als Beispiel auch so das Thema Datenschutz da ganz, ganz spannend.
01:16:34: Als diese ganze DSGVO-Geschichte hochkam, haben sich viele aufgeregt.
01:16:38: Ich weiß noch, gerade aus den USA haben viele gesagt, na, mit Europa machen
01:16:41: wir jetzt keine Geschäfte mehr.
01:16:43: Viele Tech-Milliardäre haben
01:16:45: gesagt, na, schwierig, also der Markt ist kaputt, der Markt ist kaputt.
01:16:49: Aber ich persönlich finde es eigentlich ganz gut, vor allem,
01:16:52: wenn ich jeden Tag sehe, oh, gab es irgendwo einen Daten-Lag beispielsweise,
01:16:55: dann denke ich mir, ach, es ist eigentlich ganz gut, jetzt hier in Deutschland zu leben.
01:16:58: Das ist vielleicht ein bisschen konservativ, was Daten angeht,
01:17:00: aber es ist eine gute Sache.
01:17:02: Konservativ, ich finde es progressiv, da Augenmerk draufzulegen.
01:17:06: Ja, also ich finde es gut.
01:17:08: Ja.
01:17:11: Gut, mega spannend. Ich glaube, wir könnten noch viel reden über Embedded Systems
01:17:15: und lasst uns gerne da mal anschließen und noch mal irgendein Themenbereich
01:17:20: ein bisschen tiefer reingehen.
01:17:21: Ich würde mich gerne mal über so manch anderes Thema noch austauschen.
01:17:26: Ich fand es auf jeden Fall ein sehr, sehr spannendes Gespräch.
01:17:29: Ich fand es auf der einen Seite interessant, wo die Parallelen liegen,
01:17:32: vielleicht so zur klassischen Softwareentwicklung,
01:17:34: aber auch wo die Besonderheiten sind in eurem Bereich.
01:17:39: Ja, sehr gerne. Gerne wieder.
01:17:41: Stefan, schön, dass du da warst. Florian, vielen Dank für deine Zeit.
01:17:45: Danke auch fürs Einladen.
01:17:47: Tschüss.
01:17:48: Das war das Gespräch mit Stefan und Florian. Ich hoffe, dass es euch Spaß gemacht hat.
01:17:53: Wenn ihr Feedback habt, dann erreicht ihr mich per E-Mail unter podcast.innovax.de.
01:17:58: Wir hören uns in der nächsten Folge wieder. Bis dahin wünsche ich euch viel Spaß und eine gute Zeit.
Neuer Kommentar