Embedded Software Engineer (modernes C++, Design für Testbarkeit, gern hardwarenah)
- Verfügbarkeit einsehen
- 0 Referenzen
- auf Anfrage
- 24941 Flensburg
- DACH-Region
- de | en | fr
- 14.06.2022
Kurzvorstellung
Qualifikationen
Projekt‐ & Berufserfahrung
2/2022 – offen
Tätigkeitsbeschreibung
Entwicklung eines Code-Generators für die Erzeugung eines typsicheren Register-Modells für Mikrocontroller und FPGA in modernstem C++:
* Implementierung eines SystemRDL 2.0 Compiler Frontend
* Entwicklung eines transaktionsbasierten SFR Modells mittels C++20 zero-cost
Abstraktionen zur Compile-Zeit
C++, Software Architecture, Software Design
1/2022 – 6/2022
Tätigkeitsbeschreibung
Umstellung einer proprietären Entwicklungslandschaft auf ein modernes,
herstellerunabhängiges Setup.
* Kritische Auseinandersetzung mit Anforderungen, Vorstellungen und Ansätzen des Kunden
* Konvertierung der IDE-zentrischen Build-Lösung auf CMake Build System
* Modellieren und Aufarbeiten von problematischen Abhängigkeitsbäumen
* Kontinuierliche Umstellung parallel zur Entwicklung/Produktpflege
C++, Embedded Software, Make (Software)
10/2021 – 12/2021
Tätigkeitsbeschreibung
Analysen und Strategien zum Aufdecken und Beheben handwerklicher Mängel einer Bestandssoftware (über 20 Jahre gewachsen, ca. 2 Mio. LOC).
* Durchführung von Reviews und statischen Code-Analysen
* Kategorisierung von Mängeln Aufstellung von Gegenmaßnahmen
* Experimentelles Refactoring
* Erarbeitung einer langfristigen Strategie zum kontinuierlichen Abbau technischer Schulden
C++, Softwareanforderungsanalyse, Software Architecture
12/2020 – 5/2021
Tätigkeitsbeschreibung
Unterstützung eines Teams bei der Entwicklung eines medizinischen Geräts;
insbesondere Verifikation eines Alarm-Subsystems nach IEC 60601-1-8.
* Unit Test
* Code- und Design-Reviews
* Integration und Dokumentation einer Abstraktionsschicht zum Test von IBM
Rhapsody State Charts
* Beiträge zum internen Wissenstransfer bezüglich modernem C++ sowie Test- und Mocking-Techniken
C++, Embedded Software, Testdesign (IT), Testen
10/2019 – 5/2020
Tätigkeitsbeschreibung
Entwicklung und Umsetzung einer nachhaltigen Strategie zum nachträglichen Einbringen von Unit Tests in eine etwa 500k Zeilen große Codebasis einer Steuerung für Gebäudeautomation:
* Analyse der Codebasis und Entwicklung einer teamweiten Vision der künftigen Arbeitsweisen und der Projektstruktur
* Migration des Buildsystems nach CMake
* Modularisierung der Codebasis
* Redesign und Refactoring ausgewählter Bestandteile um Tests zu ermöglichen
* Moderation der Auswahl von Unit Test und Mocking Frameworks
* Einführen eines Git-basierten Peer-Review Workflows innerhalb des Scrum-Teams
* Einbringen der Tests in die Continuous Integration Pipeline
Parallele Beratung des Teams hinsichtlich:
* Einsatz moderner C++ Sprachbestandteile im Embedded Kontext
* Fortgeschrittene Techniken mit der Versionsverwaltung Git (Rebase-Workflow, Pflegen einer nachvollziehbaren Historie, etc.)
* Design und Entwurfsmuster für Testbarkeit
* Test- und Mocking-Techniken
C++, Scrum, Software Design, Test Automation, Testdesign (IT)
2/2019 – 4/2019
Tätigkeitsbeschreibung
Unterstützung und Beratung eines Teams bei der Aufwandsabschätzung zur nachträglichen Einführung von Unit Tests in die Codebasis eines komplexen Steuerungssystems:
* Kommunizieren der Architektur- und Strukturvoraussetzungen zur Umsetzung von Unit Tests und Mocking (z. B. SOLID-Prinzipien und ihr Erscheinungsbild in C++)
* Aufdecken problematischer Architektur- und Codemuster, die o. g. Prinzipien entgegenstehen.
* Durchführen von exemplarischen Code-Experimenten zur Messung der nötigen Arbeitszeit zur Auflösung dieser Probleme.
* Entwicklung eines systematischen Ansatzes zur Problemlösung, der parallelisierte Arbeiten ermöglicht.
* Extrapolieren der experimentell ermittelten Abschätzung mittels Code-Metriken.
* Dokumentieren der Strategie und der Aufwandsabschätzung als Entscheidungsgrundlage für das Management.
C++, Confluence, Scrum, Software Architecture, Software Design, Testdesign (IT)
8/2017 – 9/2018
Tätigkeitsbeschreibung
Raumfahrt: Validierung/Portierung von Satellitensoftware auf FreeRTOS
Anknüpfend an das vorausgehende Projekt TechnoSat wurde das dort entwickelte UHF-Kommunikationssystem für den Einsatz im neuen Satelliten TUBIN angepasst. TechnoSat und TUBIN sind Projekte der Technischen Universität Berlin in Zusammenarbeit mit dem DLR.
* Portierung der On-Board-Software des Kommunikationssystems des Satelliten vom proprietären OS (RODOS vom DLR) nach FreeRTOS
* Modellierung des Kommunikationssystems und dessen Protokolle als kommunizierende Automaten in UPPAAL; Model-Checking für Fehlerzustände und Deadlocks
* Wissensvermittlung der Systemarchitektur sowie nützlicher C++11/14/17 Konstrukte im Embedded Kontext an neue Teammitglieder
Embedded Entwicklung / hardwarenahe Entwicklung, Echtzeit-Betriebssysteme, C++, Raumfahrttechnik
7/2013 – 7/2017
Tätigkeitsbeschreibung
Eigenständige Entwicklung der On-Board-Software des UHF-Kommunikationssystems für die Plattform des Nanosatelliten TechnoSat (von der Architektur über die Implementierung bis zur Verifikation). Der Satellit wurde an der Technischen Universität Berlin in Zusammenarbeit mit dem DLR entwickelt und hat im Juli 2017 erfolgreich seinen Betrieb aufgenommen.
* Systemdesign Software ECSS Phase C und Verteidigung im Critical Design Review
* Treiberentwicklung für STM32F4-Serie und Semtech Transceiver
* Kanalcodierung (Scrambling, Interleaving, Block-Codes, CRC)
* Strategien zur fortlaufenden Synchronisation der Übertragungsstrecke
* Implementierung der diversen, proprietären Protokollschichten
* Unterstützung bei HF-Tests und Charakterisierung der Antennen in externer Testanlage
* Planung und Durchführung von Freifeldversuchen mit der Referenz-Bodenstation
Darüber hinaus Beiträge zur Entwicklung der Satellitenplattform:
* Entwicklung einer Satelliten-weiten C++ Treiberarchitektur zur vollständigen Entkopplung von Interface, Hardware-Konfiguration und Treiber-Implementierung
* Einführung und Realisierung eines Peer-Review Prozesses basierend auf Git
Implementierung einer Continuous Integration Pipeline basierend auf Jenkins und Docker
* Design und Implementierung eines redundanten, fehlertolleranten, Bootloaders; formale Verifikation mit dem Isabelle/HOL Theorembeweiser
Entwicklung von Wireshark "Packet Dissector Plugins" zur Analyse von proprietären CAN-Nachrichten
* Implementierung eines Unit-Testing Frameworks für verteiltes Testen auf der Zielhardware; Anschluss an den CI-Server
* Implementierung von Thread-aware Debugging für ein proprietäres Betriebssystem (RODOS vom DLR) innerhalb von OpenOCD
* Unterstützung bei der Entwicklung eines Testplans für die Abnahmetests
* Unterstützung der Umwelttests (Radioaktive Strahlung, Thermal/Vakuum)
Echtzeit-Betriebssysteme, Objektorientierte Analyse und Design (OOAD), C++, Gerätetreiber, Picmicro, Kanalkodierung, Embedded Software
Ausbildung
Berlin
Berlin
Über mich
Weitere Kenntnisse
Programmiersprachen:
C++ mein Schwerpunkt, C++11 bis C++17, insbesondere auf Embedded Systemen
C insbesondere auf Embedded Systemen
Java bis Version 1.8
Verilog
Bash Shell
Betriebssysteme:
Bare Metal Entwicklung
FreeRTOS auf ARM Cortex M3, M4, A9
Linux
RODOS (vom DLR)
Hardware:
STM32
ARM Cortex M
ARM Cortex A
Atmel AVR
Microchip PIC16
Semtech HF Transceiver
Lattice ECP5 FPGA
Im Umgang mit typischen Laborgerätschaften bin ich vertraut und kann diese teilweise auch bereitstellen:
Oszilloskop
Spektrumanalysator
JTAG Equipment
USB Analyzer (High-Speed, Super-Speed)
Löttechnik
ESD-Arbeitsplatz
Der Umgang mit Schaltplänen, Layouts, Datenblättern ist selbstverständlicher Teil meiner Arbeit.
Arbeitsformen:
Ich habe sowohl Erfahrungen in agilen Teams (Scrum, Pair-Programming, TDD, CI), wie auch erste Erfahrungen in regulativen Umgebungen (Space ECSS Standards) gemacht.
Domänenspezifisches Wissen:
Kanalcodierung
UHF Kommunikation und Modulationstechniken
Satellitentechnik, Kleinstsatelliten
Schnittstellen/Busse:
UART, I2C, SPI, DMX
USB (sowohl Host-seitig mit libusb-1.0, als auch Device-seitig mit Synopsys IP)
CAN
Eingesetzte Werkzeuge:
IDEs: JetBrains CLion, NetBeans, Eclipse, Visual Studio
Compiler: GNU GCC, Clang, Werkzeugentwicklung mit LLVM/Clang Frontend
Debugger: GDB mit OpenOCD
Buildsysteme: GNU Make, CMake, Apache Maven
Groupware: Jira, Confluence, Redmine
Unit Test Frameworks: Catch2, Google Test
Mocking Frameworks: Turtle, FakeIt
Continuous Integration: Jenkins, Docker
Source Code Management: Git, Mercurial, Subversion, gitolite, Gitlab
Dokumentation: Doxygen, LaTeX, Javadoc
UML: Visual Paradigm
Analyzer: Wireshark, TotalPhase Beagle USB 5000, generische Logic Analyzer
Kontakte mit Industriestandards:
IEC 61499: Steuerungen: Funktionsblockmodelle mit ereignisorientiertem Ausführungsmodell
ECSS Normen: Projektmanagement und Softwareentwicklung im Raumfahrtumfeld
Persönliche Daten
- Deutsch (Muttersprache)
- Englisch (Fließend)
- Französisch (Grundkenntnisse)
- Europäische Union
Kontaktdaten
Nur registrierte PREMIUM-Mitglieder von freelance.de können Kontaktdaten einsehen.
Jetzt Mitglied werden