Was macht die Entwicklung von Embedded Systems so besonders?

Shownotes

Was sind Embedded Systems und was macht die Entwicklung so besonders? Wolfgang Schoch spricht mit den inovex-Experten Florian Limberger und und Stefan Lengfeld über die speziellen Eigenschaften von Embedded-Systemen in der Softwareentwicklung.

Sie sprechen über Besonderheiten in der Entwicklung und die Unterschiede zum klassischen Software-Development – vom starken Fokus auf die passende Hardware bis hin zur Synergie zwischen Hard- und Software.

Für diese Folge von Digital Future gibt es ein vollständiges Transkript. Dieses Transkript wurde automatisiert erzeugt und nicht nachbearbeitet oder korrekturgelesen. Es wird daher sicher Fehler enthalten. Das Transkript ist als Ergänzung zu verstehen, um beispielsweise die Inhalte durchsuchbar zu machen. Im Zweifel gilt immer das gesprochene Wort aus der Folge.

Dieser Podcast lebt von deinem Feedback! Melde dich gerne über die verlinkten sozialen Medien oder direkt per Mail an podcast@inovex.de.

Wenn dir der Podcast gefallen hat, abonniere ihn und erzähl deinen Freunden davon! Außerdem freuen wir uns über deine Text- und/oder Sternebewertung bei Apple Podcasts.

Twitter: https://twitter.com/inovexgmbh Instagram: https://www.instagram.com/inovexlife/ www.inovex.de www.inovex.de/blog

Transkript anzeigen

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

Dein Name oder Pseudonym (wird öffentlich angezeigt)
Mindestens 10 Zeichen
Durch das Abschicken des Formulars stimmst du zu, dass der Wert unter "Name oder Pseudonym" gespeichert wird und öffentlich angezeigt werden kann. Wir speichern keine IP-Adressen oder andere personenbezogene Daten. Die Nutzung deines echten Namens ist freiwillig.