Schlagwörter
Skills
Seit über 15 Jahren beschäftige ich mich mit der Entwicklung komplexer und sicherheitskritischer System- bzw. Embedded-Software.
Branchen: Telekommunikation, Smartcards
Programmiersprachen: C, C++, Java, Perl, Python
Betriebssysteme: Linux, Windows und diverse RTOS
Schulungen/Coaching zu folgenden Themen:
- Verbesserung der Software-Qualität mittels PC-Lint
- Entwicklung von plattformunabhängigen und portablen Code
- Code Optimierungen (Performance/Footprint)
- Build- und Testautomatisierung
- Software Configuration Management
- Wie man herausragende Entwickler findet
Projekthistorie
Visual Studio 2019, C++17, CMake, Conan, Google protobuf, gstreamer, opengl, Qt, Google Test/Mock.
Post-merge und Pre-merge Builds, Nightly Builds, Erfassen und Auswerten von SW Qualitätsmetriken (z. B. Compiler Warnings, MISRA Verletzungen, Test Coverage).
Python, Jenkins.
Integration eines Flash-Bootloaders für ein KFZ-Steuergerät zur Batterieüberwachung in elektrisch angetriebenen Fahrzeugen.
GreenHills C/C++, winIDEA Debugger, S32K148 MCU.
Bei dem Master Controller handelt es sich um eine multi-threaded realtime-Linux Anwendung, welche die Gelenke eines Roboterarms steuert. Der Master Controller sorgt für den Datenaustausch der Sensor/Aktoren der Gelenke und dem MATLAB/Simulink Roboter Steuerungsalgorithmus. Darüber hinaus ist der Master Controller für diverse Verwaltungs- und Wartungsaufgaben (inkl. Firmware Download zur Gelenkeletronik) verantwortlich.
Implementierung diverser FoE (File access over EtherCAT) Kommandos, Refactoring bzgl. Testability, Dependency-Injection, Entwicklung von Unit Tests, Code Coverage Analyse mittels CTC++ and gcov.
Implementierung eines Firmware Download Protokolls zum Einspielen von Gelenkfirmwareversionen über FoE. Die Umsetzunge erforlgte sowohl in der Gelenksoftware, als auch im MasterController.
RT-Linux, g++, C++11, Google Test/Mock, CMake, EtherCAT, µC/OS II, TI Code Composer Studio.
C++, Java, Groovy, Python, Artop.
Pflege/Erweiterung diverser Steuergeräte-Systemfunktionen.
C++, Google Test/Mock.
Implementierung eines XCP Trace Servers auf einem KFZ- Steuergerät (C++), sowie eines XCP Trace Clients (Java/C#). Per XCP Protokoll werden interne Speicherdaten und Debug-Informationen des Steuergeräts via UDP vom Server versendet und vom Client empfangen, dekodiert und dargestellt.
Integration und Erweiterung von Fahrzeugsystemfunktionen innerhalb eines BDC (Body Domain Controller). Implementierung von AUTOSAR CDDs (Complex Device Drivers).
Cygwin, Embedded C/C++, AUTOSAR, Google Test/Mock, CMake, Python.
Basierend auf der ARM/TrustZone-Technologie und eines L4 Microkernel wurde ein sicheres Betriebssystem ("MobiCore") realisiert, dass es Mobiltelefon-Anwendungen (z. B. Android Applikationen) ermöglicht, sichere Transaktionen durchzuführen und damit Schutz vor Schadsoftware (z. B. Trojanern) bietet.
Implementierung von MobiCore-Funktionalität in C/C++, insbesondere Content-Management Operationen zum Verwalten von Service Providern und Trustlets innerhalb von MobiCore.
Ubuntu Linux, Eclipse CDT, gcc und g++, CppUnit, CppUTest, Subversion, Git.
Implementierung eines Content Management Servers in C++ für Android, der über eine Socketverbindung eine Schnittstelle zum MobiCore Content Management anbietet.
Ubuntu Linux, Eclipse CDT, g++, Subversion.
Implementierung eines Content Management Clients in Java, der u. a. eine Bibliothek für Content Management Backend- sowie Testsysteme anbietet.
Eclipse, JDK 1.6, unter Verwendung von Reflection und selbstdefinierten Annotations, JUnit, Subversion.
Erweiterung des MobiCore-Betriebssystems um die Funktionalität "nachladbare Treiber". Erweiterung der Interprozesskommunikationslogik bzw. der IPC-Statemachines.
Windows, Cygwin, ARM RVDS Toolchain.
Implementierung eines Konfigurationswerkzeugs in Java. Kommandozeilentool zum Setzen bzw. Verändern diverser Kerneloptionen direkt im Binärimage.
Ubuntu, Eclipse, JDK 1.6, XPath.
Entwicklung und Pflege von PC-basierten Funkempfänger-Benutzeroberflächen in C++ sowie dazugehörigen Gerätesimulationen als Teilkomponente eines vernetzten Funküberwachungssystems (Gesamtgröße: 1.5 MSLOC C++); Entwicklung eines Multi-Client fähigen Treibers, der über UDP sowie TCP/IP mit den Clients und Funkempfängern kommuniziert.
Visual Studio 2005, flex/bison, STL, Boost, Qt, CppUnit, ClearCase.
Ziel ist es, ein neuartiges Betriebssystem zu realisieren, dass sich bezüglich Zukunftstechnologien wie NFC, USB, Smartcard-Webserver und JavaCard 3.0 als tragfähig erweist.
Mitwirkung bei der Definition der Anforderungen, Architektur und Projektkonventionen; Implementierung hardwarenaher Funktionalität (Device Treiber); Implementierung des Filesystem-Layers; Vereinheitlichung der Entwicklertestumgebung (ein auf C++ basierendes Test-Framework).