2022 ? heute: Entwicklung eines portablen Redundanzmanagement Systems
Kunde: Bosch Reutlingen
Aufgaben:
Entwicklung eines portablen Redundanzmanagement Systems für embedded Linux als Echtzeit Applikation. Das Redundanzmanagement System läuft auf der ctrlX Steuerungsplattform von Bosch Rexroth und wird bei Bosch im Halbleiterwerk in Reutlingen eingesetzt. Zwei ctrlx Steuerungen (eine Steuerung ist atkiv und die andere Steuerung steht im Standby) sind über eine Redundanzkopplungsschnittstelle miteinander verbunden und garantieren Hochverfügbarkeit. Auf je einer Steuerung läuft ein Redundanzmanagement System.
- Entwicklungstätigkeiten allgemein
- Redundanzmanagement System für die ctrlX Platform
- Gesamte, komponentenbasierte System Architektur als Linux Echtzeit Applikation mit mehreren Realtime Threads
- Implementierung von über 40 C++ Bibliotheken (STL, C++17) mit ca. 85.000 Lines of Code
- Erstellen der CMake Buildumgebung für x64 Builds und ARM Builds
- Software Release Management
- Implementierung von Unit Tests für die einzelnen Bibliotheken, die sowohl auf der Steuerung als auch auf dem Entwicklungshost laufen
- Implementierung von speziellen Testapplikationen als Snap, die nur unter Echtzeitbedingungen auf der Steuerung laufen
- Integrationstests, Abnahmetests, Stabilitätstests, Langzeittests
- Entwicklung einer eigenen (kleinen) Programmiersprache, die vom Redundanzmanagement System ausgeführt werden kann, mit Laufzeitsystem, bestehend aus Compiler, Code Generator und Interpreter (Register basierter Bytecode Interpreter)
- Aufsetzen der gitlab Umgebung
- HMI Entwicklung
- Architektur einer C# basierten HMI Applikation (Windows Forms) für die Kommunikation mit dem Redundanzmanagement System auf der ctrlX Plattform
- Implementierung von Kommunikationssoftware mit der Steuerung über REST API mit speziellen C# Klassen
- Design einer Makrosprache für die Erstellung von Testcases für das redundante System durch den Anwender
- Architektur des Laufzeitsystems im HMI Tool für die Makrosprache, Compiler und Interpreter
- SPS Applikation
- Entwicklung einer SPS Applikation für Kunden- und Messedemonstration
- Organisatorische Tätigkeiten
- Erstellen von Spezifikationen für die Schnittstelle zur SPS Applikation in Abstimmung mit dem Leitkunden Bosch Reutlingen
- Terminplanung bezüglich der Entwicklung neuer Funktionalität in Abstimmung mit Bosch Reutlingen
- Planung von Arbeitspaketen für die Plattform Entwicklung
- Planung von Arbeitspaketen für die HMI Entwicklung
- Steuerung des HMI Entwicklungsteams bestehend aus 2 Entwicklern
- Gesamtverantwortung der Entwicklung gegenüber dem Leitkunden
- Entwicklungstätigkeiten Redundanzmanagement System (auszugsweise Beschreibung der wichtigsten Komponenten)
- Datalayer Abstraktion
- Der Datalayer ist die Basiskomponente, mit der Applikationen mit den Plattform Diensten kommunizieren.
- Entwicklung einer Abstraktionsschicht zum Datalayer für die Kapselung der Kommunikation mit der Plattform (Dataprovider Modell) in C++
- Schnittstelle zum Feldbus
- Implementierung einer C++ Komponente für die Kommunikation mit dem Feldbus in Echtzeit (lesen und schreiben von E/A Signalen)
- Schnittstelle zur SPS
- Implementierung von C++ Komponenten für die Kommunikation mit der SPS Applikation in Echtzeit
- RPC Stack
- Implementierung eines Remote Proceduce Call Stacks (Proxy/Stub Modell) in C++ für die Kommunikation beider Redundanzmanagement Systeme auf beiden Steuerungen bestehend aus:
- Transportschicht über Raw Sockets (direkte Ethernet Kommunikation ohne TCP Stack)
- Übertragungsprotokoll, senden und empfangen von Datenpaketen (jedes gesendete Paket wird vom Empfänger quittiert)
- Serialisierung und Deserialsierung von Funktionsparametern der RPC Funktionen
- Verwalten von zwei redundanten Ethernet Schnittstellen. Bei Ausfall einer Übertragungsstrecke wird die Kommunikation noch gewährleistet
- Client/Server Architektur
- Implementierung des Redundanzmanagement Systems als Client/Server Architektur
- State Machines
- Implementierung von Event getriebenen State Machines als Hauptkomponente. Das Redundanzmanagement System läuft in einer Eventloop
- Zustandsvektor
- Implementierung eines Zustandsvektors als C++ Komponente für die zentrale Erfassung von auf der Plattform verteilt liegenden Information über den Zustand der SPS Applikation und des Feldbusses usw.
- Prolog Integration als regelbasiertes System
- Integration eines Prolog Laufzeitsystems (SWI-Prolog) als zentrale Komponente für die Redundanzlogik
- Implementierung einer C++ Komponente für den Aufruf und Kapselung von Prolog Funktionen aus der C++ Umgebung heraus (Logic Inference Engine)
- Implementierung Redundanzlogik in Prolog
- Die Redundanzlogik wird in Form von Regeln in der Programmiersprache Prolog implementiert und wird beim Anlauf des Redundanzmanagement Systems über das Prolog Laufzeitsystem kompiliert und ausgeführt. Die Implementierung kann vom Anwender geändert und auf seine Bedürfnisse zugeschnitten werden. Die Prolog Implementierung legt fest unter welchen Bedingungen eine Umschaltung auf das Standby System durchgeführt werden muss
- Diagnose System
- Implementierung einer Diagnose Komponente in C++ für Erzeugen von Diagnosemeldungen für den Anwender
- Prozessabbildvergleich
- Implementierung einer C++ Komponente für den Vergleich der Eingangssignale beider Steuerungen. Signalunterschiede müssen nach definierter Zeit verschwinden
- Kommunikation mit HMI Tool
- Implementierung von C++ Komponenten für die Kommunikation mit dem HMI System
09/2024 ? 02/2025: Entwicklung einer C++ Lösung für den Firmware Update
Kunde: Hexagon Schweiz
Aufgaben:
Entwicklung einer C++ Lösung für den Firmware Update eines STM32 basierten Micro Controlllers für Kamera Sensoren
- Entwicklung eines Interrupt gesteuerten Fullduplex UART Treiber für embedded Linux für den Firmware Update
- Implementierung eines Linux UIO Treibers für die Interruptbehandlung
- Implementierung asynchronen API für die Anwender Applikation mit Event gesteuerter Benachrichtigung beim Empfang von Daten und dem Senden von Daten
- Implementierung des Bootloader Protokolls für die Kommunikation des ROM basierten Bootloaders des Kamera Sensors
- Implementierung der Firmware Update Applikation für die Übertragung, die Verifizierung der Firmware und den Neustart des Kamera Sensors
Implementierung einer Image Processing Pipeline bestehend aus mehreren FPGA Funktionsblöcken von SmartLogic
- Architektur und Implementierung einer Image Processing Pipeline durch entsprechende Programmierung der FPGA Funktionen
- Implementierung von FPGA DMA Transfers (6 DMA Kanäle) für das Erzeugen von TIFF Bildformaten im RAM
- Implementierung von CI Tests in Python
2021 ? 2022: C++ SDK Entwicklung(C++17) für Feldgeräte im Vermessungswesen
Kunde: Trivium eSolutions
Aufgaben:
C++ SDK Entwicklung(C++17) für Feldgeräte im Vermessungswesen der Fa. Leica
- Implementierung von C++ Klassen für die Messdatenerfassung
- Mitarbeit bei der Entwicklung eines relationalen Datenmodells für die Messdatenerfassung
- Implementierung von Python Bindings als Testumgebung der C++ Implementierung
- Implementierung von Unit Tests mit Google Test
- Implementierung von Python Scripts für das Buildsystem Teamcity
2013 - 2021: System Software Design und Entwicklung für einen 3D Kamerasensor
Kunde: SICK AG Sensor Technik
Aufgaben:
- C++ SDK Entwicklung(C++17) für Feldgeräte im Vermessungswesen
System Software Engineering unter Microsoft Windows in folgenden Bereichen:
- Kommunikationssoftware für Sensor Anbindung und HMI Client
- Sensor seitiges Protokoll Stack Refactoring (firemeneigener RPC Stub) für verbesserte Performance
- C#.NET basierter Proxy Implementierung(HMI Client) für Kommunikation mit den Stub Funktionen des Sensor Industrie PCs
- C# GUI für den Test des Proxy/Stub Systems (Windows Forms) und für die Visualisierung der Kamerabilder
- ProfiNet und ProfiSafe Feldbusanbindung des Sensor PCs
- Anbindung der Sensor Software and Hilscher ProfiNet Netx PCI Hardware
- Implementierung eines Visualisierungssystems für die von der SPS empfangenen Sensor Daten und Anbindung an Siemens SPS
- Erstellen einer SPS Spezifikation für die Sensor Signale sowie Implementierung eines Datenübertragungsprotokolls (Command/Response Mechanismus mittels I/O Signalen) für den zyklischen Datenaustausch zwischen Sensor und SPS
- Treiberentwicklung für die PCIe FPGA Hardware des Kamera Sensors unter Windows 7 mit späterer Portierung auf Windows 10
- PCIe Windows Kernel Mode Treiber sowie User Mode Treiber für Applikationsanbindung für DMA Streaming von Kamera Images
- Windows Kernel Mode Treiber für die Bereitstellung von physikalischem uncached Memory für DMA Streaming
- User Mode Treiber Stack und Image Streaming Library für Bildaufnahme mittels DMA, sowie Treibern für Kamera Trigger, Beleuchtungszeit und -dauer und Treiber für geometrische Korrektur der Linsen Optik der Kamera. Verwendung von speziellen C++ Compiler Intrinsics für den Zugriff auf memory mapped Register der FPGA Hardware für die Vermeidung der ?Out of Order Execution? der Intel Prozessoren
- Aufbau eines Labor Transition Systems(LTS) für Treiberanbindung an FPGA Hardware unter Windows
- Erstellen einer Win32 DLL (LTS System) mit DMA Streaming Library und User Mode Treiber Stack und Anbindung an TCL als Software Basis für die Weiterentwicklung der Kamera Hardware (PCIe FPGA Hardware)
- Erstellen des Marshalling Frameworks zwischen TCL und C++ Laufzeitsystem mittels SWIG Codegenerators
- MATLAB Anbindung des Labor Transition Systems für Optikmessungen
- Anbindung der LTS Win32 DLL an MATLAB für Image Streaming und Recording für Optik Messungen
System Software Engineering unter in folgenden Bereichen:
- Ubuntu Linux
- Portierung der Sensor Applikation von Windows nach Ubuntu Linux Projekte
- Entwicklung eines Linux PCIe Kernel Treibers für die FPGA Kamera Hardware
- Entwicklung eines Physical Memory Kernel Treibers für das Allokieren von physikalischem noncached Memory für DMA Transfers der FPGA Kamera Hardware
- Entwicklung eines Labor Transition Systems als Linux Shared Library mit folgenden Komponenten:
- Integration des PCIe Kernel Treibers und des Physical Memory Treibers
- Portierung der Windows basierten User Mode Treiber Stacks nach Ubuntu Linux und Portierung der Win32 System Calls nach Posix sowie von speziellen Compiler Intrinsics des GNU C++ Compilers für die Vermeidung der ?Out of Order Execution? der Intel Prozessoren bei memory mapped Register Zugriffen
- Anbindung der LTS Shared Library an Linux TCL Interpreter als Software Basis für die Weiterentwicklung der PCIe FPGA Kamera Hardware
System Software Engineering unter in folgenden Bereichen:
- Embedded Linux(Yocto) von NXP für QorIQ SOC LS1046 Reference Design Board auf ARM7 Basis
- Installation einer Vagrant Virtual Machine mit Ubuntu Linux 14.04
- Installation, Setup des Linux Yocto SDK von NXP und Cross Compiler Toolchain Setup
- Portierung des Ubuntu PCIe Kernel Treibers der FPGA Hardware nach Yocto Linux, Erweiterung auf 32 MSI Interrupts und Integration in das Yocto Build System
- Portierung des Ubuntu Physical Memory Kernel Treibers nach Yocto Linux und Integration in das Yocto Build Systems
- U-Boot Bootloader Erweiterung für das PCIe Root Complex und Endpoint Setup
- Software Entwicklung für die PCIe Crosslink Kommunikation von zwei LS1046 Boards als Zweikanaliges System, Datenübertragung über PCI Express und MSI Interrupt Handling
- Integration der Hilscher ProfiNet PCIe Feldbus Hardware
- Integration des Hilscher Linux Kernel Treibers in das Linux Image
- Integration des User Space Hilscher CIFX Toolkits als Linux Applikation
- Entwicklung einer ProfiNet Applikation in C++11 und Anbindung and den Hilscher Toolkit für den zyklischen Datenaustausch mit Siemens SPS
- Übergang von PCIe Hilscher ProfiNet Anbindung zu Anbindung des Hilscher Evaluation Boards an Interface des LS1046 Flash Controllers (gemultiplexter Daten- und Adressbus) und DPM Interface des Hilscher Eval Boards
- Parametrierung des Hilscher Second Stage Bootloaders für das DPM Setup
- Entwicklung eines Linux IFC Flash Treibers mit UIO Treiberframework für die Anbindung an die Hilscher Eval Board Hardware
Umstieg von Yocto Linux auf Ubuntu Flexbuild Linux von (NXP) mit Umstieg vom LS1046 Reference Designboards von NXP auf eigner Hardware Platform mit NXP SOCs:
- Portierung aller bisherigen implementierten Linux Kernel Treiber, Bootloader Modifikationen und Streaming Library nach Ubuntu Flexbuild Linux
- Anbindung der Hilscher Feldbus Hardware an die neue Hardware Platform über Flash Controller Interface(IFC) der SOC Hardware über Dual Port Memory (DPM)
- Modifikation des Second Stage Bootloaders der Hilscher Hardware für das Setup der DPM (Dual Port Memory) Register
- Implementierung eines Linux Kernel Treibers (UIO Treiber) für die Steuerung der Hilscher Hardware (Interrupt Betrieb) und die Anbindung an die Hilscher Toolkit Software (User Level Software)
- Implementierung von Bare Metal Software für die Hilscher Hardware für das Testen der DPM Verbindung und des Setups mit dem SOC (Validierung der Memory Zugriffe auf das DPM)
- Implementierung von Software für die Hilscher Hardware(Hilscher RcX OS) für das zyklische Setzen von I/O Pins(1ms Takt), die mit Interrupt Eingängen des SOC verbunden sind für das zyklische Generieren von Interrupts von der Feldbusseite
- Implementierung eines Linux Kernel Treibers für Bearbeitung der zyklischen Interrupts und Messung von Jitter Zeiten sowie das Erfassen von nicht erhaltenen Interrupts
2019 - 2021: System Engineering
Kunde: Gefaz Forchheim
Aufgaben:
Entwicklung einer Soft SPS unter Linux Realtime auf einer industriellen Rasperry PI Platform von Kunbus.
- Design des SPS Laufzeitsystems mit Hinblick auf Redundanzfähigkeit
- Implementierung des gesamten Laufzeitsystems in C++ als Linux Realtime Applikation
- Implementierung eines Software Frameworks als API für die Entwicklung
von Anwender Applikationen in C++, die sich als Shared Library in das Laufzeitsystem der SPS laden lassen - System Test mit Kunbus Platform mit digitalen und analogen I/O Baugruppen
2012 - 2013: Windows Treiber Architekturen NDIS 6.20 und NDIS 6.30
Kunde: Intel Comneon Nürnberg
Aufgaben:
Systems Engineering in folgenden Bereichen:
- Windows Treiber Architekturen NDIS 6.20 und NDIS 6.30
- Architektur Analysen von embedded Protokoll Stacks und Interprozess Kommunikation
- Architektur Analyse bezüglich Mobile Broadband Funktionalität von embedded Devices
- Applikationsentwicklung in C# unter Windows 7 und Windows 8
- Kernel Mode Treiber Entwicklung unter Windows 7 und Windows 8 in C (UMDF und KMDF)
Software Design/Entwicklung:
Design und Implementierung eines Windows Mobile Broadband Command Parsers, bestehend aus
- NDIS 6.30 Filter Kernel Mode Treiber
- Codegenerator für die Übersetzung der empfangenen Daten in interpretierbaren Zwischencode
- Anbindung an die Usermode Applikation
- Anbindung an den darunter liegenden NDIS 6.30 Miniport Treiber von Microsoft
- Schreiben des Zwischencodes in einen in den Windows Kernel gemappten Ring Puffer
- User Mode Applikation bestehend aus einer ATL DCOM C++ Komponente für die Kommunikation mit dem Filter Treiber
- Interpreter für die Abarbeitung des vom Filter Treibers erzeugten Zwischencodes
- Anbindung an die graphische Oberfläche mittels .NET Interoperability
- C#.NET basierte graphische Oberfläche
Der Command Parser analysiert NDIS WWAN Requests vom PC zum angeschlossenen Device und NDIS WWAN Responses vom angeschlossenen Device zum PC in Realtime. Die Analyse Ergebnisse werden über die graphische Oberfläche angezeigt. Der NDIS 6.30 Filter Treiber erzeugt aus dem Datenstrom eine interpretierbaren, Token basierten Zwischencode, der von einem Interpreter der DCOM Komponente ausgeführt wird. Dadurch wird das physikalische Layout der Daten von ihrer Repräsentation entkoppelt.
Design und Implementierung eines Windows USB Treibers
- o KMDF Windows Treiber für die Kommunikation über direkte USB Endpoints mit einem angeschlossenen embedded Device
- o COM Port Front End
Der USB Treiber bietet für die Applikation ein COM Port Frontend an, so dass Applikationen mit dem Treiber wie mit einem seriellen COM Port kommunizieren können. Der Treiber selbst schreibt und liest Daten über direkte USB Endpoints.
Entwicklung der .NET und DCOM Komponenten sowie der Kernel Mode Treiber mit dem Developer Studio 2012 von Microsoft:
- Design und Implementierung eines Windows Test Tools für Performance Tests des embedded USB Protokoll Stacks im Loopback Verfahren (Windows 7 und Windows 8)
- Design und Entwicklung eines NDIS Protocol Kernel Mode Treibers für NDIS 6.20 und NDIS 6.30
- Direkte Kommunikation mit dem darunter liegenden NDIS Miniport Treiber am IP Stack vorbei für maximale Performance (Senden und Empfangen von IP Paketen)
- Auswertung der empfangenen Pakete auf Interrupt Level im Windows Kernel
- Design und Implementierung einer User Mode Applikation
- Graphische Oberfläche in C#.NET
- DCOM basierte multihreaded Middleware in C++, Paket basierte Protokollschicht mit Anbindung an den NDIS Protocol Treiber im Windows Kernel
- Anbindung der C#.NET Oberfläche an die ATL DCOM basierte Middleware mittles .NET Interoperability
- Performance Analyse und Latenzzeitmessung des NDIS 6.30 NDIS Miniport Treibers von Microsoft für die Bestimmung des maximal möglichen IP Datendurchsatzes mit Hilfe des NDIS 6.30 Protocol Treibers unter Windows 8
- Requirements Engineering eines NDIS 6.20 Miniport Treibers für Windows 7 eines Third Party Herstellers
- Performance Analyse, Code Review und Reengineering des Third Party NDIS 6.20 Miniport Treibers für Windows 7 (verbesserte Implementierung als Prototyp, Kommunikation mit Treiberhersteller über Funktionsverbesserungen)
- Erweiterung des NDIS 6.20 Miniport Treibers mit multiplen IP Sessions
- Verifikation des embedded USB Protokoll Stacks auf dem embedded Gerät für Mobile Broadband Anbindung
- System Engineering von Firmware Update Funktionalität des embedded Devices unter dem Windows 8.1
- UMDF Treiber Design für Windows 8.1 für automatischen FW Update durch Microsoft Update Server,
- Verwendung der DCOM basierten WWAN API innerhalb des UMDF Treibers für Device Kommunikation auf Basis von Mobile Broadband Device Service Streams
- Design Unterstützung für die Implementierung der FW Update Funktionalität (Device Service Stream) auf dem embedded Device
- Design eines eigenen Device Services auf dem embedded Device für die FW Update Funktionalität
- Design eines Testkonzeptes für den FW Update für Windows 8.1 (NDIS 6.30 Filter Treiber, eigener Windows Applikation)
- Prototyp Entwicklung des Windows UMDF Treibers
- Erstellung der Design Unterlagen
- Systemdebugging des Plattform Protokoll Stacks, Device Driver und Ressourcen Handling auf dem embedded Device mit Lauterbach Debugger Implementierung aller C#.NET Komponenten, C++/ATL basierten DCOM Komponenten und der Windows Kernel Mode Treiber sowie des Windows UMDF Treibers mit dem Visual Studio 2012 von Microsoft.
2007 - 2012: Softwareentwicklung
Kunde: Ericsson Nürnberg
Aufgaben:
Embedded Treiberentwicklung( USB Stack ) auf ARM Core und kundenspezifischer Hardware:
- Einarbeitung in kundenspezifischen USB Stack
- Entwicklung einer Socket basierten Interprozess Kommunikation mit Kontrollfluß Steuerung
- Design und Implementierung einer Shared Memory Komponente für den Datenaustausch über Prozessorgrenzen hinweg
- Integration des Shared Memory Moduls in die Socket basierte Interprozess Kommunikation
- Entwicklung Testsoftware( Loopback ) auf dem Target für den Test des USB Stacks.
- Objekt orientiertes Design eines embedded USB Ethernet Klassentreibers(Klassenmodell mit abstrakten Interfaces)
- Implementierung des USB Treibers mit Verwendung Shared Memory Moduls
- Kapselung der Interprozess Kommunikation des USB Treibers in einem Pipe Mechanismus für die Verwendung unterschiedlicher Interprozess Kommunikationsmechanismen
- Erweiterung des embedded USB Ethernet Klassentreibers zu einem allgemeinen embedded Ethernet Framework mit Queueing Mechanismen zur Vermeidung von Datenverlusten bei hoher Systemlast sowie eigenem Ressourcenmanagement (lokale dynamische Buffer Heaps )
- Design und Erweiterung der Interprozesskommunikation mit einem Powersave Mechanismus für die angebundenen Prozesse
- Optimierung von Multiprozessor Spinlock Algorithmen
- Entwicklung von Algorithmen für übergreifendes Ressourcenmanagement von Protokollstack Instanzen mit Simulation auf einem Windows PC in .NET(C#)
- Design und Implementierung von PC Software für den Test des USB Stacks auf dem Target:
- Implementierung eines Windows NDIS Protocol Treibers( Kernel Mode Treiber ) für das direkte Senden und Empfangen von Ethernet Frames unter Umgehung des TCP/IP Stacks
- Implementierung einer low Level multithreaded COM/DCOM Windows Usermode Klassenbibliothek für das Senden und Empfangen von Ethernet Frames von und zum Target in ATL
- Implementierung einer graphischen Oberfläche in C#.Net und Anbindung an die ATL basierte Klassenbibliothek durch .NET Interoperatbility.
- Performance Messung der PC/Target USB Verbindung
- Automatische Berechnung des Durchsatzes und der Datenraten
- Erweiterung des NDIS Kernel Mode Treibers auf Windows 64 Bit
- Portierung des NDIS Kernel Mode Treibers auf NDIS 6
- Erstellung eines Mobile Broadband Konzeptes inklusive Prototyp für produktspezifische Windows Kernel Mode DLLs für das dynamische Laden von Produkt spezifischen Mobile Broadband Windows Kernel Mode Modulen unter NDIS 6.20
- Integration der LUA Virtual Machine in die Windows Applikation
- Erweiterung des LUA Interpreters mit eigenen Funktionen, die über entsprechende Sprachkonstrukte zur Laufzeit aus dem LUA Script aufgerufen werden können. Diese Funktionen kommunizieren mit dem NDIS Kernel Mode Treiber
- Erweiterung des NDIS Kernel Mode Treibers für die Filterung von IP Paketen
- Das Laufzeitsystem der Windows Applikation ruft für jedes gefiltertes IP Paket ein Anwender LUA Script auf. Dadurch können spezifische IP Filter in LUA Scripts verfasst werden, die vom System zur Laufzeit ausgeführt werden und über die Interpreter Erweiterung mit dem NDIS Kernel Mode Treiber kommunizieren
- Vorfelduntersuchung für ein Framework zum Testen von Geraetetreibern auf dem embedded System:
- Vorschlag einer eigenen Programmiersprache für das Implementieren von Testcases
- Compiler für die Programmiersprache, LL1 Grammatik(top down parsing) mit Erzeugung eines Zwischencodes( I-Code)
- Interpreter für die Ausführung des Zwischencodes
- Loader für das Laden von I-Code Files sowie für die Erzeugung der Interpreter Laufzeitumgebung
- Aufrufen von Target spezifischen C-Funktion durch den Interpreter mit effizienter Datenkonvertierung vom Interpreter Laufzeitsystem zum native embedded Laufzeitsystem und umgekehrt
- Testmanager für embedded System
- PC Applikation für die Kommunikation mit dem embedded Testsystem:
- Graphische Oberflaeche in .NET(C#)
- DCOM basierte Middleware(Kommunikationsprotokolle)
- NDIS Kernelmode Treiber ( s.o.) für low Level Packet Handling von und zum Target
- Compilierung von erstellten Testfiles und Übertragung zum Target
- Performance Optimierung der C2C(Chip-To-Chip) Kopplung des Multiprozessor Targets(ARM11)
- Entwicklung eines LTE/UMTS Handover Konzeptes
- Design des LTE/UMTS Konzeptes zum Umschalten zwischen UMTS USB Stack und LTE USB Stack auf dem Target ohne Datenverlust
- Design eines proprietären Protokolls zwischen USB Stack auf dem Target und dem Windows Treiber Stack zum Umschalten zwischen UMTS und LTE ohne Datenverlust(Patentanmeldung)
- Design eines Windows WDF Treibers(Kernel Mode Treiber) als integraler Bestandteil des kundenspezifischen Windows USB Treiberstacks für Packet Tracking und Performance Analyse, sowie die Überprüfung auf Datenverluste während des Umschaltens
Target Software:
Entwicklung in C unter Windows mit der Entwicklungsumgebung Eclipse für Zielsystem ARM9/ARM11 mit kundenspezifischer USB Hardware Test mit Lauterbach Debugger Versionsverwaltung mit ClearCase
PC Software:
Multithreaded Applikation mit GUI in C++, C#.NET unter Visual Studio 2008 von Microsoft sowie Windows 2000, Windows XP, Windows Vista und Windows 7
Windows Kernel Mode Treiber:
Entwicklung in C unter Verwendung des Windows DDK und des WDF/KMDF Treiber Frameworks von Microsoft
Softwareentwicklung
Embedded Softwareentwicklung für CORTEX M4 basiertem Mikrocontroller Board mit Realtime Kernel
- Nachbilden des Bustimings des MIPI Interface Standarts durch GPIO
- Implementierung eines hardware nahen UART Treibers(Interrupt gesteuert) für die Kommunikation mit einem Windows PC
- Implementierung eine UART Prozesses(Kommunikation mit dem UART Treiber) sowie eines Datenübertragungsprotokolles
- Implementierung eines GPIO Prozesses(Kommunikation mit dem UART Prozess)
- Implemetierung der Kommunikation der Prozesse untereinander basierend auf dem Mailbox Mechanismus der Realtime Kernels
- Implementierung des Bustimings(Daten- und Clockleitung) durch entsprechende Algorithmen innerhalb eines Software Interrupthandlers (dadurch werden die Algorithmen unter Interruptsperre ausgeführt für exaktes Timing).
- Implementierung einer Windows Win32 COM Port DLL für die Kommunikation einer LabView Anwendung mit dem Mikrocontroller Board über ein serielles USB COM Port
- Messung der Signale und des Timings mit dem Oszilloskop
Targetsoftware:
Implementierung in C unter Verwendung der Keil Entwicklungsumgebung.
Windows Software:
Implementierung der Windows Win32 DLL in C unter Visual Studio 2008 von Microsoft.
Hardware:
STM32F4 High Performance Discovery Board
2009 - 2011: Design und Implementierung eines embedded Device Treiber Frameworks
Kunde: ConCurrent Software
Aufgaben:
Design und Implementierung eines embedded Device Treiber Frameworks mit folgenden Merkmalen:
- Laufzeitumgebung für Device Treiber in embedded Systemen
- Interrupthandling Konzept
- DMA Unterstützung
- Generisches I/O Request Handling
- Unterstützung für synchrone und asynchrone I/O
- Abstraction Layer für die Portierung auf unterschiedliche embedded Systeme
- Application Subsystem für einheitliche Kommunikation der Applikationen mit den Device Treibern(threadsafe)
Windows spezifische Implementierung der Abstraction Layer für Win32:
- Das embedded Treiber Framework ist unter Windows lauffähig.
- Framework für Hardwaresimulation auf Registerebene
- Laufzeitüberwachung der Registerzugriffe des Treibers(Konsistenzprüfung)
- Graphische Oberfläche für die Erstellung von Testcases
- Vorrausentwicklung und Test von embedded Device Treibern unter Windows mit Hardware Simulation möglich(mittels Microsoft Developer Studio)
- Debuggen von erstellten Treibern unter Windows mit Microsoft Developer Studio Debugger
- Source Code Kompatibilität der unter Windows erstellten Treiber mit dem Zielsystem
Implementierung:
- Implementierung des Frameworks in C
- Implementierung der Windows basierten Komponenten in C++ und DCOM ATL
- Implementierung des GUI in C#
- Anbindung des DCOM basierten Laufzeitmodells an das C# basierte GUI mittel s .NET Interoperability
- Patentanmeldung des Framework Architektur
2007 - 2008: Weiterentwicklung eines Windows Kernel Mode Registry Treibers
Kunde: NXP Nürnberg
Aufgaben:
- Weiterentwicklung eines Windows Kernel Mode Registry Treibers für Mehrprozess Betrieb
- Entwicklung eines .NET Assemblies für die Verwendung des Registry Treibers für Mehrprozess Betrieb.
2007 - 2008: Softwareentwicklung
Kunde: MCCI USA
Aufgaben:
- Erstellung einer Designspezifikation und Software Architektur eines USB ENCM Klassentreibers für einen kundenspezifischen USB Embedded Host Stacks
- Implementierung eines Windows Tools für die Analyse und Auswertung von USB ENCM Bus Trace Files
2006 - 2006: Entwicklung von Simulationssoftware
Kunde: Noell Crane Systems Würzburg
Aufgaben:
Entwicklung von Simulationssoftware für die Simulation einer Fertigungsstraße für Hafenkräne unter Windows in .NET. Ziel war die Simulation von Hafenkran Bauteilen mit vorgegebenen Ressourcen.
- Requirement Engineering
- Angebotserstellung
- Systemdesign der Simulation
- Zwei Prozess Modell, Client Server Architektur
- Komponenten Architektur und Erstellung des Objektmodells
- Implementierung eines Ressourcen Managements für Arbeitkräfte in C#
- Implementierung eines diskreten Event Systems für Simulationsevents in C#
- Erstellung eines Dateiformats für die Parametrierung des Simulation
- Implementierung einer Graphische Oberfläche für die Bedienung der Simulation in C#
- Kommunikation der beiden Prozesse mit abstrakten .NET Interfaces und .NET Remoting
- Erstellung eines Anwenderhandbuches
- Softwareerstellung in C# und Microsoft Developer Studio .NET 2003
Kenntnisse:
C#, Microsoft Developer Studio .NET 2003
2004 - 2006: Embedded Treiber Entwicklung (USB Stack)
Kunde: Phillips Nürnberg
Aufgaben:
Embedded Treiber Entwicklung (USB Stack) auf ARM Core und kundenspezifischer (Handy)Hardware.
- Einarbeitung in USB 2.0
- Einführung von Komponenten orientierter Architektur auf UML Basis mit Design Pattern
- Requirement Analyse
- Architektur mit UML unter Visio
- Erstellen von Spezifikationen und Design Unterlagen
- Implementierung
- Test
Architektur/Implementierung:
- Firmware Update Konzept (Target und PC), 2 stufiges Laden; Laden eines USB Bootloaders mit Hilfe eines ROM Loaders auf dem Target und anschließendes Laden des Images über USB mittels USB Bootloader.
- Multithreaded Applikation auf dem Target mit kundenspezifischem Realtime Kernel
- DFU USB Class Treiber für Firmware Update auf dem Target
- Flash Programmier Software für das Abspeichern des Images auf dem Target
- Multithreaded PC Software für Firmware Update
- Graphische Oberfläche mit MFC 7.0
- COM/DCOM Objektmodell für PC USB Loader
- PC USB Treiber Enumeration für Target Detection
- PC Kommunikationssoftware zum seriellen Rom Loader und USB Loader
- Multithreaded Trace System für das Tracen der Interprozess Kommunikation der System Software über USB an ein PC System(USB Trace Klassen Treiber)
- Spezieller USB Klassen Treiber auf dem Target für die Durchführung von Hardware Tests.
- Multithreaded USB Klassentreiber
- Protokoll für die Kommunikation zum PC( PC Applikation für die Durchführung der Hardware Tests über USB )
- Anbindung des USB Klassentreibers an die Target Applikation
- PC Software für die Enumeration der USB Treiber bei Target Detection( als Beistellung )
- Multithreaded PC Test Software für den Test der USB Klassen Treiber
- Nachbildung des Target Protokolls der USB Klassen Treiber
- Enumeration der USB Klassen Treiber für Target Detection
- Kommunikation zum Target über Win32 COMM API
- Graphische Oberfläche mit MFC 7.0
- Windows Kernel Mode Registry Treiber( Manipulation von Registry Einträgen trotz eingeschränkter Access Rights )
- Parametrierung von PC USB Treibern über spezielle Registry Einträge
- Sichere Wiederherstellung der Registry Einträge bei Applicationcrash
- Windows Kernel Mode Treiber für den Zugriff auf die Registry in C++
- Win32 Wrapper DLL für die Kommunikation mit dem Kernel Mode Treiber
- Win32 Library für die Einbindung in Windows Applikationen mit Top Level Interface für die Treiber Kommunikation
- Setup Software für die Installation des Treiber Packages auf dem Zielsystem
- Portierung eines seriellen multithreaded Win32 User Mode Treibers von Windows ME nach Windows 2000
- Debug System Target und PC
- Komponenten orientiertes Design eines Debug Managers auf dem Target für das Senden von Debug Nachrichten an eine PC Applikation
- Interface basierter Device Layer für die Low Level Kommunikation über UART und USB
- Design und Implementierung der PC Software( 3 Prozess Modell )
- COM/DCOM Objektmodell des Protokoll Stacks auf dem PC für die Low Level Kommunikation zum Target inklusive USB Treiber Enumeration in C++ mit ATL 7.0 als eigener Prozess
- Graphische Oberfläche für die Kontrolle( Filterung der Debug Ausgaben ) von aktiven/inaktiven Debug Clients auf dem Target in C# unter .NET als eigner Prozess
- Multifenster Applikation( MDI Application ) für die clientbezogene Ausgabe der Debug Nachrichten als interfacebasiertes .NET Remoting Objekt ( eigener Prozess )
- Anbindung des COM/DCOM Protokoll Stacks and die graphische .NET Oberfläche mittels .NET/COM Interoperability
- Anbindung der .NET interfacebasierten MDI Applikation an die .NET graphische Oberfläche mittels .NET Remoting
- Einarbeitung in WLAN
- System Integration und Entwicklung in WLAN
- Durchführen der SW-Integrationsprozesse
- Durchführung von Tests am Gesamtgerät
- Lokalisieren fehlerhafter Komponenten und Beheben einzelner Fehler
- Zusammenarbeit mit der Software-Entwicklung und Lösen von auftretenden Problemen im Software-Integrations-Prozess
- Weiterentwicklung des Hardware Abstraction Layers für die Kommunikation des Targets mit dem WLAN Board über SPI Interface
- Flashloader Step 2 ( USB DFU )
- PC System
- Architektur eines multithreaded Komponentenmodel in C++
- Erstellung von Designunterlagen
- Komponentenmodell:
- Device Manager für das detektieren und die Enumeration von USB Devices
- Device Objekt für die Repräsentation von USB Devices
- Command Dispatcher für die Handhabung von Kommandos, die von der Applikation an die Devices gesendet werden
- Win32 DLL als kommandobasierte Schnittstelle zur Flashapplikation
- Target System
- Architektur eines komponenten orientierten Models in C
- Architektur des Tasking Models
- Erstellung von Designunterlagen
- Implementierung eines Kommando Preprocesors für die Vorverarbeitung von Loader Kommandos
- Implementierung der Flash Applikation( Ausführen der Loader Kommandos )
- Implementierung einer Treiberumgebung bestehend aus folgenden Komponenten:
- Win32 kompatibles Interface für die Kommunikation mit Device Treibern
- I/O Manager für die Einbettung von Device Treibern.
- Integration und Einbettung von NAND und NOR Flash Treibern.
- Erweiterung von NOR Flash Treibern für Sektor übergreifendes Schreiben
- Performance Messung der PC Applikation des Flashloaders
- Performance Messung der Target Software mit Lauterbach
- Systemdesign eines generischen Testsystems über USB
- Konzepterstellung für
- Script Sprache für die Formulierung von Testfällen
- Script Sprachen Compiler für die Übersetzung in Token basierten Zwischencode
- Interpreter für die Ausführung des Zwischencodes
- Executable File Format für die vom Interpreter auszuführenden Testfälle
- Testmanager für die Kommunikation mit dem Host PC für das Empfangen von Testscripten und das Senden von Statusinformation
- Loader für die Erstellung der Laufzeitumgebung für den Interpreter
- Komponentendesign für Interpreter, Compiler, Loader und Testmanager
- Design eines abstrakten Interfaces für Test Clients( ein Test Client wird dynamisch zur Laufzeit zum Testsystem gelinkt, dadurch können beliebige Test Clients erstellt werden und jede Software Komponente auf dem Target
an das Testsystem angebunden werden, im ersten Schritt wurde der USB Stack selbst auf dem Target als Test Client angebunden ). - Interpreter, Compiler und Testmanager sind ebenfalls auf dem PC lauffähig( Source Code compatibel )
- Implementierung von multithreaded Kommunikationssoftware auf dem PC über USB für den Datenaustausch mit dem Target
- Implementierung eines Wrappers für den Target USB Stack und den Flash Treibern. Dadurch kann die gesamte Target Applikation zusammen mit der PC Applikation auf dem Host PC unter Windows getestet werden.
- Test und Fehlersuche in zugekauftem Windows WDM Kernel Mode USB Treiber (Treiber führt bei hoher Kommunikationslast einen USB Endpoint Reset des Targets durch, was zu Datenverlust auf dem PC System führt )
- Installation eines Freeware basierten WDM USB Filter Treibers.
- Reverse Engineering des WDM Filter Treibers
- Implementierung von zusätzlicher Funktionalität im WDM Filter Treiber für die Eingrenzung des Fehlers
- Implementierung eines Workarounds durch Herausfilterung des USB Reset Kommandos im WDM Treiber Stack( Endpoint Reset des Targets wird vermieden, Datenverlust tritt nicht mehr auf )
Target Software:
Entwicklung in C unter UNIX für Zielsystem ARM9 mit kundenspezifischer USB Hardware und WLAN Board mit kundenspezifischem Realtime Kernel. Test mit Lauterbach Debugger Versionsverwaltung mit ClearCase
Kenntnisse:
Multithreaded Applikation mit GUI in C++, MFC 7.0 und COM unter Visual Studio 7 von Microsoft, Windows Kernel Mode Treiber: Entwicklung in C/C++ unter Developer Studio 6 mit speziellem AddIn Wizard für Kernel Mode Treiber Entwicklung und Windows DDK
Eingesetzte Produkte:
Multithreaded Applikation mit GUI in C++, MFC 7.0 unter Visual Studio 7 von Microsoft
2003 - 2004: Entwicklung eines kundenspezifischen Heap Usage Tools
Kunde: Siemens Düsseldorf
Aufgaben:
Entwicklung eines kundenspezifischen Heap Usage Tools für die statistische Analyse und Überprüfung des Speicherverbrauchs der Systemsoftware einer neuen Handy Generation auf Basis eines vom Logic Analyzer erzeugten Trace Files.
- Requirementanalyse
- Systemdesign(UML) und Spezifikation
- Implementierung und Test
- Dokumentation
Systemdesign:
- Client/Server Architektur(in getrennten Windows Prozessen) unter Windows 2000
- Server:
- COM/DCOM Objektmodell in UML unter Visio, Implementierung in C++(ATL)
- Eigne Regelsprache für die regelbasierte Formulierung von Analysearten
- Regelinterpreter für die Ausführung der Regeln in C++
- Stream Komponente für die formatunabhängige interne Darstellung der Trace Daten
- Filter Komponente für die Filterung der Trace Daten
- Logik Komponenten für die statistische Analyse als integraler Bestandteil des Interpreters
- Client:
- .NET basierter Client(GUI) mit Kopplung zum Server über DCOM Interfaces in C# und .NET/COM Interoperability.
Sonstiges:
- Einarbeitung in Nucleus Plus
- Einarbeitung in den ARM9 Core
- Einarbeitung in die kundenspezifische Softwarearchitektur und Device Treiber Modell
2001 - 2003: Softwareentwicklung / Teilprojektleitung
Kunde: Siemens Nürnberg/Fürth
Aufgaben:
- Entwicklung eines Simulationssystems für eine Flughafen Gepäckförderanalage unter COM/DCOM und .NET. Diese umfasst folgende Komponenten:
- Design eines Objektmodells für die Transport Elemente der Transportstrecke( ca.15000 Simulationsobjekte ) mit UML unter Visio, Implementierung mit C++, COM ATL 7.0
- Entwicklung eines Eventsystems für den Behältertransport mit COM ATL 7.0
- Entwicklung verschiedener Scheduling Algorithmen für das Eventsystem mit COM ATL 7.0
- Entwicklung von Kommunikationssoftware für den Anschluß der Simulation an die reale Steuerungssoftware der Gepäckförderanalage mit COM ATL 7.0
- Entwicklung eines Eventlog Systems für das Behältertracking mit C#.NET, .NET Remoting und .NET-COM Interoperability
- Konzeptentwicklung für die Parallelisierung des Objektmodells der Simulation auf bis zu 4 Windows Workstations unter Verwendung von SCI Hochgeschwindigkeitsnetzwerkkarten unter C++.NET(Prototyp)
- Systemanalyse des Objektmodells der Simulation hinsichtlich der Parallelisierbarkeit auf mehrere Windows Workstations
- Systemanalyse des Treibers der SCI Netzwerkkarten hinsichtlich der Synchronisation der Simulationszeit über alle beteiligten Workstations
- Implementierung eines Frameworks als eigene Laufzeitumgebung der Simulationsobjekte in C# und C++.NET mit der Möglichkeit .NET Komponenten für die Simulation dynamisch nachzuladen sowie Proxy/Stub Komponenten für die Verteilung der Simulationsobjekte auf mehrere Workstations
- Teilprojektleitung für die Simulation mit Terminplanung und Arbeitspaketplanung für 4 Mitarbeiter
- Entwicklung eines Datenbank Event Managers für die Zustellung von Datenbank Events an registrierte Komponenten mit VB.NET, COM ATL 7.0 und COM-.NET Interoperability
1999 - 2001: Einarbeitung in Windows CE 2.11/2.12
Kunde: 3SOFT GmbH Erlangen
Aufgaben:
- Einarbeitung in Windows CE 2.11/2.12
- Portierung und Anpassung von Windows CE 2.11 auf ein PC kompatibles PC104 Board mit x486 CPU, sowie die Projektleitung
- Entwicklung eines Keyboard Detektors für das Stecken und Ziehen einer Tastatur für die PC104 Plattform
- Entwicklung eines Windows CE Watchdog Treibers für die PC104 Plattform
- Entwicklung eines Micro Devicetreiber Modelles für das Einbinden eines HDLC Treibers( und anderer Treibertypen ) in den Windows CE Usermode
- Anpassen eines Windows CE Tastatur Treibers für eine kundenspezifische Hardware Plattform
- Unterstützung der Hardwareentwicklung bei der Interruptlogik von Zusatzhardware unter Berücksichtigung der Interruptverarbeitung unter Windows CE
- Untersuchung der Realtimefähigkeit von Windows CE 2.12 und Windows NT 4.0 unter Verwendung von Realtime Extensions ( VentureCom und RadiSys ) in Form einer Kunden Studie
- Systemanalyse der Kundensoftware(Steuerungssoftware und Visualisierung) im Hinblick auf die Portierbarkeit nach Windows CE sowie im Hinblick auf Parallelisierung und Echtzeitfähigkeit der Komponenten auf Windows Multiprozessor System mit Echtzeiterweiterung
- Portierung von Applikationsteilen sowie eines CAN Bus Treibers von VxWorks nach VentureCom RTX(Windows Realtime Extension) als Teil der Studie und Machbarkeitsnachweis
- Entwicklung eines Windows NT 4.0 Treibers für das persistente Abspeichern von Kalibrierdaten auf einen Touch Controller von ELO Touch Systems über die V24 Schnittstelle
- Entwicklung eines Windows CE 2.12 SDK für ein kundenspezifisches Operator Panel
- Anpassung und Integration eines Ethernet Treiber( AMD79C970 ) für einen Windows CE Bootloader( Windows CE 3.0 )
- Implementierung eines Codegenerators für die Erzeugung von C# Klassen zur Laufzeit. Die Implementierung erfolgte unter .NET in C#.
- Implementierung von Software in C# für die Analyse des Laufzeitverhaltens des Codegenerators sowie die Ladezeit der erzeugten C# Klassen.
- Implementierung GUI basierter Testsoftware für den Codegenerator in C#
1998 - 1999: Einarbeitung in den Digitalen Signalprozessor 21065L
Kunde: Siemens AG Fürth
Aufgaben:
- Einarbeitung in den Digitalen Signalprozessor 21065L von Analog Devices für die Entwicklung von Software für die Echtzeit Leistungsmessung in Drehstrom Netzen, sowie das Schalten von Leistungsschaltern im Stromnulldurchgang
- Entwicklung eines Hardware Abstraction Layers als für den Signalprozessor
- Entwicklung eines Micro Kernels für den DSP mit einfachem Messagepassing zum Verteilen der DSP Anwendung auf Software Interrupt Ebenen
- Erstellung einer Schnittstellenspezifikation für die Kopplung des DSP Systems mit einem C165 System über Dual Port Ram
1998 - 1999: Entwicklung von Kommunikationssoftware
Kunde: Siemens AG Fürth
Aufgaben:
- Entwicklung von Kommunikationssoftware für die Bundesbahn AG für den Anschluß von GSM Funkmodems über die V24 Schnittstelle unter Windows NT 4.0, MFC 5.0, unter Verwendung der Microsoft TAPI Programmierschnittstelle zum Verbindungsaufbau und der WIN32 COMM API für den eigentlichen Datentransfer über die V24 Schnittstelle mittels eines Byte Stream Protokolles
- Entwicklung von Kommunikationssoftware für die Ansteuerung von Außenanzeigen in Zügen der Bundesbahn AG über die V24 Schnittstelle unter Windows NT 4.0, MFC 5.0 und der WIN32 COMM API für die Datenübertragung
- Entwicklung von Software für die Ausgabe und das Einlesen von I/O Signalen einer ISA I/O Karte unter Windows NT 4.0, MFC 5.0 mittels einer Treiberinterface Dll für diese I/O Karte
1994 - 1998: Entwicklung eines Videokodierkonzeptes für die Videokodierung von Großbriefen
Kunde: Siemens AG Fürth
Aufgaben:
- Ab 1994 Softwareentwicklung für Briefsortiermaschinen für die deutsche Bundespost AG ( Großprojekt mit Teilprojektleitung )
- Entwicklung eines Videokodierkonzeptes für die Videokodierung von Großbriefen
- Patenterteilung für das Videokodierkonzept
- Pflichtenhefterstellung
- Konzeptionierung eines Tasksystems für den Videokodierplatzrechner( Standart PC mit Intel Pentium )
- Mitarbeit bei der Entwicklung des Betriebssystems des Steuerungsrechners( Standard PC Intel Pentium )
- Mitarbeit beim Systemdesign des Bildaufnahme- und Verarbeitungssystems des Steuerungsrechners
- Entwicklung eines Ethernet Netzwerktreibers als Kopplung zwischen mehreren Videokodierplätzen und dem Bildrechner( Steuerungsrechner der Briefsortieranlage mit Intel Pentium )
- Entwicklung eines FDDI Netzwerktreibers als Kopplung zwischen dem Bildrechner und dem OCR Rechner( SUN Workstation ) für die automatische Erkennung von Postleitzahlen mittels neuronalen Netzen
- Entwicklung einer Protokollschicht für die Datenübertragung über beide Netzwerke
- Einarbeitung in die Architektur von SIMD Multiprozessorsystemen
- Portierung von OCR- und Bildverarbeitungsalgorithmen auf die SIMD Parallelhardware( 256 Prozessoren ) in der Programmiersprache ?CNAPS C?, jedoch überwiegend in Assembler(Bildverarbeitung in Echtzeit)
- Entwicklung eines Paging Systems für eine Speichererweiterungsbaugruppe für die SIMD Parallelhardware in Assembler
- Entwicklung von Kommunikationssoftware zwischen der SIMD Parallelhardware und dem DSP basierten Kamerasystem für die Bildaufnahme
- Einarbeitung in den MMX Assembler der Intel Pentium Prozessoren als mögliches Nachfolgesystem für die CNAPS Parallelhardware
- Einarbeitung in Windows NT 4.0 als Nachfolgesystem
- Einarbeitung in MFC 4.2
- Einarbeitung in C++
- Entwicklung eines Ethernet Bootloaders unter Windows NT 4.0 für den Betriebssystem Download über Ethernet mittels RPL Protokoll
- Portierung eines Tracesystems von Unix auf Windows NT 4.0 für multithreaded und multiprocessing Anwendungen unter MFC 4.2, Windows NT Sockets und Memory Mapped Files in C++
- Entwicklung eines Windows NT Treibers als Rahmenprogramm zum Einbetten von Bildverarbeitungsalgorithmen in den Windows NT Kernel Mode zur Performancesteigerung unter Verwendung des Windows NT DDK
- Portierung des bereits erwähnten Ethernet Protokolles in den NT Kernel als NDIS Network Packet Treibers
1987 - 1994: Softwareentwicklung für eine neue Generation von Robotersteuerungen
Kunde: Siemens AG Erlangen
Aufgaben:
- Softwareentwicklung für eine neue Generation von Robotersteuerungen, basierend auf folgenden Hardwareplattformen: Zwei über Dual Port Ram gekoppelte Prozessorbaugruppen, eine Masterbaugruppe und einem von Siemens selbst entwickelten Real Time Kernel, sowie eine mit einem von Siemens selbst entwickelten Real Time Kernel.
- Design eines Tasksystems für die Slave Baugruppe
- Entwicklung eines UART Treibers für die Datenübertragung über die V24 Schnittstelle für die Slave Baugruppe
- Entwicklung einer softwaretechnischen Kopplung zwischen den beiden Baugruppen über Dual Port Ram
- Entwicklung einer Kommandoschnittstelle zum Datentransfer zwischen den beiden Baugruppen
- Erweiterung des Betriebssystems der Masterbaugruppe mit einem Adressierungsmechanismus zum Ansprechen von Komponenten auf der Slavebaugruppe
- Mitarbeit an der Weiterentwicklung der Roboter Programmiersprache
- Systembetreuung über 1,5 Jahre; diese umfasste die Unterstützung des Teams bei der Fehlerbehebung im gesamten Softwaresystem (detailierte Einarbeitung in das Laufzeitsystem besetehend aus Compiler, Interpreter, Linker und Lader )
- Entwicklung eines Steuerungseditors auf der Masterbaugruppe
- Entwicklung von Interpreterfunktionen auf der Masterbaugruppe