Systementwicklung, Softwaresicherheit (Entwicklung, Beratung)
Aktualisiert am 01.12.2023
Profil
Referenzen (3)
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 01.07.2024
Verfügbar zu: 100%
davon vor Ort: 100%
Embedded und hardwarenahe Entwicklung
Systementwicklung
Deutsch
Muttersprache
Englisch
fließend

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz
möglich

Projekte

Projekte

3/2023 - 6/2023

Deutsche Bahn (Schienenverkehr)
Netzwerkzugangskontrolle und Firewall

  • Anforderungsanalyse und Entwicklung eines Systems zur Netzwerkzugangskontrolle auf einem Embedded-System.
  • Implementierung in C auf Basis des existierenden hostapd (Open-Source) mit dem Extensible Authentication Protocol (EAP).
  • Automatisches Erzeugen von Firewallregeln unter Linux (Netlter) durch Shell- und Netlter-Skripte. Übersetzen von Cisco-ACLs in Netlterregeln.
  • Komplexes Netzerk-Setup mit Virtualisierung (VMs unter QEMU).
  • Konguration des Linux-Kernels als Firewall und Bridge.
  • Makefile zur Paketierung und Qualitätskontrolle der Software.
  • Zeitkritisches Projekt unter hohem Druck zur höchsten Zufriedenheit des Kunden abgeschlossen.
  • Protokolle und Standards: Extensible Authentication Protocol (EAP), Cisco-ACLs.
  • Werkzeuge: nft (Netlter, nftables), Shell, Linux, Git, Github, Make, Busybox, Buildroot, Citrix, Cisco ISE, hostapd, QEMU, Gcc, ASAN.
  • Programmiersprachen: C, Shellkripte, Netlter-Skripte.


3/2022 - 2/2023

Automobilzulieferer (Automotive)
Firmwareentwicklung (Elektroantriebe)

  • Entwicklung, Test und Dokumentation von Lowlevel-Firmware auf einem Dual-Core-Cortex-M7 Controller in C und C++ nach Autosar und MISRA.
  • Entwicklung von Initialisierungsroutinen für die Microcontroller-Hardware in C und Assembler.
  • Implementierung und Test Secure-Boot (u-boot, u-boot-Skripte).
  • Design, Implementierung, Test, Wartung: Software für Batteriemanagement, Autosar-Treiber für Kommunikationsschnittstellen (I2C, QSPI) mit Echtzeitanforderungen, Timer.
  • Hardware: Board mit STM32H7 Microcontroller, Ethernet, CAN, USB, RS-232, Ethernet.
  • Werkzeuge: Git, Gcc, G++, Jenkins, Make, JTAG-Debugger, Embedded Linux, Buildroot.
  • Programmiersprachen: C, C++, Assembler (Arm 7), Skripte (Shell, Python 3).

6/2022 - 10/202

Projektstudie
Cloudcomputing (Automatisierung)

  • Automatisierung von Cloudverwaltungsaufgaben.
  • Minimierung von Maschinen- und Reservierungskosten.
  • Automatisierung von Webabfragen über REST-Apis mit Firefox, Python 3 und wget.
  • Werkzeuge: lineare Optimierung (lp-solve), Git, Make, Firefox, Json, Csv.
  • Programmiersprachen: Shellkripte, Python 3, C++.

9/2019 - 2/2022

Thales Alenia Space (Raumfahrt)
Galileo Satellitennavigation

  • Projekt mit Sicherheitseinstufung Ü2, daher hier nur eine oberflächliche Beschreibung der Aufgaben.
  • Architektur, Entwicklung und Konfiguration von Soft- und Hardware eines Teilprojektes im Galileo-Umfeld.
  • Systemhärtung von Redhat-Systemen nach EU-Sicherheitsanforderungen.
  • Werkzeuge: Ansible, SSH, SFTP, SELinux, DNS, Firewall, LDAP, NFS, Git, IdM, Freeipa, Expect, Bitbucket, Jenkins, Robotframework, Jira.
  • Programmiersprachen: C++, Shellkripte, Python 3.


08/2018 - 03/2019

Hardwarezulieferer (Automotive)
Embedded-Linux-Sicherheitskonzept eines Steuergerätes für Campingwagen

  • Teilprojektleitung: Planung und Umsetzung eines Sicherheitskonzeptes für ein Embedded-Steuergerät mit Embedded-Linux (RTOS). Anleiten eines internen Mitarbeiters in Sicherheitsfragen.
  • Erstellen und Sichten fachlicher Anforderungen für das Sicherheitskonzept. Klären der Anforderungen mit dem Kunden. Konzepterstellung für die Nutzung der Sicherheitsfeatures des i.MX 6.
  • Kommunikation bezüglich Sicherheitsfeatures mit den Zulieferern.
  • Secure-Boot.
  • Programmieren eines speziell abgesicherten Softwareupdatesystems unter Verwendung der Sicherheitsfeatures des i.MX 6 und u-boot.
  • Reviews der Umsetzung sicherheitsrelevanter Features.
  • CAN-Anbindung (Denition und Debugging kundenspezischer CAN-Nachrichten, Debugging des CAN-Treibers, Debugging des Systems mit Hilfe von CAN-Nachrichten).
  • Hardware: i.MX 6 Prozessor (ARM-7-Architektur), Ethernet, RS-232, Beaglebone, USB-Gadget.
  • Werkzeuge: Doors, Yocto, Jenkins, Jira, System-V-Init, Gcc, Git, Subversion (svn), make, u-boot, chroot.
  • Programmiersprachen: C, C++, Python, Shell, bash, zsh, sh, u-boot-Skripte.

seit 08/2017

[Firma auf Anfrage]
Gründer und Mitgeschäftsführer

  • Soft- und Hardwareentwicklungsdienstleistungen.

05/2017 - 07/2018

Sabbatical


03/2013 - 04/2017

IBM
GNU-Toolchainentwicklung (Compiler Gcc, Glibc)

  • Erweiterung im GNU-Compiler (Gcc) in diversen Sprachen (C, C++, Fortran, Go, Ada): Unterstützung transaktionalen Speichers für S/390 und System/z in Gcc und Glibc, Performanceuntersuchung, Unterstützung für neue Cpu-Instruktionen, Portierung der Unterstützung der Sprache Go für S/390 und System/z im Gcc und Glibc.
  • Umsetzung von Compilerfeatures für neue Prozessorinstruktionen.
  • Debuggen unerwarteten Compiler- und Linkerverhaltens in den unterstützten Sprachen mit den einschlägigen ELF-Werkzeugen; Analyse von Linkerskripten, ELF-Binärdateien, Linker-Sections usw.
  • Hardware: z10, z196, zEC12, z13
  • Werkzeuge: Gcc, Gdb, Glibc, Git, Subversion (svn), make, Perftools für S/390 und System/z, DejaGNU, ELF-Tools, Linker, Gold.
  • Programmiersprachen: C, C++, Go, Assembler (S/390, System/z), Fortran, Ada.

10/2012 - 12/2012

Bosch (Automotive)
Machbarkeitsstudie Cachetests

  • Untersuchungen zur Testbarkeit sämtlicher Caches eines Cortex-A9 Mehrkernprozessors von Arm: Level 1 und Level 2 Caches (Instruktionen und Daten), Level 1 und Level 2 Translation Lookaside Buffers (Instruktionen und Daten), Branchprediction, Returnstack-Cache und andere.
  • Entwurf und prototypische Implementierung softwarebasierter Verfahren zum Test der Caches nach den Anforderungen von ASIL-B. Implementation eines March-C-Minus-Tests.
  • Entwicklung auf Basis eines Geräts mit dem Zynq-7000 Mikroprozessor von Xilinx unter Verwendung der Arm-Entwicklungsumgebung mit dem Lauterbach-Debugger.
  • Werkzeuge: rvct (Arm-Compiler), trace32, Lauterbach-Debugger, make, git, Cygwin
  • Programmiersprachen: C, Assembler (Arm 7).

07/2011 - 01/2013

Bosch (Automotive)
Mikrocontrollerprogrammierung für Stereokamera

  • Entwicklung von Firmware (MCAL; Microcontroller-Abstaction-Layer) und Gerätetreibern für den Microcontroller Zynq-7000 mit einem Cortex-A9-Prozessor von Arm in den Sprachen C und Assembler.
  • Inbetriebnahme und Test verschiedener Boards.
  • Architektur, Entwurf, Implementierung, Test und Dokumentation von Programmkomponenten für Plattformlösungen mit dem Zynq-7000 nach MISRA und ASIL-B.
  • Arm-Entwicklungsumgebung mit Lauterbach-Debugger.
  • Treiber für folgende Hardware: Dual-Core-Cortex-A9 einschließlich Scu, Timern, Clocks, Plls und Exceptionbehandlung, Interruptcontroller, Quad-Spi-Controller von Xilinx, Uarts von Cadence, Quad-Spi-Flashes von Spansion (FL128S, FL256S, FL129P) und Numonyx, Caches, Corelink-Dma-Controller (Arm), Mio-Setup, Ddr-Setup (Ram), I2c-Controller von Cadence, TI Tmp431 Temperatursensor.
  • Werkzeuge: rvct (Arm-Compiler), trace32, Lauterbach-Debugger, make, git, Mks, Qac (statische Quellkodeanalyse), Cygwin, Oszilloskop
  • Programmiersprachen: C, Assembler (Arm 7), C++, Perl, Shellskripte.

07/2010 - 07/2011

Thales ATM (Luftfahrt)
Softwareentwicklung für ein Flugleitsystem

  • Softwareentwicklung in einem großen Projekt für ein Flugleitsystem in C++ auf Linuxplattformen für die Deutsche Flugsicherung als Endkunden.
  • Entwurf, Implementierung, Test und Wartung von Programmkomponenten für i386 unter Linux (Redhat, Centos) nach ESARR 6.
  • Protokolle und Bibliotheken: Ldap, OpenLdap, Snmp v2c, Snmp v3, agent++, snmp++.
  • Werkzeuge: g++, gcc, gdb, ddd, make, git, Clearcase, Insure++, Valgrind, Purify, Eclipse, DOORS, CodeCollaborator, OpenLdap.

02/2005 - 08/2009

IBM Deutschland (Telekommunikation)
VoIP Softwareentwicklung (Internettelefonie)

  • In einem typischen Softwaregroßprojekt der Telco-Branche entwickelte ich C++ Komponenten für die "Internet Service Plattform" der Telekom im Bereich VoIP (Internettelefonie) für AIX- und Linux-Zielsysteme.
  • Leitung eines Entwicklerteams.
  • Entwurf, Implementierung, Test und Dokumentation objektorientierter Software in C++ für PowerPC (AIX) und i386 (Linux), unter anderem in den Feldern Session Initiation Protocol (SIP), Session Description Protocol (SDP), Accounting (Radius, Diameter), Gateway-Ansteuerung (Media Gateway Control Protocol, MGCP), Voice over IP (VoIP), Quality of Service für Sprachdaten (RTP, RTSP), Sprachcodecs, Steuerung von Ansageservern und Serverprogrammierung; Implementierung, Wartung und Test eines SNMP-Agenten mit libnetsnmp.
  • Entwurf und Implementierung von Teilen der Software nach gesetzlichen Vorgaben und staatlichen Sicherheitsbestimmungen.
  • Entwurf, Umsetzung und Installation von Softwareprototypen für eine Demoumgebung.
  • Werkzeuge: C++, Unix (Linux; AIX 4.2, 4.3, 5.3), Imake, scons, CVS, GIT, Clearquest, Perl, Shell, Beam, IBM DB5, Postgres, ODBC, Net-SNMP

06/2007, 07/2007, 10/2007, 11/2007

Elektronikhändler und -versand (Auftragsverwaltung)

  • Hilfe beim Debugging bestehender C- und 4GL-Programme, die auf die Informix-Datenbank zugreifen.
  • Neuimplementierung, Test, Dokumentation und Inbetriebnahme eines C-Programms mit eingebettetem 4GL-Kode. Parallelisierung mehrerer Programminstanzen mit Hilfe von Unix-System-Calls.
  • Werkzeuge: C, Unix (HP-UX), Informix-Datenbank und 4GL (SQLite-ähnlicher Datenbankzugriff in C), Shell, SSH

Ende 2004 bis Mitte 2006

Linux Magazin (Fachmagazin)
Fachartikelreihe (Softwaresicherheit)

  • Unter dem Titel "Sicheres Programmieren für Administratoren" verfasse ich seit 2004 in loser Folge eine Artikelserie über typische Fehler und Gefahren, die beim Programmieren in C, C++, Shellskripten und Perl lauern und Stabilität und Sicherheit des Systems bedrohen. Parallel zu den Artikeln entwickle ich die freie Softwarebibliothek Gateguardian, die Code anbietet, um die Probleme zu umschiffen.
  • Teil 1: Gefahren aus der Programmumgebung, beispielsweise Signale oder Umgebungsvariablen (Linux Magazin 02/05, S. 54).
  • Teil 2: Risiken im Umgang mit Dateien und Dateisystemen (Ausgabe 04/05, S. 64).
  • Teil 3: Eingabekontrollfehler (Ausgabe 07/05, S. 62).
  • Teil 4: Eingabekontrollfehler 2 (Ausgabe 10/05, S. 54).
  • Teil 5: Unsichere Programmausgaben (Ausgabe 01/06, S. 64).
  • Teil 6: Sicherheitslücken im Ridentd (Ausgabe 05/06).
  • Gateguardian-Projekt auf Sourceforge (www.sourceforge.net/projects/gateguardian).

10/2004 - 01/2005

Siemens Austria (Automotive)
Qualitätssicherung, Performanceanalyser, Design und Test von embedded Software, Entwicklerbetreuung

  • Im Umfeld des Projekts Deutsche LKW-Maut / Toll Collect war ich an der Entwicklung und Qualitätssicherung der sogenannten "On Board Units" auf Basis eines ARM 7 Prozessors beteiligt.
  • Unterstützung einer Gruppe ungarischer Entwickler bei Test, Design, Implementation und Qualitätssicherung der objektorientierten Software (C++).
  • Entwicklung von Modultests in C++ für Teile der Gerätesoftware in enger Zusammenarbeit mit den Entwicklern.
  • Code-Reviews, statische Analyse, Performanceanalysen.
  • Beheben von Fehlern in der Gerätesoftware in Zusammenarbeit mit internen und externen Entwicklern und Beratern.
  • Verbesserung des Entwicklungsprozesses.
  • Werkzeuge: C++, Unix (Linux), Windows 2000, pSOS+, make, Purify, PC-Lint, Clearcase, Clearquest, ARM 7 Prozessor

07/2002 - 06/2004

Namhafte Firma im Bereich Webhosting
Unix Systementwicklung

  • Ich war für eine große Firma im Bereich Webhosting als Unix-Systementwickler tätig und insbesondere für den Linux Kern und andere verwendete Open Source Software zuständig. An einigen der freien Softwarepakete mußten für interne Zwecke Veränderungen vorgenommen werden, seien es Reparaturen von Programmfehlern, Performance- verbesserungen oder Erweiterungen der Funktionalität.
  • Objektorientierte Entwicklung eines verteilten Datenbanksystems mit der Berkley DB und C++ sowie eines hochperformanten Datencaches für einen Nameserver (Bind)
  • Objektorientiertes Design (OOAD, UML Diagramme) der Programme zur Abrechnung der für Kunden erbrachten Leistungen (Billing)
  • Standardisierung und Beschleunigung des abteilungsinternen Software-Projektmanagements mit den GNU Autotools und selbstentwickelten Projektrümpfen
  • Anpassung des Linux Kerns für hausinterne Zwecke
  • Post Mortem Analyse von Abstürzen des Linux Kerns auf der Serverfarm mittels "Crashdumps". Beheben der Fehler in Zusammenarbeit mit Linux Entwicklern wie Alan Cox und Marcelo Tosatti
  • Erweiterung der Open Source Projekte OpenGFS (verteiltes Dateisystem), OpenDLM (IBM Lock Manager), Linux-HA (Linux High Availability System, heartbeat Dämon), keepalived (anderer heartbeat Dämon), Linux Test Project, Bind
  • Performanceanalyse der Kundenserver
  • Überprüfung der Sicherheit kritischer Komponenten und Serversysteme (Software Audits)
  • Werkzeuge: C++, C, OOAD, UML, Shell, Unix (Linux), Linux Kern, Linux Kernel Coding Conventions, Versionskontrolle CVS, GNU autotools (automake, autoconf, libtool), GNU Coding Standards, OpenGFS (verteiltes Dateisystem), Berkley DB, MySQL, SQLite, Clustering, valgrind (Memory Checker)

1998-2022

fvwm (f? virtual window manager) - Open Source Fenstermanager für X

  • Seit Ende 1998 ehrenamtlich Mitarbeit am Open Source Projekt fvwm, einem insbesondere in der Linux Welt bekannten Fenstermanager für X11. Seit langem bin ich federführend für die Weiterentwicklung des Programmkerns und einiger Module zuständig. Außerdem obliegt mir die meiste Zeit das Projekt- und Releasemanagement sowie die Wartung. Des weiteren arbeite ich als Vertreter des fvwm im WM-SPEC Gremium mit, das sich um eine Standardisierung der Kommunikation zwischen Fenstermanager und Desktopumgebungen wie KDE oder Gnome bemüht. Auf Fehlerberichte reagiert das fvwm Team oft innerhalb weniger Stunden (siehe Mailinglistenarchive auf http://fvwm.org).
  • Werkzeuge: C, lexx/yacc, Unix, X11 (Xlib), make, GNU Autotools (autoconf, automake), valgrind (Memory Checker)

01/2001 - 06/2002

LifeBits AG (Biotech)

  • Software- und Algorithmenentwicklung für ein Meßgerät für medizinische Tests und Genanalyse, Systemadministration Aufgaben : Für die LifeBits AG Tübingen war ich seit kurz nach der Firmengründung als Leiter der IT Abteilung (vier Personen) tätig. Ein Schwerpunkt war die Entwicklung der Algorithmen und der Software für das geplante Produkt. Das Gerät sollte medizinische Tests und Genanalysen auf Grundlage handelsüblicher Compact Discs durchfürhren. In meinem Verantwortungsbereich lag dabei die Entwicklung der Software für das Gerät und der Entwurf der Compact Disc Algorithmen. Eines der entwickelten Verfahren wurde zum Patent angemeldet (EPA, Patent Nr. 02791480.3-2204, "Datenträger für chemische oder biochemische Analysen")
  • Entwicklung von Algorithmen und Software zur Analyse und gezielte Manipulation der Strukturen der Compact Disc in Zusammenarbeit mit den Labors für Biotechnik, Physik und Elektrotechnik
  • Design der firmeninternen C/C++ Standardbibliothek für Unix/Windows Portierung, Dateiformate und Datenauswertung
  • Einführung und Organisation der Softwareentwicklungsumgebung mit Standardwerkzeugen mit Schwerpunkt Portierbarkeit (Versionskontrolle CVS, Übersetzer gcc, g++, Makefiles, automake, autoconf)
  • Management von Teilprojekten im Kontext der wissenschaftlichen Arbeit und der Produktentwicklung
  • Aufbau und Administration der IT Infrastruktur
  • Planung des IT Sicherheitskonzepts
  • Administration der Firmenserver (Versionskontrolle CVS, DHCP Server, FTP Server, Web Server (Apache), Mailserver (Postfix), DNS, NIS, Datensicherung usw.)
  • Administration der Arbeitsplatzrechner (Mac OS9, Linux, Windows)
  • Administration der Telekommunikationsstruktur (Router, FAX Server)
  • Werkzeuge: C, C++, Shell, CD-ROM, Unix (Linux), Windows (3.11, 98, NT, 2000), Mac OS9, Webserver (Apache), LAN (Ethernet), Mailserver (Postfix), CVS, Router, DNS, NIS, SSH

05/1998 - 12/2000

Meßgerätehersteller
Remote Management Card - Firmwareentwicklung für eine PCI Steckkarte zur Fernwartung von Servern in Intel-Architektur

  • Firmwareentwicklung in enger Zusammenarbeit mit den Hardwareingenieuren für eine Remote-Management-Steckkarte mit weinem RTOS (pSOS+) auf einer Windows-NT-basierten Plattform.
  • ISO9000 zertifizierter Entwicklungsprozeß (Design, Implementierung und Test der Firmware).
  • Entwicklung: Modemsteuerung; Treiber für Multiplexing der seriellen Schnittstelle; XML Parser; Parsergenerator für die Kartenschnittstelle (Perl, XML) und der seriellen Schnittstellen
  • Entwicklung Emulation der Kartenhardware zwecks Vereinfachung von Test und Entwicklung auf Unix (Linux)
  • Entwicklung SNMP-Agent
  • Design, Umsetzung und Pflege der Makefiles
  • Entwurf und Implementierung von Testfällen für die große Teile der Firmware (z.T. nach der Methode der mehrfachen Bedingungsüberdeckung bzw. C3 Überdeckung)
  • Softwareinspektionen
  • Design der Debug Schnittstellen
  • Werkzeuge: pSOS+, ARM Prozessor, Windows NT, Unix (HP-UX, Linux), C, Perl, make, UML, XML, Clearcase, PCLint (statisches Analysewerkzeug), Net-SNMP

01/1997 - 04/1998

IBM Deutschland (Softwarehaus, Data Mining)
Entwicklung von Komponenten für Intelligent Miner (Data Mining Software)

  • Komponentenentwicklung für den Intelligent Miner - eine Data Mining Software.
  • Entwicklung eines Datenbank Caches für DB2 in C++ und embedded SQL.
  • Testen der Software anderer Subteams (u.a. mittels Shellskripten).
  • Restrukturieren der Makefiles zwecks Dependency-Tracking (Imake).
  • Werkzeuge: Unix (AIX), C++, DB2, DB2 PE, Embedded SQL, OS/2, make, Imake, Shell, CMVC (IBM Projektmanagement Werkzeug)

01/1997 - 04/1998

IBM Deutschland
Systemadministration, Hardwarekoordinator

  • Systemadministration und Hardwarebeschaffung (RS/6000, AIX) zuständig.
  • Planung des Hardwarebedarfs und Beschaffung.
  • Hard- und Softwareinstallation der Maschinen.
  • Aufbau eines Software-Testraumes und eines Serverraumes.
  • Administration der Abteilungsserver (AIX).
  • Administration der Arbeitsplatzrechner (AIX und OS/2) und Betreuung der Benutzer.
  • Administration einer RS/6000 SP2 (massiver Parallelrechner) für den Entwicklungsbereich.
  • Werkzeuge: Unix (AIX 3.1, 4.1, 4.2, 4.3), RS/6000, RS/6000SP2, SP2 Switch Netzwerk, Shell, NFS, Kerberos, TFTP, BOOTP, smit/smitty (Systemverwaltungstool), NIS

seit 1998

Diverse Open-Source-Projekte

  • Als Vertreter der Open Source Gemeinde finden sich von mir implementierte oder angeregte Änderungen in zahlreichen freien Softwareprojekten:

    Botan Tutorial (kryptographische Bibliothek)
    bubblemon (Systemmonitor)
    dosbox (DOS-PC Emulator)
    fvwm (F Virtual Window Manager)
    gateguardian (Bibliothek für Softwaresicherheit)
    gcc (GNU-Compiler)
    glibc (GNU-C-Bibliothek)
    heartbeat (Hochverfügbarkeitsdämon für Linux)
    keepalived (Dämon ähnlich Heartbeat)
    libffi (Programmbibliothek für Funktionsaufrufe in andere Sprachen)
    libstroke (Programmbibliothek für Mausgesten)
    linux-2.4/3.x Kern (Betriebssystem)
    ltprep (Linux Test Project Reporting Tool)
    lyx (LaTeX GUI)
    nedit (Texteditor)
    odlm (Open Distributed Lock Manager)
    ogfs (Open Global File System, verteiltes Dateisystem)
    ridentd (sicherere Identd-Variante)
    rxvt (X11 Terminalprogramm vom fvwm Autor)
    Secure Programming Cookbook
    tig (GIT-Datenbank-Viewer)
    vice (C64 Emulator für Windows und Unix)
    wm-spec (Standardisierungsgremium für den Unix Desktop)
    xmame (Spielkonsolenemulator)
    xmms (Medienspieler für Windows und Unix)
    xv (Bildbearbeitungsprogramm)
    zsh (äußerst mächtige Unix shell)

01/1996 - 06/1996

Meßgerätehersteller
Entwicklung der Firmware für ein optisches Meßgerät (OTDR)

  • Firmwareentwicklung für eines optisches Meßgerät (Optical Time Domain Refractometer) mit einem RTOS (pSOS+).
  • System Management Task (Hardwareverwaltung)
  • Druckertreiber und -layout
  • Oberflächengestaltung
  • Performanceoptimierung
  • Werkzeuge: RTOS (pSOS+), embedded Systems, Unix (HP-UX), C++, Assembler 80x86

Aus- und Weiterbildung

Aus- und Weiterbildung

Diplom-Mathematiker 1994, Diplomnote: sehr gut
Studium Mathematik und Informatik an der Universität Dortmund
Hochbegabt

Position

Position

Software-Entwicklung, Beratung

Kompetenzen

Kompetenzen

Top-Skills

Embedded und hardwarenahe Entwicklung Systementwicklung

Produkte / Standards / Erfahrungen / Methoden

Kenntnisse:

Erfahrungen im Bereich:

Anwendungs- und Systemprogrammierung
Compilerentwicklung
Embedded und hardwarenahe Entwicklung
Performanceoptimierung
Qualitätssicherung (Design, Testdesign, Test, Inspektionen, Reviews)
Softwaresicherheit (Sicheres Programmieren, Software Audits)
Systemadministration, Netzwerkadministration


Methoden:

Agile Entwicklung
Objektorientierte Analyse, Design, Programmierung (OOA, OOD, OOP)
Unied Modeling Language (UML)
SCRUM
CASE Tools (Computer Aided Softwatware Engineering)


Standards:

ASIL-B
Autosar
GNU Coding Standards
Linux Coding Conventions
MISRA
XML
Zahlreiche RFC


Entwicklungswerkzeuge:

Boost
Clearcase
Coverity
Cppcheck
DejaGNU
Doors
Eclipse
Flawnder
Git, Github, Bitbucket etc.
Google Test
Lauterbach und andere Hardwaredebugger für Embedded-Systems
Lint
Mercurial
PC-Lint
Qac (statische Sourcekodeanalyse)
Robotframework
Splint
STL
Subversion
Jenkins
Jira
Yocto


Spezialkenntnisse:

Analyse von Problemen und eigenständige Lösung derselben
Lowlevelprogrammierung von Armprozessoren
Client/Server-Programmierung
Compilerentwicklung (Gcc für Linux auf System/z und S/390)
Dynamische Kodeanalyse
ELF-Linkerformat
Embedded Systems und hardwarenahe Entwicklung
Projektmanagement mit GNU autotools
Portierung
Sicherheitsfunktionen des ARM i.MX6
Statische Sourcekodeanalyse
Open source
Voice-over-IP, SIP, SDP, MGCP

Betriebssysteme

Erfahrungen mit Betriebssystemen:

Linux: Expertenkenntnisse Entwicklung
Linux-Kernelentwicklung
Linux-Distributionen: Red Hat, Suse, Debian, Yocto
RTOS (Real Time OS): Embedded Linux, pSOS+, Windriver
Unix: Programmierung und Administration (AIX, HPUX, Sinix)
Windows
MS-DOS

Programmiersprachen

Sprachkenntnisse:

Assembler: diverse ARM-Prozessoren, x86, x86_64, 6502, 6510
C: Expertenkenntnisse, Compilerbau
C++: Expertenkenntnisse, Compilerbau
GNU-Make, Imake, Make-Maker etc...: make Guru (alle Varianten)
Lisp: Scheme, emacs Lisp
Perl
Python: Mehrjährige Programmiererfahrung
Skriptsprachen: awk, sed
Shell: Shellskriptexperte
TeX, LaTeX: Grundkenntnisse
Xt, Motif: sehr gute Xlib Kenntnisse
yacc/lex: Grundkenntnisse
4gl: Informix 4GL (Grundkenntnisse)
Go
Lua
GNU autotools (automake, autoconf, libtool): Intensiver Einsatz in ca. 20 Projekten.

Datenbanken

DB2: Programmierung und Administration / Parallele DB
ODBC
MySql
Postgres
SQL: Programmierung (embedded SQL)
Informix: Programmierung mit 4gl
Berkley DB
SQLite
IBM DB5

Datenkommunikation

Schnittstellen und Protokolle:

CAN
Ethernet
I2C
Internet, Intranet: Administration Webserver, xml Programmierung, html, Grundkenntnisse diverser Protokolle ISO/OSI
LAN, LAN Manager: Administration, Programmierung
Message Queuing: Programmierung
Parallele Schnittstelle: Programmierung, auch serielle Schnittstelle (RS232)
Proprietäre Protokolle: Client/Server-Programmierung, Entwicklung verteiltes Dateisystem (OpenGFS)
Router: Administration
RS232, UART
SMTP
SNMP: v2c, v3 (VACM, USM); Implementierung; Net-SNMP; libnetsnmp
Spi, Quad-Spi (Qspi)
TCP/IP: FTP, NFS, TFTP, HTTP, SSH, DHCP, LDAP etc.; Detailkenntnisse diverser Protokolle
Voice-over-IP-Protokolle (SIP, SDP, MGCP, Radius, Diameter, Sprachcodecs, Quality of Service, RTP, RTSP)

Hardware

Kenntnisse:

embedded Systems
PC
ArmV7-Architektur (Cortex-A9 Cpu, Cortex M7 (STM32H7), Cortex-M4 (Freescale i.MX 6))
Caches
Ddr-Ram
Dma
Flash-Speicher
I2c
IBM S/390
IBM System/z
Interruptcontroller
Oszilloskope
Quad-Spi (Qspi)
RS232
Spi
Timer
UART (serielle Schnittstelle)
USB
Zync-7000
8-bit-Prozessoren

Branchen

Branchen

Automotive
Cloudcomputing
Hardwarehersteller
Softwarehersteller
Meÿgerätehersteller
Computerhardware
Telekommunikation (Telco)
Luftfahrt
Raumfahrt
Schienenverkehr
Biotechnologie / Medizintechnik
Webhosting / Internet Service Provider
Open Source

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz
möglich

Projekte

Projekte

3/2023 - 6/2023

Deutsche Bahn (Schienenverkehr)
Netzwerkzugangskontrolle und Firewall

  • Anforderungsanalyse und Entwicklung eines Systems zur Netzwerkzugangskontrolle auf einem Embedded-System.
  • Implementierung in C auf Basis des existierenden hostapd (Open-Source) mit dem Extensible Authentication Protocol (EAP).
  • Automatisches Erzeugen von Firewallregeln unter Linux (Netlter) durch Shell- und Netlter-Skripte. Übersetzen von Cisco-ACLs in Netlterregeln.
  • Komplexes Netzerk-Setup mit Virtualisierung (VMs unter QEMU).
  • Konguration des Linux-Kernels als Firewall und Bridge.
  • Makefile zur Paketierung und Qualitätskontrolle der Software.
  • Zeitkritisches Projekt unter hohem Druck zur höchsten Zufriedenheit des Kunden abgeschlossen.
  • Protokolle und Standards: Extensible Authentication Protocol (EAP), Cisco-ACLs.
  • Werkzeuge: nft (Netlter, nftables), Shell, Linux, Git, Github, Make, Busybox, Buildroot, Citrix, Cisco ISE, hostapd, QEMU, Gcc, ASAN.
  • Programmiersprachen: C, Shellkripte, Netlter-Skripte.


3/2022 - 2/2023

Automobilzulieferer (Automotive)
Firmwareentwicklung (Elektroantriebe)

  • Entwicklung, Test und Dokumentation von Lowlevel-Firmware auf einem Dual-Core-Cortex-M7 Controller in C und C++ nach Autosar und MISRA.
  • Entwicklung von Initialisierungsroutinen für die Microcontroller-Hardware in C und Assembler.
  • Implementierung und Test Secure-Boot (u-boot, u-boot-Skripte).
  • Design, Implementierung, Test, Wartung: Software für Batteriemanagement, Autosar-Treiber für Kommunikationsschnittstellen (I2C, QSPI) mit Echtzeitanforderungen, Timer.
  • Hardware: Board mit STM32H7 Microcontroller, Ethernet, CAN, USB, RS-232, Ethernet.
  • Werkzeuge: Git, Gcc, G++, Jenkins, Make, JTAG-Debugger, Embedded Linux, Buildroot.
  • Programmiersprachen: C, C++, Assembler (Arm 7), Skripte (Shell, Python 3).

6/2022 - 10/202

Projektstudie
Cloudcomputing (Automatisierung)

  • Automatisierung von Cloudverwaltungsaufgaben.
  • Minimierung von Maschinen- und Reservierungskosten.
  • Automatisierung von Webabfragen über REST-Apis mit Firefox, Python 3 und wget.
  • Werkzeuge: lineare Optimierung (lp-solve), Git, Make, Firefox, Json, Csv.
  • Programmiersprachen: Shellkripte, Python 3, C++.

9/2019 - 2/2022

Thales Alenia Space (Raumfahrt)
Galileo Satellitennavigation

  • Projekt mit Sicherheitseinstufung Ü2, daher hier nur eine oberflächliche Beschreibung der Aufgaben.
  • Architektur, Entwicklung und Konfiguration von Soft- und Hardware eines Teilprojektes im Galileo-Umfeld.
  • Systemhärtung von Redhat-Systemen nach EU-Sicherheitsanforderungen.
  • Werkzeuge: Ansible, SSH, SFTP, SELinux, DNS, Firewall, LDAP, NFS, Git, IdM, Freeipa, Expect, Bitbucket, Jenkins, Robotframework, Jira.
  • Programmiersprachen: C++, Shellkripte, Python 3.


08/2018 - 03/2019

Hardwarezulieferer (Automotive)
Embedded-Linux-Sicherheitskonzept eines Steuergerätes für Campingwagen

  • Teilprojektleitung: Planung und Umsetzung eines Sicherheitskonzeptes für ein Embedded-Steuergerät mit Embedded-Linux (RTOS). Anleiten eines internen Mitarbeiters in Sicherheitsfragen.
  • Erstellen und Sichten fachlicher Anforderungen für das Sicherheitskonzept. Klären der Anforderungen mit dem Kunden. Konzepterstellung für die Nutzung der Sicherheitsfeatures des i.MX 6.
  • Kommunikation bezüglich Sicherheitsfeatures mit den Zulieferern.
  • Secure-Boot.
  • Programmieren eines speziell abgesicherten Softwareupdatesystems unter Verwendung der Sicherheitsfeatures des i.MX 6 und u-boot.
  • Reviews der Umsetzung sicherheitsrelevanter Features.
  • CAN-Anbindung (Denition und Debugging kundenspezischer CAN-Nachrichten, Debugging des CAN-Treibers, Debugging des Systems mit Hilfe von CAN-Nachrichten).
  • Hardware: i.MX 6 Prozessor (ARM-7-Architektur), Ethernet, RS-232, Beaglebone, USB-Gadget.
  • Werkzeuge: Doors, Yocto, Jenkins, Jira, System-V-Init, Gcc, Git, Subversion (svn), make, u-boot, chroot.
  • Programmiersprachen: C, C++, Python, Shell, bash, zsh, sh, u-boot-Skripte.

seit 08/2017

[Firma auf Anfrage]
Gründer und Mitgeschäftsführer

  • Soft- und Hardwareentwicklungsdienstleistungen.

05/2017 - 07/2018

Sabbatical


03/2013 - 04/2017

IBM
GNU-Toolchainentwicklung (Compiler Gcc, Glibc)

  • Erweiterung im GNU-Compiler (Gcc) in diversen Sprachen (C, C++, Fortran, Go, Ada): Unterstützung transaktionalen Speichers für S/390 und System/z in Gcc und Glibc, Performanceuntersuchung, Unterstützung für neue Cpu-Instruktionen, Portierung der Unterstützung der Sprache Go für S/390 und System/z im Gcc und Glibc.
  • Umsetzung von Compilerfeatures für neue Prozessorinstruktionen.
  • Debuggen unerwarteten Compiler- und Linkerverhaltens in den unterstützten Sprachen mit den einschlägigen ELF-Werkzeugen; Analyse von Linkerskripten, ELF-Binärdateien, Linker-Sections usw.
  • Hardware: z10, z196, zEC12, z13
  • Werkzeuge: Gcc, Gdb, Glibc, Git, Subversion (svn), make, Perftools für S/390 und System/z, DejaGNU, ELF-Tools, Linker, Gold.
  • Programmiersprachen: C, C++, Go, Assembler (S/390, System/z), Fortran, Ada.

10/2012 - 12/2012

Bosch (Automotive)
Machbarkeitsstudie Cachetests

  • Untersuchungen zur Testbarkeit sämtlicher Caches eines Cortex-A9 Mehrkernprozessors von Arm: Level 1 und Level 2 Caches (Instruktionen und Daten), Level 1 und Level 2 Translation Lookaside Buffers (Instruktionen und Daten), Branchprediction, Returnstack-Cache und andere.
  • Entwurf und prototypische Implementierung softwarebasierter Verfahren zum Test der Caches nach den Anforderungen von ASIL-B. Implementation eines March-C-Minus-Tests.
  • Entwicklung auf Basis eines Geräts mit dem Zynq-7000 Mikroprozessor von Xilinx unter Verwendung der Arm-Entwicklungsumgebung mit dem Lauterbach-Debugger.
  • Werkzeuge: rvct (Arm-Compiler), trace32, Lauterbach-Debugger, make, git, Cygwin
  • Programmiersprachen: C, Assembler (Arm 7).

07/2011 - 01/2013

Bosch (Automotive)
Mikrocontrollerprogrammierung für Stereokamera

  • Entwicklung von Firmware (MCAL; Microcontroller-Abstaction-Layer) und Gerätetreibern für den Microcontroller Zynq-7000 mit einem Cortex-A9-Prozessor von Arm in den Sprachen C und Assembler.
  • Inbetriebnahme und Test verschiedener Boards.
  • Architektur, Entwurf, Implementierung, Test und Dokumentation von Programmkomponenten für Plattformlösungen mit dem Zynq-7000 nach MISRA und ASIL-B.
  • Arm-Entwicklungsumgebung mit Lauterbach-Debugger.
  • Treiber für folgende Hardware: Dual-Core-Cortex-A9 einschließlich Scu, Timern, Clocks, Plls und Exceptionbehandlung, Interruptcontroller, Quad-Spi-Controller von Xilinx, Uarts von Cadence, Quad-Spi-Flashes von Spansion (FL128S, FL256S, FL129P) und Numonyx, Caches, Corelink-Dma-Controller (Arm), Mio-Setup, Ddr-Setup (Ram), I2c-Controller von Cadence, TI Tmp431 Temperatursensor.
  • Werkzeuge: rvct (Arm-Compiler), trace32, Lauterbach-Debugger, make, git, Mks, Qac (statische Quellkodeanalyse), Cygwin, Oszilloskop
  • Programmiersprachen: C, Assembler (Arm 7), C++, Perl, Shellskripte.

07/2010 - 07/2011

Thales ATM (Luftfahrt)
Softwareentwicklung für ein Flugleitsystem

  • Softwareentwicklung in einem großen Projekt für ein Flugleitsystem in C++ auf Linuxplattformen für die Deutsche Flugsicherung als Endkunden.
  • Entwurf, Implementierung, Test und Wartung von Programmkomponenten für i386 unter Linux (Redhat, Centos) nach ESARR 6.
  • Protokolle und Bibliotheken: Ldap, OpenLdap, Snmp v2c, Snmp v3, agent++, snmp++.
  • Werkzeuge: g++, gcc, gdb, ddd, make, git, Clearcase, Insure++, Valgrind, Purify, Eclipse, DOORS, CodeCollaborator, OpenLdap.

02/2005 - 08/2009

IBM Deutschland (Telekommunikation)
VoIP Softwareentwicklung (Internettelefonie)

  • In einem typischen Softwaregroßprojekt der Telco-Branche entwickelte ich C++ Komponenten für die "Internet Service Plattform" der Telekom im Bereich VoIP (Internettelefonie) für AIX- und Linux-Zielsysteme.
  • Leitung eines Entwicklerteams.
  • Entwurf, Implementierung, Test und Dokumentation objektorientierter Software in C++ für PowerPC (AIX) und i386 (Linux), unter anderem in den Feldern Session Initiation Protocol (SIP), Session Description Protocol (SDP), Accounting (Radius, Diameter), Gateway-Ansteuerung (Media Gateway Control Protocol, MGCP), Voice over IP (VoIP), Quality of Service für Sprachdaten (RTP, RTSP), Sprachcodecs, Steuerung von Ansageservern und Serverprogrammierung; Implementierung, Wartung und Test eines SNMP-Agenten mit libnetsnmp.
  • Entwurf und Implementierung von Teilen der Software nach gesetzlichen Vorgaben und staatlichen Sicherheitsbestimmungen.
  • Entwurf, Umsetzung und Installation von Softwareprototypen für eine Demoumgebung.
  • Werkzeuge: C++, Unix (Linux; AIX 4.2, 4.3, 5.3), Imake, scons, CVS, GIT, Clearquest, Perl, Shell, Beam, IBM DB5, Postgres, ODBC, Net-SNMP

06/2007, 07/2007, 10/2007, 11/2007

Elektronikhändler und -versand (Auftragsverwaltung)

  • Hilfe beim Debugging bestehender C- und 4GL-Programme, die auf die Informix-Datenbank zugreifen.
  • Neuimplementierung, Test, Dokumentation und Inbetriebnahme eines C-Programms mit eingebettetem 4GL-Kode. Parallelisierung mehrerer Programminstanzen mit Hilfe von Unix-System-Calls.
  • Werkzeuge: C, Unix (HP-UX), Informix-Datenbank und 4GL (SQLite-ähnlicher Datenbankzugriff in C), Shell, SSH

Ende 2004 bis Mitte 2006

Linux Magazin (Fachmagazin)
Fachartikelreihe (Softwaresicherheit)

  • Unter dem Titel "Sicheres Programmieren für Administratoren" verfasse ich seit 2004 in loser Folge eine Artikelserie über typische Fehler und Gefahren, die beim Programmieren in C, C++, Shellskripten und Perl lauern und Stabilität und Sicherheit des Systems bedrohen. Parallel zu den Artikeln entwickle ich die freie Softwarebibliothek Gateguardian, die Code anbietet, um die Probleme zu umschiffen.
  • Teil 1: Gefahren aus der Programmumgebung, beispielsweise Signale oder Umgebungsvariablen (Linux Magazin 02/05, S. 54).
  • Teil 2: Risiken im Umgang mit Dateien und Dateisystemen (Ausgabe 04/05, S. 64).
  • Teil 3: Eingabekontrollfehler (Ausgabe 07/05, S. 62).
  • Teil 4: Eingabekontrollfehler 2 (Ausgabe 10/05, S. 54).
  • Teil 5: Unsichere Programmausgaben (Ausgabe 01/06, S. 64).
  • Teil 6: Sicherheitslücken im Ridentd (Ausgabe 05/06).
  • Gateguardian-Projekt auf Sourceforge (www.sourceforge.net/projects/gateguardian).

10/2004 - 01/2005

Siemens Austria (Automotive)
Qualitätssicherung, Performanceanalyser, Design und Test von embedded Software, Entwicklerbetreuung

  • Im Umfeld des Projekts Deutsche LKW-Maut / Toll Collect war ich an der Entwicklung und Qualitätssicherung der sogenannten "On Board Units" auf Basis eines ARM 7 Prozessors beteiligt.
  • Unterstützung einer Gruppe ungarischer Entwickler bei Test, Design, Implementation und Qualitätssicherung der objektorientierten Software (C++).
  • Entwicklung von Modultests in C++ für Teile der Gerätesoftware in enger Zusammenarbeit mit den Entwicklern.
  • Code-Reviews, statische Analyse, Performanceanalysen.
  • Beheben von Fehlern in der Gerätesoftware in Zusammenarbeit mit internen und externen Entwicklern und Beratern.
  • Verbesserung des Entwicklungsprozesses.
  • Werkzeuge: C++, Unix (Linux), Windows 2000, pSOS+, make, Purify, PC-Lint, Clearcase, Clearquest, ARM 7 Prozessor

07/2002 - 06/2004

Namhafte Firma im Bereich Webhosting
Unix Systementwicklung

  • Ich war für eine große Firma im Bereich Webhosting als Unix-Systementwickler tätig und insbesondere für den Linux Kern und andere verwendete Open Source Software zuständig. An einigen der freien Softwarepakete mußten für interne Zwecke Veränderungen vorgenommen werden, seien es Reparaturen von Programmfehlern, Performance- verbesserungen oder Erweiterungen der Funktionalität.
  • Objektorientierte Entwicklung eines verteilten Datenbanksystems mit der Berkley DB und C++ sowie eines hochperformanten Datencaches für einen Nameserver (Bind)
  • Objektorientiertes Design (OOAD, UML Diagramme) der Programme zur Abrechnung der für Kunden erbrachten Leistungen (Billing)
  • Standardisierung und Beschleunigung des abteilungsinternen Software-Projektmanagements mit den GNU Autotools und selbstentwickelten Projektrümpfen
  • Anpassung des Linux Kerns für hausinterne Zwecke
  • Post Mortem Analyse von Abstürzen des Linux Kerns auf der Serverfarm mittels "Crashdumps". Beheben der Fehler in Zusammenarbeit mit Linux Entwicklern wie Alan Cox und Marcelo Tosatti
  • Erweiterung der Open Source Projekte OpenGFS (verteiltes Dateisystem), OpenDLM (IBM Lock Manager), Linux-HA (Linux High Availability System, heartbeat Dämon), keepalived (anderer heartbeat Dämon), Linux Test Project, Bind
  • Performanceanalyse der Kundenserver
  • Überprüfung der Sicherheit kritischer Komponenten und Serversysteme (Software Audits)
  • Werkzeuge: C++, C, OOAD, UML, Shell, Unix (Linux), Linux Kern, Linux Kernel Coding Conventions, Versionskontrolle CVS, GNU autotools (automake, autoconf, libtool), GNU Coding Standards, OpenGFS (verteiltes Dateisystem), Berkley DB, MySQL, SQLite, Clustering, valgrind (Memory Checker)

1998-2022

fvwm (f? virtual window manager) - Open Source Fenstermanager für X

  • Seit Ende 1998 ehrenamtlich Mitarbeit am Open Source Projekt fvwm, einem insbesondere in der Linux Welt bekannten Fenstermanager für X11. Seit langem bin ich federführend für die Weiterentwicklung des Programmkerns und einiger Module zuständig. Außerdem obliegt mir die meiste Zeit das Projekt- und Releasemanagement sowie die Wartung. Des weiteren arbeite ich als Vertreter des fvwm im WM-SPEC Gremium mit, das sich um eine Standardisierung der Kommunikation zwischen Fenstermanager und Desktopumgebungen wie KDE oder Gnome bemüht. Auf Fehlerberichte reagiert das fvwm Team oft innerhalb weniger Stunden (siehe Mailinglistenarchive auf http://fvwm.org).
  • Werkzeuge: C, lexx/yacc, Unix, X11 (Xlib), make, GNU Autotools (autoconf, automake), valgrind (Memory Checker)

01/2001 - 06/2002

LifeBits AG (Biotech)

  • Software- und Algorithmenentwicklung für ein Meßgerät für medizinische Tests und Genanalyse, Systemadministration Aufgaben : Für die LifeBits AG Tübingen war ich seit kurz nach der Firmengründung als Leiter der IT Abteilung (vier Personen) tätig. Ein Schwerpunkt war die Entwicklung der Algorithmen und der Software für das geplante Produkt. Das Gerät sollte medizinische Tests und Genanalysen auf Grundlage handelsüblicher Compact Discs durchfürhren. In meinem Verantwortungsbereich lag dabei die Entwicklung der Software für das Gerät und der Entwurf der Compact Disc Algorithmen. Eines der entwickelten Verfahren wurde zum Patent angemeldet (EPA, Patent Nr. 02791480.3-2204, "Datenträger für chemische oder biochemische Analysen")
  • Entwicklung von Algorithmen und Software zur Analyse und gezielte Manipulation der Strukturen der Compact Disc in Zusammenarbeit mit den Labors für Biotechnik, Physik und Elektrotechnik
  • Design der firmeninternen C/C++ Standardbibliothek für Unix/Windows Portierung, Dateiformate und Datenauswertung
  • Einführung und Organisation der Softwareentwicklungsumgebung mit Standardwerkzeugen mit Schwerpunkt Portierbarkeit (Versionskontrolle CVS, Übersetzer gcc, g++, Makefiles, automake, autoconf)
  • Management von Teilprojekten im Kontext der wissenschaftlichen Arbeit und der Produktentwicklung
  • Aufbau und Administration der IT Infrastruktur
  • Planung des IT Sicherheitskonzepts
  • Administration der Firmenserver (Versionskontrolle CVS, DHCP Server, FTP Server, Web Server (Apache), Mailserver (Postfix), DNS, NIS, Datensicherung usw.)
  • Administration der Arbeitsplatzrechner (Mac OS9, Linux, Windows)
  • Administration der Telekommunikationsstruktur (Router, FAX Server)
  • Werkzeuge: C, C++, Shell, CD-ROM, Unix (Linux), Windows (3.11, 98, NT, 2000), Mac OS9, Webserver (Apache), LAN (Ethernet), Mailserver (Postfix), CVS, Router, DNS, NIS, SSH

05/1998 - 12/2000

Meßgerätehersteller
Remote Management Card - Firmwareentwicklung für eine PCI Steckkarte zur Fernwartung von Servern in Intel-Architektur

  • Firmwareentwicklung in enger Zusammenarbeit mit den Hardwareingenieuren für eine Remote-Management-Steckkarte mit weinem RTOS (pSOS+) auf einer Windows-NT-basierten Plattform.
  • ISO9000 zertifizierter Entwicklungsprozeß (Design, Implementierung und Test der Firmware).
  • Entwicklung: Modemsteuerung; Treiber für Multiplexing der seriellen Schnittstelle; XML Parser; Parsergenerator für die Kartenschnittstelle (Perl, XML) und der seriellen Schnittstellen
  • Entwicklung Emulation der Kartenhardware zwecks Vereinfachung von Test und Entwicklung auf Unix (Linux)
  • Entwicklung SNMP-Agent
  • Design, Umsetzung und Pflege der Makefiles
  • Entwurf und Implementierung von Testfällen für die große Teile der Firmware (z.T. nach der Methode der mehrfachen Bedingungsüberdeckung bzw. C3 Überdeckung)
  • Softwareinspektionen
  • Design der Debug Schnittstellen
  • Werkzeuge: pSOS+, ARM Prozessor, Windows NT, Unix (HP-UX, Linux), C, Perl, make, UML, XML, Clearcase, PCLint (statisches Analysewerkzeug), Net-SNMP

01/1997 - 04/1998

IBM Deutschland (Softwarehaus, Data Mining)
Entwicklung von Komponenten für Intelligent Miner (Data Mining Software)

  • Komponentenentwicklung für den Intelligent Miner - eine Data Mining Software.
  • Entwicklung eines Datenbank Caches für DB2 in C++ und embedded SQL.
  • Testen der Software anderer Subteams (u.a. mittels Shellskripten).
  • Restrukturieren der Makefiles zwecks Dependency-Tracking (Imake).
  • Werkzeuge: Unix (AIX), C++, DB2, DB2 PE, Embedded SQL, OS/2, make, Imake, Shell, CMVC (IBM Projektmanagement Werkzeug)

01/1997 - 04/1998

IBM Deutschland
Systemadministration, Hardwarekoordinator

  • Systemadministration und Hardwarebeschaffung (RS/6000, AIX) zuständig.
  • Planung des Hardwarebedarfs und Beschaffung.
  • Hard- und Softwareinstallation der Maschinen.
  • Aufbau eines Software-Testraumes und eines Serverraumes.
  • Administration der Abteilungsserver (AIX).
  • Administration der Arbeitsplatzrechner (AIX und OS/2) und Betreuung der Benutzer.
  • Administration einer RS/6000 SP2 (massiver Parallelrechner) für den Entwicklungsbereich.
  • Werkzeuge: Unix (AIX 3.1, 4.1, 4.2, 4.3), RS/6000, RS/6000SP2, SP2 Switch Netzwerk, Shell, NFS, Kerberos, TFTP, BOOTP, smit/smitty (Systemverwaltungstool), NIS

seit 1998

Diverse Open-Source-Projekte

  • Als Vertreter der Open Source Gemeinde finden sich von mir implementierte oder angeregte Änderungen in zahlreichen freien Softwareprojekten:

    Botan Tutorial (kryptographische Bibliothek)
    bubblemon (Systemmonitor)
    dosbox (DOS-PC Emulator)
    fvwm (F Virtual Window Manager)
    gateguardian (Bibliothek für Softwaresicherheit)
    gcc (GNU-Compiler)
    glibc (GNU-C-Bibliothek)
    heartbeat (Hochverfügbarkeitsdämon für Linux)
    keepalived (Dämon ähnlich Heartbeat)
    libffi (Programmbibliothek für Funktionsaufrufe in andere Sprachen)
    libstroke (Programmbibliothek für Mausgesten)
    linux-2.4/3.x Kern (Betriebssystem)
    ltprep (Linux Test Project Reporting Tool)
    lyx (LaTeX GUI)
    nedit (Texteditor)
    odlm (Open Distributed Lock Manager)
    ogfs (Open Global File System, verteiltes Dateisystem)
    ridentd (sicherere Identd-Variante)
    rxvt (X11 Terminalprogramm vom fvwm Autor)
    Secure Programming Cookbook
    tig (GIT-Datenbank-Viewer)
    vice (C64 Emulator für Windows und Unix)
    wm-spec (Standardisierungsgremium für den Unix Desktop)
    xmame (Spielkonsolenemulator)
    xmms (Medienspieler für Windows und Unix)
    xv (Bildbearbeitungsprogramm)
    zsh (äußerst mächtige Unix shell)

01/1996 - 06/1996

Meßgerätehersteller
Entwicklung der Firmware für ein optisches Meßgerät (OTDR)

  • Firmwareentwicklung für eines optisches Meßgerät (Optical Time Domain Refractometer) mit einem RTOS (pSOS+).
  • System Management Task (Hardwareverwaltung)
  • Druckertreiber und -layout
  • Oberflächengestaltung
  • Performanceoptimierung
  • Werkzeuge: RTOS (pSOS+), embedded Systems, Unix (HP-UX), C++, Assembler 80x86

Aus- und Weiterbildung

Aus- und Weiterbildung

Diplom-Mathematiker 1994, Diplomnote: sehr gut
Studium Mathematik und Informatik an der Universität Dortmund
Hochbegabt

Position

Position

Software-Entwicklung, Beratung

Kompetenzen

Kompetenzen

Top-Skills

Embedded und hardwarenahe Entwicklung Systementwicklung

Produkte / Standards / Erfahrungen / Methoden

Kenntnisse:

Erfahrungen im Bereich:

Anwendungs- und Systemprogrammierung
Compilerentwicklung
Embedded und hardwarenahe Entwicklung
Performanceoptimierung
Qualitätssicherung (Design, Testdesign, Test, Inspektionen, Reviews)
Softwaresicherheit (Sicheres Programmieren, Software Audits)
Systemadministration, Netzwerkadministration


Methoden:

Agile Entwicklung
Objektorientierte Analyse, Design, Programmierung (OOA, OOD, OOP)
Unied Modeling Language (UML)
SCRUM
CASE Tools (Computer Aided Softwatware Engineering)


Standards:

ASIL-B
Autosar
GNU Coding Standards
Linux Coding Conventions
MISRA
XML
Zahlreiche RFC


Entwicklungswerkzeuge:

Boost
Clearcase
Coverity
Cppcheck
DejaGNU
Doors
Eclipse
Flawnder
Git, Github, Bitbucket etc.
Google Test
Lauterbach und andere Hardwaredebugger für Embedded-Systems
Lint
Mercurial
PC-Lint
Qac (statische Sourcekodeanalyse)
Robotframework
Splint
STL
Subversion
Jenkins
Jira
Yocto


Spezialkenntnisse:

Analyse von Problemen und eigenständige Lösung derselben
Lowlevelprogrammierung von Armprozessoren
Client/Server-Programmierung
Compilerentwicklung (Gcc für Linux auf System/z und S/390)
Dynamische Kodeanalyse
ELF-Linkerformat
Embedded Systems und hardwarenahe Entwicklung
Projektmanagement mit GNU autotools
Portierung
Sicherheitsfunktionen des ARM i.MX6
Statische Sourcekodeanalyse
Open source
Voice-over-IP, SIP, SDP, MGCP

Betriebssysteme

Erfahrungen mit Betriebssystemen:

Linux: Expertenkenntnisse Entwicklung
Linux-Kernelentwicklung
Linux-Distributionen: Red Hat, Suse, Debian, Yocto
RTOS (Real Time OS): Embedded Linux, pSOS+, Windriver
Unix: Programmierung und Administration (AIX, HPUX, Sinix)
Windows
MS-DOS

Programmiersprachen

Sprachkenntnisse:

Assembler: diverse ARM-Prozessoren, x86, x86_64, 6502, 6510
C: Expertenkenntnisse, Compilerbau
C++: Expertenkenntnisse, Compilerbau
GNU-Make, Imake, Make-Maker etc...: make Guru (alle Varianten)
Lisp: Scheme, emacs Lisp
Perl
Python: Mehrjährige Programmiererfahrung
Skriptsprachen: awk, sed
Shell: Shellskriptexperte
TeX, LaTeX: Grundkenntnisse
Xt, Motif: sehr gute Xlib Kenntnisse
yacc/lex: Grundkenntnisse
4gl: Informix 4GL (Grundkenntnisse)
Go
Lua
GNU autotools (automake, autoconf, libtool): Intensiver Einsatz in ca. 20 Projekten.

Datenbanken

DB2: Programmierung und Administration / Parallele DB
ODBC
MySql
Postgres
SQL: Programmierung (embedded SQL)
Informix: Programmierung mit 4gl
Berkley DB
SQLite
IBM DB5

Datenkommunikation

Schnittstellen und Protokolle:

CAN
Ethernet
I2C
Internet, Intranet: Administration Webserver, xml Programmierung, html, Grundkenntnisse diverser Protokolle ISO/OSI
LAN, LAN Manager: Administration, Programmierung
Message Queuing: Programmierung
Parallele Schnittstelle: Programmierung, auch serielle Schnittstelle (RS232)
Proprietäre Protokolle: Client/Server-Programmierung, Entwicklung verteiltes Dateisystem (OpenGFS)
Router: Administration
RS232, UART
SMTP
SNMP: v2c, v3 (VACM, USM); Implementierung; Net-SNMP; libnetsnmp
Spi, Quad-Spi (Qspi)
TCP/IP: FTP, NFS, TFTP, HTTP, SSH, DHCP, LDAP etc.; Detailkenntnisse diverser Protokolle
Voice-over-IP-Protokolle (SIP, SDP, MGCP, Radius, Diameter, Sprachcodecs, Quality of Service, RTP, RTSP)

Hardware

Kenntnisse:

embedded Systems
PC
ArmV7-Architektur (Cortex-A9 Cpu, Cortex M7 (STM32H7), Cortex-M4 (Freescale i.MX 6))
Caches
Ddr-Ram
Dma
Flash-Speicher
I2c
IBM S/390
IBM System/z
Interruptcontroller
Oszilloskope
Quad-Spi (Qspi)
RS232
Spi
Timer
UART (serielle Schnittstelle)
USB
Zync-7000
8-bit-Prozessoren

Branchen

Branchen

Automotive
Cloudcomputing
Hardwarehersteller
Softwarehersteller
Meÿgerätehersteller
Computerhardware
Telekommunikation (Telco)
Luftfahrt
Raumfahrt
Schienenverkehr
Biotechnologie / Medizintechnik
Webhosting / Internet Service Provider
Open Source

Vertrauen Sie auf GULP

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

Rufen Sie uns an +49 89 500316-300 oder schreiben Sie uns:

Das GULP Freelancer-Portal

Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.