Software Engineering

- Embedded Systems Software Engineering (C/C++)

- High Performance Computing on GPUs (CUDA)

Technologien

C/C++, CUDA, Bluetooth Low Energy, Bluetooth Mesh, WiFi, NFC, MQTT, I2C, SPI, UART

Software Entwicklung in C/C++

Die dominanten Programmiersprachen im Embedded Umfeld sind C und C++, da sie Hardware-nahe Entwicklung und gute Performance erlauben.

Konnektivität und IoT

Embedded Systems müssen häufig mit ihrer Umwelt kommunizieren. Dabei kommen Busse wie I2C und UART oder drahtlose Technologien wie Bluetooth Low Energy und WiFi zum Einsatz.

GPU Computing in CUDA

Um große Datenmengen in kurzer Zeit verarbeiten zu können werden GPUs mit ihren vielen tausend Kernen verwendet. Dies erfordert den Einsatz eigener Programmiersprachen wie CUDA.

Technologische Expertise

kombiniert mit fachlichen Verständnis der Probleme des Kunden

C/C++

Nahezu alle Projekte auf Embedded Basis oder im High Performance verwenden C oder C++ als Programmiersprache, da diese direkten Zugang zur Hardware erlauben und mehr Kontrolle über Ressourcen wie Speicher und Prozessorzyklen erlauben als die meisten anderen Sprachen. Darüber hinaus wird C und C++ Code von Compiler für die entsprechende Platform optimiert, sodass der Speicherverbrauch reduziert und die Performance verbessert wird.

Bluetooth Low Energy

Eine der wichtigsten Technologien im Embedded Umfeld ist Bluetooth Low Energy. Es erlaubt den drahtlosen Datenaustausch zwischen zwei Geräten, wie Bluetooth Classic, benötigt aber nur einen Bruchteil der Energie. Basierend auf einem Client-Server Modell lassen sich beliebige Use-Cases implementieren, zum Beispiel das Bereitstellen von Sensordaten, das Konfigurieren von Geräten oder OTA Updates der Embedded Firmware. 

WiFi

Um Embedded Systeme mit dem Internet zu verbinden, kommt meist WiFi zum Einsatz. Darüber hinaus ist WiFi als Internetzugang weit verbreitet, so findet sich in fast jedem Haushalt und öffentlichem Gebäude ein Access Point. Wenn ein Embedded System mit einem WiFi Netzwerk verbunden wird lassen sich interessante Use-Cases implementieren, so kann ein Gerät mit einem Cloud-Backend kommunizieren oder OTA Updates installieren.

CUDA

Immer größere Datenmengen und Echtzeit Use-Cases erfordern mehr Rechenleistung als es selbst die besten CPUs hergeben. Deshalb bietet sich dabei oft der Einsatz von Grafikkarten an, da diese, mit mehreren tausend Kernen, viele Operationen bedeutend schneller bearbeiten können, besonders falls es sich um mathematische Berechnungen wie Faltungen, Matrix-Algebra oder die Fast Fourier Transformation handelt.

Jonas Wolf

Als Experte für Embedded Systeme und IoT bin ich seit vielen Jahren als freiberuflicher Berater und Softwareentwickler tätig. Ich beschäftige mich mit Softwareengineering von komplexen Softwarearchitekturen, agiler Softwareentwicklung und Usability. Als System-Designer habe ich Erfahrung in der Entwicklung von vernetzten Produkten, die Bluetooth Low Energy oder WiFi zur Konnektivität nutzen.