Showcase: Embedded off-the-shelf

Ein Firmware-Upgrade ist fällig. Eine neu implementierte Funktion muss ausgerollt, eine Sicherheitslücke gepatcht oder neue Hardware-Unterstützung hinzugefügt werden. Die Software ist zwar leistungsfähig, aber komplex. Pengutronix' Strategie, mit dieser Komplexität umzugehen, ist die Arbeit an einem versionskontrollierten Board Support Package (BSP) mit kontinuierlichen Updates und Tests auf dem neuesten Mainline-Linux-Kernel.

Aber lassen Sie uns zuerst einen Blick auf die Komplexität und die Kundenbedürfnisse werfen.

Es war einmal...

Vielleicht haben Sie von folgendem Szenario gehört, vielleicht kennen Sie es nur zu gut...

Der Zeitplan ist eng und es werden Abkürzungen genommen. Beim Update kollidieren einige Komponenten miteinander, einige werden behoben und einige bleiben unverbessert. Im besten Fall werden einige Sicherheitsprobleme identifiziert und die Korrekturen zurückportiert. Eine andere Komponente wurde vor langer Zeit geforkt, um ein damals neues Hardware-Feature zu unterstützen, aber jetzt, Jahre später, kollidieren diese Änderungen mit dem aktuellen Stand des Upstream-Projekts und erfordern viel Aufwand, um sie in Einklang zu bringen. Der Großteil wurde durch das initiale Board Support Package des Herstellers bereitgestellt, aber jetzt liegt das Interesse des Herstellers auf zukünftigen Produkten und der Gewinnung neuer Kunden. Personalwechsel beim Anbieter und im eigenen Unternehmen führen dazu, dass das Wissen über einige der obskuren Wege verloren geht und die Fehlersuche immer mehr Zeit in Anspruch nimmt.

Mehr Informationen zu Entwick-lungszyklen im Linux Kernel

Unser Kollege Robert Schwebel hat auf dem ESE-Congress 2020 mit "Komplexe Systeme mit Mainline Linux beherrschen" einen Vortrag zum Thema gehalten. (Youtube)

Da der wichtigste Stakeholder nahezu abwesend ist, belasten alle Entscheidungen der Vergangenheit diejenigen, die noch die derivative Software im Feld warten. Während ihre Zahl den Hardware-Anbieter immer noch motiviert, Produktionsläufe zu planen, wird die Wartungslast immer noch von jedem allein getragen, da Probleme individuell identifiziert und gepatcht werden.

Als ob das nicht schon genug wäre, wird es bei einer ausreichend langen Produktlebensdauer immer schwieriger, Ersatz für die Hardware-Komponenten zu finden, was den Aufwand für die Software-Wartung noch erhöht.

Obwohl der Trend zu immer komplexerer Software und der Bedarf an Konnektivität und Sicherheit dieses Problem verschärft, ist es keineswegs eine neue Erkenntnis. Die Auswirkung von technischen Schulden ist bekannt, aber die Folgen der Abwägung zwischen schnellem Prototyping und "richtigem" Tun werden meist erst viel später spürbar.

Wie können wir Ihnen helfen?

Als Embedded-Linux-Dienstleister hat Pengutronix im Laufe der Jahre viel Erfahrung darin gesammelt, Kunden bei der Restrukturierung technischer Schulden zu helfen.

Wir wissen, dass ein langfristig wartbares Produkt bei den allerersten Ideen und Entscheidungen beginnt. Wir wissen auch, dass die Entwicklung von Hardware und Software Hand in Hand gehen muss. Deshalb möchten wir Ihnen so früh wie möglich bei einem Projekt helfen, d.h. wir überprüfen Schaltpläne und beraten Sie bei Komponentenentscheidungen.

Während die Hardware-Abteilung einen Prototyp entwickelt, muss auch die Software-Architektur entworfen werden. Wir helfen Ihnen, auf Basis eines aktuellen Yocto oder PTXdist Build-Systems, ein Board Support Package zu erstellen, das genau auf Ihre Hardware zugeschnitten ist und Ihren Bedürfnissen entspricht. Wir ergänzen fehlende Treiber und Softwarekomponenten in einer testgetriebenen Entwicklung und stellen sicher, dass Ihr BSP reproduzierbar, gut strukturiert und auf dem aktuellen Stand der Technik ist.

Sobald Ihr Produkt verkauft wird, helfen wir Ihnen, es durch kontinuierliche Tests und sichere Updates zu pflegen.

Machbarkeitsstudie: Linux-Automation MC-1

Unser technischer Demonstrator ist für eine breite Palette von Anwendungsfällen konzipiert: Es könnte ein Bedienfeld zur Überwachung Ihrer häuslichen Infrastruktur sein (wie Ihre Solarpaneele oder Türklingeln). Es könnte ein Informations- oder Unterhaltungssystem in Ihrem Fahrzeug sein oder alles andere, was Sie sich vorstellen möchten.

Daher war Display-Unterstützung eine Voraussetzung, ebenso wie eine Netzwerkverbindung, denn alle IoT-Geräte brauchen eine Netzwerkverbindung ;-) Und wenn wir eine Netzwerkverbindung haben, können wir Power over Ethernet nutzen, um das Gerät mit Strom zu versorgen.

Eine letzte Anforderung: Das Board soll klein genug sein, um in die Rückseite des Displays zu passen.

In Zusammenarbeit mit unserem Schwesterunternehmen Linux Automation GmbH und unseren Partnern Octavo Systems und Bopla präsentieren wir einen Proof of Concept für die Design for Mainline-Strategie.

Unser Embedded Board enthält nur handelsübliche Komponenten, die von Mainline-Linux-Treibern gut unterstützt werden.

Daher betrug der anfängliche Aufwand für das Design der Schaltung für diesen Prototyp nur etwa zwei Wochen und eine weitere Woche, um den gesamten Software-Stack zu erstellen. Möglich wurde dies durch eine durchdachte Auswahl der Komponenten, die wir Ihnen an dieser Stelle vorstellen wollen:

  • Mögliche SoCs werden nicht nur nach ihrem Funktionsumfang, Preis und ihrer Verfügbarkeit bewertet, sondern auch nach der Offenheit der Dokumentation und dem vorhandenen Upstream-Support. Für diesen PoE-gespeisten Display-Controller erfüllt der STM32MP1 alle Kriterien.
  • Der OSD32MP1x macht es einfach, eine Brücke zwischen der IT und der physischen Welt zu schlagen. Wenn man eMMC-Speicher hinzufügt, hat man bereits einen vollwertigen Linux-Computer; auf einer Platine mit geringer Lagenzahl.
  • Upstream-Support in den Linux Kernel wurde für das Board durch die Projekte ARM Trusted Firmware und Barebox Bootloader eingebracht. Es müssen keine Software-Komponenten gepatcht werden, um ein Linux-System zum Laufen zu bringen.
  • Ein BSP sammelt Konfigurationsparameter und endgültige Versionen aller verwendeten Softwarekomponenten. Softwareversionen können auch nach Jahren noch reproduziert werden.
  • Das BSP baut auf etablierten und von einer breiten Community geschützten Build-Systemen wie Yocto oder PTXdist auf, wo viele Firmen und Enthusiasten gemeinsam an der Aktualisierung der verschiedenen Komponenten arbeiten und dabei die Kompatibilität aufrechterhalten.
  • Die von Etnaviv betriebene Grafikpipeline, die von Pengutronix im Linux-Kernel gepflegt wird, bietet dem Anwender eine vertraute Umgebung: Grafik-Toolkits, ähnlich wie sie auf einem Standard-Linux-Desktop-PC eingesetzt werden.
  • Neue Software wird kontinuierlich auf das Board aufgespielt und Testsuiten laufen, um Regressionen während der Entwicklung abzufangen.
  • Um den Kernel-Entwicklern so früh wie möglich Rückmeldung über Regressionen zu geben, kann das Board zusätzlich in die weltweite KernelCI-Infrastruktur integriert, die die Linux-Kernel-Maintainer informiert, wenn neue Patches zu Problemen auf der jeweiligen Hardware führen.
Zurück zur Messeseite

Weiterführende Links

Showcase: Remote Working

Zur Projektarbeit mit unseren Kunden gehört die Arbeit mit Prototypen-Hardware. Da wir grundsätzlich parallel für mehrere Kunden an vielen verschieden Projekten arbeiten, bedeutet das eine Flut von Prototypen auf den Schreibtischen unserer Entwickler. Spätestens wenn im Team an einem Prototypen gearbeitet werden soll oder längere Zeit nicht aktiv an einem Projekt gearbeitet wird, muss die Hardware regelmäßig umgezogen und am neuen Arbeitsplatz verkabelt werden. Erschwerend kommt hinzu, dass die Entfernung zwischen unseren Entwickler-Schreibtischen durch die aktuelle Homeoffice-Situation, nicht wie gewohnt in Metern, sondern in Kilometern gemessen wird.


Showcase: Continuous Testing

In den Linux-Kernel wandern jedes Jahr etwa 70.000 Patche, viele davon sind Bugfixes. Das Gleiche gilt für die meisten anderen Open-Source-Projekte, die Teil eines modernen Linux-Systems sind. Um von der Arbeit in der Community profitieren zu können, bleibt als sinnvolle Strategie, ständig auf dem neusten Softwarestand aufzusetzen und das System aktuell zu halten. Natürlich können bei dieser Menge an Änderungen auch neue Fehler hinzukommen oder Inkompatibilitäten entstehen.


USB-SD-Mux now reads SD Card registers

The USB-SD-Mux is designed to make life easier for embedded software engineers by automating the transfer of an SD card between a host PC (deploying a new software image to the SD card) and an embedded Linux device. Since we have introduced this device into our Embedded Linux development workflow back in 2019 we have probably written thousands of SD card images with it. Now the usbsdmux software controlling the device has gained a new feature: It can now read and decode a few SD card information registers. This makes it possible to gain more insight into the capabilities of the used SD card - especially while developing on low-level software and drivers interfacing with the SD card.


umpf - Git on a New Level

Moderne Softwareentwicklung ohne begleitende Versionsverwaltung wie Git ist heutzutage unvorstellbar - Änderungen am Quellcode sollen schließlich nachvollziehbar dokumentiert und beliebige Verssionsstände jederzeit einfach reproduziert werden können. Für Arbeiten an komplexeren Projekten wie etwa dem BSP ("Board Support Package") eines eingebetteten Systems mit mehreren Entwicklungssträngen skaliert ein bloßes Aufeinanderstapeln der einzelnen Änderungen jedoch nicht.


LXA USB-T1L ❤️ Beagle Play: Exploring Single Wire Ethernet

It seems everybody is talking about Single Pair Ethernet (SPE) these days. So we want to follow the trend and do the same :-) SPE is a class of Ethernet transmission standards that uses just a single pair of twisted pair cable for data transmission. There are multiple SPE variants spanning maximum data rates from a hand full MBit/s to multiple GBit/s and cable lengths from a hand full of meters to kilometers. The most interesting ones from our embedded-centric point of view are 10Base-T1L (point-to-point, up to 1 km), 10Base-T1S (multidrop, approx. 10 m) and 100Base-T1 (point-to-point, 15 m). The new Beagle Play comes with a 10Base-T1L PHY. This makes it a great peer to experiment with our Linux Automation USB-T1L. In this post we will explore the possibilities of 10Base-T1L on a recent Linux system.


Pulse Width Modulation (PWM) is easy, isn't it? - Turning it off and on again

Part of Uwe Kleine-König's work at Pengutronix is to review PWM (Pulse Width Modulation) drivers. In addition, he also sometimes refactors existing drivers and the Linux kernel PWM subsystem in general.


Yes we CAN... add new features

Have you ever experienced an otherwise fine product that is missing just the one feature you need for your application?


DSA in Barebox

The v2022.05.0 Release of barebox introduced initial support for the Distributed Switch Architecture (DSA) Framework. DSA is originally a subsystem from the Linux Kernel, which exposes the individual ports of a network switch IC as virtual network interfaces.


Pengutronix at Embedded World 2022

Welcome to our booth at the Embedded World 2022 in Nürnberg!


First Steps using the candleLight

So you went and got yourself one of our fancy rocket-penguin branded CandleLight dongles or, being the die hard hacker you are, went and soldered one up in your toaster oven labeled "not food safe". What's next then? How do you use this thing? Let's answer these question by grabbing a Raspberry Pi and exploring some of the possibilities.