Hardwarenahe Software-Entwicklung von Echtzeitsystemen, FPGA-Design
Aktualisiert am 18.01.2024
Profil
Freiberufler / Selbstständiger
Verfügbar ab: 01.01.2020
Verfügbar zu: 100%
davon vor Ort: 100%
HW-nahe SW-Entwicklung für ARM Cortex-M4
FPGA Design (Intel/Altera) mit VHDL + schematisch +Debuggen mit ModelSim
Deutsch
Muttersprache
Englisch
Französisch
Latein

Einsatzorte

Einsatzorte

München (+100km) Mindelheim (+100km)

Deutschland: bevorzugt Großraum München

nicht möglich

Projekte

Projekte

6 Monate
2019-07 - 2019-12

Drohnen, Steuerung +Transfer Sensordaten

Drohnen, Steuerung +Transfer Sensordaten, nRF52840, ARM Cortex-M4, Bluetooth 5, BLE

  • Aufbau +Inbetriebnahme Entwicklungsumgebung (IAR Embedded Workbench for ARM)
  • FreeRTOS, Integration +Konfiguration +Test
  • Anschluss +Ansteuerung eines sog. E-Paper-Display über SPI, Anpassung SPI-Treiber
  • Implementierung HW-unabhängiger Zwischenschichten über Display-Ansteuerung und FreeRTOS
  • Optimierung E-Paper-Display-Ansteuerung + Test
  • Erstellung Konzept zur universellen Inter-Prozessor-Kommunikation (IPC) zwischen den einzelnen Teilnehmern des Bluetooth-Netzwerkes (BLE-Sensoren, Smartphone, PC mit BLE-Sniffer), als auch komplett innerhalb einer Simulation auf einem Windows/Linux-PC ohne Bluetooth-HW
4 Monate
2019-03 - 2019-06

Batterie Management Unit

Automotive, E-Mobility, SW-Entwicklung im Projekt Batterie Management Unit

  • Aufsetzen Build-Umgebung, TortoiseSVN, Repo, Compiler
  • Analyse SW Architektur
  • Flashen des Zielsystems über CAN und/oder Lauterbach-Debugger
  • Entwicklung Simulationsumgebung für Modultests, da einfache Tests auf dem Zielsystem zu zeitaufwendig
  • Portierung RTE-Umgebung (Autosar) + Simulation auf PC zum Build + Test unter MS-Visual-Studio, dadurch Beschleunigung von SW-Entwicklung +Test um den Faktor 100 (1-2 Sekunden statt 30 Minuten)
  • Entwicklung diverser Module + Test auf Windows-PC
3 Jahre 1 Monat
2016-02 - 2019-02

SW-Entwicklung

Automotive, E-Mobility, SW-Entwicklung, Ladeadapter für einen rein elektrischen Sportwagen

  • Aufbau Entwicklungsumgebung (IAR, Anpassung J-Link Script für Cortex-A9/M4)
  • FreeRTOS, Integration +Test +Konfiguration
  • Implementierung/Anwendung vorhandenen Codes für die Inter-Prozessor-Kommunikation RPMsg für A9 (Linux) / M4 (FreeRTOS)
  • Erstellung Konzept zur universellen Inter-Prozessor-Kommunikation (IPC) zwischen den beiden CPU's (A9/M4) des i.MX6SoloX
  • Entwicklung eines universellen Message-Formats für Kommunikation zwischen den Prozessoren/Threads o Eigen-Entwicklung eines RPMsg-Ersatzes für die IPC-Kommunikation (A9/M4) nur unter FreeRTOS mit Hilfe des MU-Registers des i.MX6SoloX zum Test (A9/M4)auch ohne Linux
  • Installation Qt-Toolchain mit Qt-Creator auf PC mit Linux Ubuntu 14.04 LTS
  • Installation Cross-Compiler/Debugger für ARM-Target in QT-Creator
  • Da der Vector-CAN-Stack für den benutzten Prozessor NXP i.MX6SoloX noch nicht lieferbar war, Eigen-Entwicklung einer Zwischenlösung aufbauend auf den FlexCAN-Modulen von NXP
  • Integration und Inbetriebnahme Vector-CAN-Stack, Konfiguration mit GENy
  • Entwicklung LED-Treiber mit I2C-Interface zum RGB-LED-Controller mit diversen Funktionen wie Blinken, Fading usw..
  • Entwicklung EEPROM-Treiber mit I2C-Interface zum EEPROM
  • Entwicklung Testumgebung über CAN-IsoTp
  • Entwicklung UDS-Funktionalität wie z.B. UDS_Read/WriteDataByIdentifier()
  • Entwicklung diverser Test-Routinen für Test des sog. PWR-Boards
  • Entwicklung PWR-Board-Simulation auf einem eigenen Cortex-M4-Board (FRDM-K64F, NXP) mit Debug-Ausgabe über SPI auf FPGA-Board (DE0-Nano (ALtera/Terasic) +TFT- Display, alles selbstentwickelt, siehe unten)
  • Portierung der gesamten M4-SW auf einen Lade-Adapter mit verändertem Funktionsumfang, anderer CPU (M7) +OS (ThreadX)
  • Bei der Portierung wurde der Vector-CAN-Stack (inkl. IsoTp) durch eine Eigen-Entwicklung ersetzt
  • Realisierung einer OS-Zwischen-Schicht zwischen Applikation und OS (FreeRTOS, ThreadX, Windows)
  • Entwicklung eines Tools (MS Visual-C) zum Export der Signal/Nachrichten-Infos aus DBC-Files in include-Files (C-Syntax) +csv
2 Monate
2015-12 - 2016-01

Automotive, Batterieladestation

Automotive, Batterieladestation, ZigBee, Demo, Aufbau Entwicklungsumgebung (Hard- +und Software)

Hardware:

  • Anschluss ZigBee-Modul (XBee pro) #1 an ein FPGA-Entwicklungsboard De1-SoC (ALtera/Terasic/ARM) mit 2 x Cortex A9 +Linux)
  • Anschluss ZigBee-Modul #2 an ein FPGA-Entwicklungsboard DE0-Nano (ALtera/Terasic)
  • Anschluss von jeweils einem Cortex-M4-Board
  • Die Verbindung zwischen den Cortex-M4-Boards und dem jeweiligem FPGA erfolgt über SPI mit der maximal möglichen Datenrate von 16 MBit/s. 


Kommunikationswege:

  • ZigBee-Modul -> FPGA-UART -> FPGA-SPI -> M4-SPI -> Cortex-M4
  • Cortex-M4 -> M4-SPI -> FPGA-SPI -> FPGA-UART -> ZigBee-Modul
  • Cortex-M4 -> M4-SPI -> FPGA-SPI -> FPGA-GPU -> TFT-Display bzw. VGA
  • ARM Cortex A9 -> "HPS to FPGA Bridge" -> FPGA-GPU -> TFT-Display bzw. VGA
  • sämtliche VHDL-Module (wie z.B.: FPGA-SPI, FPGA-UART, FPGA-GPU, SDRAM-Controller, Video-in/out, GPU (Grafik-Processing-Unit), Logic-Analyzer, Auslesen ADC, usw..) wurden von mir selbst entwickelt.

Ausnahme:

Falls geeignete Module wie z.B. Fifo in der Altera-Lib (MegaWizard) vorhanden waren, wurden diese natürlich verwendet.

Software:

  • IAR Embedded Workbench +rtos MQX-4.1
  • selbstentwickelte Interface-Library zum FPGA
  • Funktionen für Datenübertragung innerhalb eines ZigBee-Netzwerkes (API-Mode)
  • Darstellung der gesendeten/empfangenen ZigBee-Nachrichten über den Cortex-M4 an das FPGA (selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)).
  • Installation Yocto-Linux +Testprogramm auf FPGA-Entwicklungsboard De1-SoC
5 Monate
2015-07 - 2015-11

Low-Level-Design

Automotive, Laser-Scanner, Low-Level-Design, Code-Refactory, Modultests

  • Installation Entwicklungsumgebung (QT, Doxygen, Python)
  • Überarbeitung +Generierung Low-Level-Design Dokumente mit Doxygen aus Sourcecode
  • Überarbeitung +Erweiterung Modultests (C++) bis Code/Branch-Coverage 100%/98% (gcov)erreicht wurde, Verknüpfung mit DOORS-Anforderungen, Gen. Testreport
  • Überarbeitung der C++-Klassen entsprechend PC-Lint-Warnungen
3 Monate
2015-04 - 2015-06

Parkassistenz-System

Automotive, Parkassistenz-System, Source-Code-Generierung aus DOORS-export

  • Installation Entwicklungsumgebung (perl)
  • perl-script Entwicklung für Konvertierung: XLS (DOORS-export) -> XML -> C-Source und XML -> XLS Erzeugte C-Source war MISRA-konform
2 Monate
2015-02 - 2015-03

Parkassistenz-System

Automotive, Parkassistenz-System, Power-PC Controller, HW-nahes Debugging

  • Installation Entwicklungsumgebung (GHS-Compiler, WinIdea, CANoe usw..)
  • Bearbeitung diverser Tickets (Bugfix, QAC, Korrektur Source-Files)
6 Monate
2014-07 - 2014-12

SW-Entwicklung

SVN IAR-Compiler MS-Visual-Studio-2008

Mitarbeit an der SW-Entwicklung für einen Gaszähler (mit ARM Cortex-M3)

  • MISRA-kompatible Portierung der "Testing Framework for C, CUnit" zum Ablauf auf der Zielhardware (ARM Cortex-M3 von STM) als auch   auf einem Windows-PC. Es wurden nur die Funktionen aus CUnit portiert, die auch wirklich benötigt wurden. Zusätzlich wurden Funktionen für die formatierte Ausgabe über die UART-Schnittstelle entwickelt. Vereinfachung (Source-Code-Umfang) gegenüber CUnit-Original: Faktor 20
  • Entwicklung diverser SW-Module +CUnit-Tests (u.a. Timer, UART usw..)
SVN IAR-Compiler MS-Visual-Studio-2008
2 Monate
2014-06 - 2014-07

FPGA-Design

Echtzeitsysteme, FPGA-Design, ZigBee (HW/SW-Entwicklung)

  • Integration eines handelsüblichen ZigBee-Moduls in ein FPGA-Projekt
  • Anschluss USB-Serial-Converter von FTDI an das FPGA zur Konfiguration des ZigBee-Moduls über das Tool XCTU des Herstellers Digi International
  • HW-Entwicklung:
    • UART-Modul in VHDL (FPGA) + HW-Fifo für Nios2
    • Switch zwischen UART-Nios2 +UART-USB
  • SW-Entwicklung:
    • Treiber für UART (230 KB)
    • Funktionen für Datenübertragung innerhalb eines      ZigBee-Netzwerks (API-Mode)
  • die HW wurde 2 x aufgebaut, an jeder HW kann ein TFT-Display zur Datenvisualisierung angeschlossen werden.   Die Text/Grafik-Ein-/Ausgabe erfolgte über den Softcore-Prozessor Nios2 an das FPGA (selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)).
  • Durchführung eines Feldtests zur Bestimmung des max. möglichen Datendurchsatzes +Reichweite
  • der verwendete Softcore-Prozessor Nios2 bootet direkt aus dem EPCS-Flash des FPGA
  • Anschluss des Dev-Boards FRDM-K64F (Kinetis K64, ARM Cortex-M4) von Freescale über die SPI-Schnittstelle (16 MBaud) an das FPGA
  • HW-Entwicklung (VHDL) eines SPI-Moduls (Slave) auf dem FPGA
  • HW-Entwicklung (VHDL, schematisch) zur Koppelung des SPI-Moduls an die selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)
  • SW-Entwicklung (C) eines SPI-Treibers für ARM Cortex-M4
  • SW-Entwicklung (C) diverser Funktionen für die Text+Grafikausgabe über SPI an das FPGA
  • Integration des selbstentwickelten Logic-Analyzers (VHDL) in das FPGA zur Visualisierung der HW-Signale (SPI_MOSI,.. ZigBee UART usw..)
  • HW-Entwicklung (VHDL): Implementierung Touch-Screen-Interface (resistiv) mit Auslesen ADC, Konvertierung in Screen-Koordinaten, Button-Interface usw.. innerhalb des Video-Kontrollers (FPGA) +Interface zum SPI-Kontroller
  • SW-Entwicklung (C): Realisierung SW-Funktionen zum Touch-Screen-Interface
5 Monate
2014-01 - 2014-05

Echtzeitsysteme, FPGA-Design

  • Integration/Aktivierung Softcore-CPU Nios II mit dem Altera Quartus-II Design-Tool Qsys +SW-Boot aus dem EPCS-Flash.
  • Integration/Aktivierung HPS (Hard Processor System = 2x ARM Cortex-A9, 800 Mhz) im Kameraprojekt (FPGA-Entwicklung mit Cyclone-V SoC, Altera) mit dem Altera Quartus-II Design- Tool Qsys.
  • Entwicklung von Interface-Funktionen in ANSI-C auf der HPS-Seite (CPU=ARM Cortex-A9) zum Testen der Kommunikation CPU <-> FPGA.
  • Entwicklung/Integration PCIe-Interface (PCI-Express) mit dem Quartus-II Design-Tool Qsys auf dem FPGA Cyclone-IV GX. (Dieses PCIe-Interface (PCIe x 1, max. 250 MByte/s Duplex) verbindet das FPGA Cyclone-IV GX mit der CPU (Intel Atom)
  • Entwicklung/Anpassung/Integration PCI-Express-Treiber für Win7 und embedded Linux (Yocto)
  • Zum Test des PCIe-Interface wurde des selbstentwickelte Finite-Elemente-Programm verwendet, das die Grafik-Befehle über das PCIe-Interface an die selbstentwickelte GPU (Grafik-Processing-Unit, FPGA) ausgibt. Dieses Testprogramm läuft auf der CPU-Seite (Intel Atom) sowohl unter Windows-7, als auch Linux (Yocto). Auf dem Cyclone-V SoC (ARM Cortex A9) nur unter Linux (Yocto).
  • Das Testprogramm ist übrigens ein mit MS Visual Studio 2008 bzw. gcc erzeugtes Konsolen-Programm, d.h. es werden nicht die entsprechende API von Linux oder Win7 zur Grafikausgabe benutzt. Diese Grafikausgaben gehen über DE2i-150(FPGA Cyclone IV GX + Intel Atom): Intel-Atom -> PCIe -> GPU(FPGA) -> TFT-Display DE1-SoC (FPGA Cyclone V Soc (inkl. ARM Cortex A9)): ARM Cortex A9 -> "HPS to FPGA Bridge" -> GPU(FPGA) -> TFT-Display
  • Integration und Test des selbstentwickelten Realtime-Kernels rtos32 auf dem FPGA-Entwicklungsboard DE2i-150 (Terasic/Altera /Intel). Messen der Datentransferrate zwischen 2 Threads über Message-Queues (Message-Size: 1 KByte, Taskwechselfrequenz: 0,99 MHz, Datentransferrate: 968 MByte/s).
    • Kurzbeschreibung des Echtzeit-Kernels rtos32:
      • läuft im Ring-0, d.h. alternativ zu Win7/Linux
      • Source-Code (> 12000 Zeilen) in x86-Assembler (32-bit protected mode, Speichermodell: FLAT)
      • pre-emptive scheduling (direkte Aktivierung einer wartenden Task aus einer Interrupt-Service-Routine)
    • Intertask-Kommunikation:
      • Events (32 pro Task)
      • Semaphore
      • Message-Queues
    • beliebige Anzahl von SW-Timer
    • Kennzahlen (getestet auf dem FPGA-Entwicklungsboard DE2i-150 (CPU: 1,6 GHz Intel Atom N2600):
      • SetEvents + WaitEvents +Taskwechsel = 0.489 us
      • ReleaseSM + GetSM +Taskwechsel = 0.574 us
      • SendMail + GetMail (1 KByte) +Taskwechsel = 1.009 us
  • Im Einzelnen wurden u.a. folgende Funktionseinheiten, Module (VHDL) entwickelt. Verwendbar sind sie z.B. für die FPGA's Cyclone-IV GX und Cyclone-V SoC. Getestet wurden sie auf den FPGA-Entwicklungsboards DE2i-150 (Terasic/Altera/Intel), DE1-SoC (Terasic/Altera/ARM), DE0-Nano(Terasic/Altera), dem selbstentwickelten Logic- Analyzer und mit ModelSim):
    • SDRAM-Controller für SDRAM (32Mx16), (100 % Eigenentwicklung, nicht Qsys-Lib!) Die Entwicklung erfolgte mit Hilfe eines VHDL-Simulations-Modell für ein DDR-RAM, das von mir auf SDRAM umgeschrieben wurde, einer Testumgebung +ModelSim:
      • Speichertakt: 125 MHz
      • Datenrate: 240 Myte/s (max. 250 MByte/s theoretisch möglich)
      • Burstmode: 1..256 (variabel)
      • 2-Kanal-FIFO-Interface:
        • XGA-Interface (VGA Video Display), 125 MByte/s
        • GPU (davon 27 x 2 = 54 MByte/s für Video-Signal, verbleiben max. 60 MByte/s für GPU-Befehle wie DrawTo(x,y)
    • cam_video_ctrl
    • Video-Display-Controller für VGA/TFT-RGB-Monitore, stellt neben den Videodaten aus dem SDRAM (125 MByte/s) auch den Inhalt eines Text-Framebuffer dar (Overlay, 128x48 ASCII-Zeichen).
    • cam_gpu_ctrl
      • nimmt die Kamera-Signale (55 MByte/s) aus dem cam_fifo entgegen und sendet sie als Packet an den SDRAM-Controller
      • nimmt die Grafik-Kommandos von der CPU entgegen und überträgt die zu setzenden Pixel an den SDRAM-Controller
    • Entwicklung eines VHDL-Moduls zum Einlesen des Video-Kamera- Signals über ADV7180 (SDTV Video Decoder) inkl. Initialisierung über I2C
    • Entwicklung VHDL-Modul zur Text-Ausgabe auf LCD-Display (2x16)
    • Realisierung (100 % Eigenentwicklung) eines Soft-Core 16-bit RISC Prozessors (ähnlich zum XGATE der Fa. Freescale), 125 MIPS auf FPGA Cyclone-IV (125 Mhz Takt)
    • Entwicklung eines Einfachst-Logik-Analysator zum Testen der FPGA-internen/externen Signale. Sehr geringer Resourcenverbrauch ( < 5 % auf 5CSEMA5F31C6), benötigt kein externes RAM (z.B. SDRAM, SRAM) für die Darstellung der Logik-Signale auf dem Monitor. Komplett unabhängig vom Rest, da eigener Video-Controller usw. Sample-Rate: 8 ns, 16-Kanal, Ausgabe auf VGA/RGB-TFT-Interface
5 Monate
2013-08 - 2013-12

Überarbeitung MemStack

  • Überarbeitung MemStack, RTE-Generierung mit CESSAR
  • Integration, diverse Fehlerbeseitigungen auf Grund der Ergebnisse der FAT-Tests
  • Unterstützung +Einarbeitung neuer SW-Team-Mitglieder
2 Jahre 6 Monate
2011-07 - 2013-12

Automotive-Bereich

Automotive-Bereich, München Mitarbeit an einem Radar-basierten Fahrerassistenz-System in insgesamt 5 Subprojekten

München
2 Monate
2013-06 - 2013-07

Portierung der gesamten Rahmen-SW

  • Portierung der gesamten Rahmen-SW vom MPC5675K (Komodo) auf den MPC5775 (Racerunner) aufbauend auf den Ergebnissen der Basis-SW-Entwicklung und der bestehenden SW für MPC5675K (Komodo, mit Ethernet). Zum Startzeitpunkt der Portierung war keinerlei Unterstützung von Seiten der Basis-SW-Entwicklung bzgl. Ethernets vorhanden. Ausnahme: MCAL (Ethernet) für MPC5775 von Freescale war verfügbar
  • Integration MCAL (Ethernet) MPC5775 (Racerunner)
  • Anpassung TCP/IP-Stack
  • Fehlerbeseitigung
  • Diese Portierung wurde von mir praktisch alleine innerhalb von 2 Monaten durchgeführt.
  • Daneben leistete ich Support für das Bootloader-Team, damit der Bootloader für den Racerunner ebenfalls Ethernet-fähig gemacht werden konnte.
  • Integration Bootloader +Applikation (beides Ethernet) o nach 2 Monaten funktionierte die Diagnose über Ethernet mit den BMW-Tools Diagnoser und EDIABAS.
  • mit ESys konnte dann auch das Racerunner-Steuergerät über Ethernet geflasht und codiert werden.
  • FAT-Tests waren ebenfalls möglich.
  • Übergabe der gesamten Portierung +Know-How an das SW-Entwicklungs-Team
5 Monate
2013-01 - 2013-05

Umstellung der Rahmen-SW

  • Umstellung der Rahmen-SW auf Autosar-4.0 / 4.1
  • Umstellung Diagnose auf Ethernet
  • Durchführung FAT-Tests +Fehlerbeseitigung
1 Jahr 3 Monate
2011-10 - 2012-12

Portierung eines EBI-Interfaces

  • Portierung eines EBI-Interfaces (der Datentransfer erfolgte per DMA) vom MPC5674F (Lyre) auf MPC5675K (Komodo)   (Interface zwischen einem XILINX-FPGA und dem Mikro-Kontroller)
  • Anpassung des Bootloaders an den MPC5675K
  • Überarbeitung Bootloader für Download des FPGA-Codes
  • Adaption CAN/Diagnose, Implementierung einer einfachen Restbus- Simulation (CANalyzer)
  • Fehlerlokalisierung +Beseitigung nach Fahrzeugversuchen an Hand von Trace-Log-Daten

Aus- und Weiterbildung

Aus- und Weiterbildung

Ausbildung: Luft- und Raumfahrttechnik

Abschluss: Dipl.Ing.(Univ)

Kompetenzen

Kompetenzen

Top-Skills

HW-nahe SW-Entwicklung für ARM Cortex-M4 FPGA Design (Intel/Altera) mit VHDL + schematisch +Debuggen mit ModelSim

Schwerpunkte

Fachlicher Schwerpunkt:

Hardwarenahe Software-Entwicklung von Echtzeitsystemen, FPGA-Design

Produkte / Standards / Erfahrungen / Methoden

Profil:

  • Software-Entwicklung / Programmierung
  • Hardware-Entwicklung (FPGA-Design)
  • Engineering / IT-nahe Ingenieurdienstleistungen
  • Festanstellung kommt derzeit nicht in Betracht, nur freiberufliche Mitarbeit
  
Erfahrungen im Bereich:
  • Hardwarenahe Software-Entwicklung von Echtzeitsystemen (embedded Controller im Automotive-/Luft- & Raumfahrt-Bereich) in ANSI-C/ C++/ADA/Pascal/Assembler (PowerPC (Lyre, Leopard, Komodo, RaceRunner),Star12/S12X_CPU, XGATE, Pentium, 68K)
  • FPGA-Desig
    • Altera Cyclone V SoC, Cylone IV GX mit Quartus 13.1, QSYS, VHDL-2008, ModelSim
  • ADA
    • ADAMULTI(GreenHills), Apex, eclipse (hibachi) mit GNAT, ObjectADA
  • C/C++/C#
    • aktuelle, langjährige und intensive Erfahrung mit der IAR-Embedded Workbench (ARM Cortex-M4/M7/A9), ghs, gcc, CodeWarrior, ADAMULTI, WinIdea, Cosmic, CBuilder, MS-Visual-Studio, Borland-C, Microtec, Watcom, CADUL
  • Assembler
    • GNU-Assembler, (PowerPC, Star12X (S12X_CPU, XGATE), 6502, 6805, 680x0, 80x86 (Real-/Protected Mode/FPU/MMU/MMX))
  • Pascal
    • Borland/Delphi/HP/VMS/Perspective
  • Debugger
    • Lauterbach TRACE32 (RaceRunner, Komodo, Lyre, MPC5643L, HCS12X), ADAMULTI (GreenHills), CodeWarrior usw.
  • Durch Studium erworbenes Hintergrundwissen in Physik/ Mathematik/ Maschinenbau/ Thermodynamik/ Gasturbinen/ Flugantriebe/ Flug-/Raummechanik/ Technische Mechanik/ Luft-/Raumfahrttechnik
  • numerische Mathematik (Matrizenrechnung, Finite Elemente (FEM))
  • Hardware-Entwicklung (TTL, EPLD, Microprozessoren
  • Software-Entwicklung von Real-Time-Operating-Systems (rtos12x, RTOSFE, RTOS32)
  • Anwendung von Real-Time-Operating-Systems (INTEGRITY (GreenHills), rtos12x, RTOSFE, RTOS32, pSOS), Targets: FreeScale S12X, PowerPC, x86, Intel Atom
  • Entwicklung von Echtzeitanwendungen (Multi-Threading/Tasking)
  • Software-Entwicklung für embedded Controller (FreeScale MPC5674F, MPC5675K, MPC577N, S12X, Intel Atom, x86)
  • Treiber-Programmierung (CAN, SPI, SCI, UART, APIC, Timer, MMU, COM, LPT, IPX/SPX)
  • Anwendung der COMMON­-ISDN­-API (CAPI) gemäß ETSI-Spezifikation
  • Compilerbau

Methoden:
  • Vector AUTOSAR Configurator/Developer
  • Anwendung Diagnoser Tool v3.0 (Protocol UDS/KWP2000)
  • Strukturierte Analyse/Design (SA-RT/SD) mit Teamwork
  • UML 2.0 mit Rhapsody 7.1
  • Software-Entwicklung nach Vorgehensmodell (V-Modell): Analyse, Design, Implementierung, Modul-/Integrationstest
  • Ereignisgesteuerte, visuelle Programmierung (Windows, CBuilder)

Microsoft Standards:

  • MS-Office (Word, Excel, Access, PowerPoint) mit VB-Programmierung
  • DirectX-SDK, Direct3D 9
  • MS Visual Studio C++ 9.0

Spezialkenntnisse:

  • neuronale Netzwerke
  • Programmierung der Multi-Media-Extension Einheit (MMX) der Pentium-Prozessoren
  • Anwendung des PowerPC-Pipeline-Analyzer von IBM
  • Anwendung des PowerPC-Timing-Simulators MPC7447ALINX86TIME von FreeScale

Betriebssysteme

CP/M
Echtzeitbetriebssysteme
ThreadX, FreeRTOS, osek, INTEGRITY(GreenHills), PikeOS, pSOS, ASAAC-OS
HPUX
MS-DOS
pSOS
SUN OS, Solaris
Unix
VMS
Windows
Windows CE

RTOS-Eigenentwicklungen:

  • rtos12x (FreeScale S12X_CPU, XGATE)
  • RTOSFE(x86, 16-bit Real-Mode)
  • RTOS32 (Intel Atom, Pentium, 32-bit Protected-Mode, inkl. FPU+MMU)

Programmiersprachen

Ada
(ADAMULTI, APEX, GNAT, ObjectADA) +VHDL Experte
Assembler
PowerPC, Star12, S12X (S12X_CPU, XGATE), 6502, 6805, 68020, 80x86, Pentium (Real-/Protected Mode/FPU/MMX), Experte
Basic
C
Experte
C#
C++
CodeWarrior
S12X, PowerPC (MPC5675K, MPC5517G)
DCL
Delphi
Fortran
HPGL, HP PCL
Pascal
VMS/Perspective/HP/Borland
Perl
Entwicklung C-Source-Code Generator aus DOORS-export(XLS)
Powerbuilder
Scriptsprachen
VHDL
für FPGA's: HW-Beschreibung (Synthese) +Simulation (ModelSim)
Visual Objects

Eigenentwicklung:

  • Assembler (6502)
  • Compiler (PASCAL-ähnlich, Zwischencode) + Debugger, erweitert um Funktionen für das Senden/ Empfangen von Diagnose-Botschaften (wurde zur Laufzeit von einem ebenfalls von mir entwickelten Diagnose-Testadapter für das Bildtelefon-II benutzt, um damit programmgesteuert Tests durchzuführen).

Datenbanken

Access
Auch Macros/Visual-Basic

Datenkommunikation

Bus
Treiberentwicklung CAN, SPI, SCI
Ethernet
Automotive, Integration MCAL (Ethernet) MPC5775 (Racerunner), Anpassung TCP/IP-Stack
ISDN
LAN, LAN Manager
parallele Schnittstelle
RS232
TCP/IP
siehe Ethernet
Treiber fuer IPX/SPX als Bestandteil des selbstentwickelten RTOS "RTOSFE".

Hardware

Ascii/X - Terminals
Bus
FPGA: SPI, UART, EBI (Enhanced Bus Interface für PowerPC (z.B.MPC5675K, MPC5517G von Freescale)
Digital
VAX
Echtzeitsysteme
ThreadX, FreeRTOS, OSEK, INTEGRITY(GreenHills), ASAAC-OS (PowerPC), pSOS (68k), rtos12x (Eigenentwicklung für FreeScale S12X), rtos32 (Eigenentwicklung für Intel Atom, 32-bit protected mode), rtosfe (16-bit x86)
embedded Systeme
i.MX6SoloX, ARM Cortex-M3/M4 (STM,Freescale), MPC5775N (RaceRunner), MPC5675K (Komodo), MPC5674F (Lyre), MPC5517G, MPC5643L, MPC5668G, S12XF + XGATE, Intel Atom, PowerPC, 680x0, NEC V25, 6805, 6502
Emulatoren
Segger, PE-Micro, Lauterbach Trace32 (MPC5643L, S12XF), iSystem, HP
Framegrabber
PC-Eye (Eltec) + Eigenentwicklung (z,B. mit FPGA)
Hardware entwickelt
GPU, SDRAM-Controller, TFT-Display-Controller mit FPGA (Cyclone IV/V), EBI-Interface (32 bit) zu PowerPC, 2-Platinen Rechner mit Video-In/Out, Interfcae zum Roboter-Greifarm
HP
Industrie-Roboter
HW-Entwicklung (Interfcae zum Roboter-Greifarm) + Software-Entwicklung
Messgeräte
Logic-Analyzer (selbst entwickelt: FPGA)
Mikrocontroller
ARM Cortex M3/M4, MPC577N, MPC5675K, MPC5674F, MPC5643L, MPC5668G, MPC5517G, Intel Atom, PowerPC, S12XF +XGATE, 6805, 8051, 68020, V25, 80x86
Motorola
PowerPC,Star12, S12X_CPU, XGATE, 68020, 6805
NEC
V25
PC
PLD, FPGA
Altera, Cyclone V SoC, Cyclone IV GX (Dev-Kits: DE1-SoC(Terasic/Altera/ARM), DE2i-150(Terasic/Altera/Intel), DE0-NANO(Terasic/Altera)), MAX-V CPLD, EPM7128 + Design-Software Quartus II 13.1 + ModelSim
Proprietäre HW
16-bit RISC-Core im FPGA (VHDL), diverse 6502-Systeme (Eigenentwicklung)
Sensoren
GPS,IMU
Silicon-Graphics
war Zielsystem fuer TIGER-Simulation
Steuer und Regelsysteme
PID-Regler für PSU (Pilot Sight Unit), Simulator Tiger
SUN
Workstation
VAX
Vektor-/Parallelrechner
FPGA (z.B. Matrizenmultiplikation), Optimierung der Vektor-Funktionen in PowerPC-Assembler, AltiVec
Video Capture Karte
Eltec PC-Eye, Eigenentwicklung embedded Controller mit Video-in/out, später mit FPGA (Eigenentwicklung)

Berechnung / Simulation / Versuch / Validierung

FEM (Finite-Elemente-Methode)
Eigenentwicklung + Veröffentlichung in c't 1988, Heft 5, Seite 100-114
2013,2014:
ModelSim, Überprüfung FPGA-Design, (z.B. Grafik-Accelerator, CPU (XGATE), SDRAM-Controller)

 

2000, EADS, Lenkflugkörper:

Entwicklung einer kompletten SW-Simulations-Umgebung für das Waffen-System Roland.

Idee + anschließende Realisierung wurden zu 100 % von mir durchgeführt: 

  • Simulation der Hardware (Milbus, analog/digital-IO)
  • Simulation der mechanischen/elektrischen Komponenten, Stromversorgung/ Turm/Raketenwerfer
  • Simulation des Flugkörpers (inkl. Simulation des flugmechanischen Verhaltens (Start, Beschleunigung, Flugbahn, Reaktion auf die Steuersignale der Bodenstation (ROLAND))
  • Simulation des Flugziels
  • Aufzeichnung der Simulations-Messdaten in Echtzeit (3 ms)
  • Zu dieser Simulations-Umgebung konnte die originale, operationelle Software unverändert übernommen, compiliert und dazugelinkt werden. Als RTOS wurde das selbst entwickelte RTOS32 verwendet (32-bit Protected-Mode für Pentium Prozessoren)
    In hunderten von simulierten "Flugversuchen" konnte die Qualität der operationellen SW entscheidend verbessert werden (Kosteneinsparung).
  • Vom Einschalten der Waffenanlage, Übergang in den Betriebszustand "Bekämpfen", Aufschalten auf Flugziel, Start des Lenkflugkörpers, usw.. konnte alles originalgetreu simuliert werden.
 
1986, EADS, Militärflugzeuge:
  • Umsetzung einer von der Systemabteilung in ProMod verfassten SW-Anforderung für die Steuerung der Secondary Power Supply (Hilfsturbine (APU), Starten der Haupttriebwerke usw..) des Eurofighters (Jäger-90) in ein ablauffähiges Programmsystem.
  • Um die Funktionen auf dem Simulationsrechner (VAX) nachzuweisen, wurde von mir dazu eine softwaretechnische Simulation der Hardware-Umgebung (HW-I/O, MILBUS, Cockpit, Verhalten der Gearboxen, Triebwerke, ECU, MDP, ...) entwickelt.
  • Mit Hilfe der Simulation konnten z.B. Bauteileausfälle (z.B. Bruch von Wellen), verschiedene Betriebsarten (z.B. Start der Triebwerke mit dem Bodenwagen) und die Reaktionen darauf überprüft werden.

Branchen

Branchen

  • Luft- und Raumfahrt
  • Militärflugzeuge
  • Hubschrauber
  • Lenkflugkörper
  • Autobranche
  • Maschinenbau
  • Softwarehersteller

Einsatzorte

Einsatzorte

München (+100km) Mindelheim (+100km)

Deutschland: bevorzugt Großraum München

nicht möglich

Projekte

Projekte

6 Monate
2019-07 - 2019-12

Drohnen, Steuerung +Transfer Sensordaten

Drohnen, Steuerung +Transfer Sensordaten, nRF52840, ARM Cortex-M4, Bluetooth 5, BLE

  • Aufbau +Inbetriebnahme Entwicklungsumgebung (IAR Embedded Workbench for ARM)
  • FreeRTOS, Integration +Konfiguration +Test
  • Anschluss +Ansteuerung eines sog. E-Paper-Display über SPI, Anpassung SPI-Treiber
  • Implementierung HW-unabhängiger Zwischenschichten über Display-Ansteuerung und FreeRTOS
  • Optimierung E-Paper-Display-Ansteuerung + Test
  • Erstellung Konzept zur universellen Inter-Prozessor-Kommunikation (IPC) zwischen den einzelnen Teilnehmern des Bluetooth-Netzwerkes (BLE-Sensoren, Smartphone, PC mit BLE-Sniffer), als auch komplett innerhalb einer Simulation auf einem Windows/Linux-PC ohne Bluetooth-HW
4 Monate
2019-03 - 2019-06

Batterie Management Unit

Automotive, E-Mobility, SW-Entwicklung im Projekt Batterie Management Unit

  • Aufsetzen Build-Umgebung, TortoiseSVN, Repo, Compiler
  • Analyse SW Architektur
  • Flashen des Zielsystems über CAN und/oder Lauterbach-Debugger
  • Entwicklung Simulationsumgebung für Modultests, da einfache Tests auf dem Zielsystem zu zeitaufwendig
  • Portierung RTE-Umgebung (Autosar) + Simulation auf PC zum Build + Test unter MS-Visual-Studio, dadurch Beschleunigung von SW-Entwicklung +Test um den Faktor 100 (1-2 Sekunden statt 30 Minuten)
  • Entwicklung diverser Module + Test auf Windows-PC
3 Jahre 1 Monat
2016-02 - 2019-02

SW-Entwicklung

Automotive, E-Mobility, SW-Entwicklung, Ladeadapter für einen rein elektrischen Sportwagen

  • Aufbau Entwicklungsumgebung (IAR, Anpassung J-Link Script für Cortex-A9/M4)
  • FreeRTOS, Integration +Test +Konfiguration
  • Implementierung/Anwendung vorhandenen Codes für die Inter-Prozessor-Kommunikation RPMsg für A9 (Linux) / M4 (FreeRTOS)
  • Erstellung Konzept zur universellen Inter-Prozessor-Kommunikation (IPC) zwischen den beiden CPU's (A9/M4) des i.MX6SoloX
  • Entwicklung eines universellen Message-Formats für Kommunikation zwischen den Prozessoren/Threads o Eigen-Entwicklung eines RPMsg-Ersatzes für die IPC-Kommunikation (A9/M4) nur unter FreeRTOS mit Hilfe des MU-Registers des i.MX6SoloX zum Test (A9/M4)auch ohne Linux
  • Installation Qt-Toolchain mit Qt-Creator auf PC mit Linux Ubuntu 14.04 LTS
  • Installation Cross-Compiler/Debugger für ARM-Target in QT-Creator
  • Da der Vector-CAN-Stack für den benutzten Prozessor NXP i.MX6SoloX noch nicht lieferbar war, Eigen-Entwicklung einer Zwischenlösung aufbauend auf den FlexCAN-Modulen von NXP
  • Integration und Inbetriebnahme Vector-CAN-Stack, Konfiguration mit GENy
  • Entwicklung LED-Treiber mit I2C-Interface zum RGB-LED-Controller mit diversen Funktionen wie Blinken, Fading usw..
  • Entwicklung EEPROM-Treiber mit I2C-Interface zum EEPROM
  • Entwicklung Testumgebung über CAN-IsoTp
  • Entwicklung UDS-Funktionalität wie z.B. UDS_Read/WriteDataByIdentifier()
  • Entwicklung diverser Test-Routinen für Test des sog. PWR-Boards
  • Entwicklung PWR-Board-Simulation auf einem eigenen Cortex-M4-Board (FRDM-K64F, NXP) mit Debug-Ausgabe über SPI auf FPGA-Board (DE0-Nano (ALtera/Terasic) +TFT- Display, alles selbstentwickelt, siehe unten)
  • Portierung der gesamten M4-SW auf einen Lade-Adapter mit verändertem Funktionsumfang, anderer CPU (M7) +OS (ThreadX)
  • Bei der Portierung wurde der Vector-CAN-Stack (inkl. IsoTp) durch eine Eigen-Entwicklung ersetzt
  • Realisierung einer OS-Zwischen-Schicht zwischen Applikation und OS (FreeRTOS, ThreadX, Windows)
  • Entwicklung eines Tools (MS Visual-C) zum Export der Signal/Nachrichten-Infos aus DBC-Files in include-Files (C-Syntax) +csv
2 Monate
2015-12 - 2016-01

Automotive, Batterieladestation

Automotive, Batterieladestation, ZigBee, Demo, Aufbau Entwicklungsumgebung (Hard- +und Software)

Hardware:

  • Anschluss ZigBee-Modul (XBee pro) #1 an ein FPGA-Entwicklungsboard De1-SoC (ALtera/Terasic/ARM) mit 2 x Cortex A9 +Linux)
  • Anschluss ZigBee-Modul #2 an ein FPGA-Entwicklungsboard DE0-Nano (ALtera/Terasic)
  • Anschluss von jeweils einem Cortex-M4-Board
  • Die Verbindung zwischen den Cortex-M4-Boards und dem jeweiligem FPGA erfolgt über SPI mit der maximal möglichen Datenrate von 16 MBit/s. 


Kommunikationswege:

  • ZigBee-Modul -> FPGA-UART -> FPGA-SPI -> M4-SPI -> Cortex-M4
  • Cortex-M4 -> M4-SPI -> FPGA-SPI -> FPGA-UART -> ZigBee-Modul
  • Cortex-M4 -> M4-SPI -> FPGA-SPI -> FPGA-GPU -> TFT-Display bzw. VGA
  • ARM Cortex A9 -> "HPS to FPGA Bridge" -> FPGA-GPU -> TFT-Display bzw. VGA
  • sämtliche VHDL-Module (wie z.B.: FPGA-SPI, FPGA-UART, FPGA-GPU, SDRAM-Controller, Video-in/out, GPU (Grafik-Processing-Unit), Logic-Analyzer, Auslesen ADC, usw..) wurden von mir selbst entwickelt.

Ausnahme:

Falls geeignete Module wie z.B. Fifo in der Altera-Lib (MegaWizard) vorhanden waren, wurden diese natürlich verwendet.

Software:

  • IAR Embedded Workbench +rtos MQX-4.1
  • selbstentwickelte Interface-Library zum FPGA
  • Funktionen für Datenübertragung innerhalb eines ZigBee-Netzwerkes (API-Mode)
  • Darstellung der gesendeten/empfangenen ZigBee-Nachrichten über den Cortex-M4 an das FPGA (selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)).
  • Installation Yocto-Linux +Testprogramm auf FPGA-Entwicklungsboard De1-SoC
5 Monate
2015-07 - 2015-11

Low-Level-Design

Automotive, Laser-Scanner, Low-Level-Design, Code-Refactory, Modultests

  • Installation Entwicklungsumgebung (QT, Doxygen, Python)
  • Überarbeitung +Generierung Low-Level-Design Dokumente mit Doxygen aus Sourcecode
  • Überarbeitung +Erweiterung Modultests (C++) bis Code/Branch-Coverage 100%/98% (gcov)erreicht wurde, Verknüpfung mit DOORS-Anforderungen, Gen. Testreport
  • Überarbeitung der C++-Klassen entsprechend PC-Lint-Warnungen
3 Monate
2015-04 - 2015-06

Parkassistenz-System

Automotive, Parkassistenz-System, Source-Code-Generierung aus DOORS-export

  • Installation Entwicklungsumgebung (perl)
  • perl-script Entwicklung für Konvertierung: XLS (DOORS-export) -> XML -> C-Source und XML -> XLS Erzeugte C-Source war MISRA-konform
2 Monate
2015-02 - 2015-03

Parkassistenz-System

Automotive, Parkassistenz-System, Power-PC Controller, HW-nahes Debugging

  • Installation Entwicklungsumgebung (GHS-Compiler, WinIdea, CANoe usw..)
  • Bearbeitung diverser Tickets (Bugfix, QAC, Korrektur Source-Files)
6 Monate
2014-07 - 2014-12

SW-Entwicklung

SVN IAR-Compiler MS-Visual-Studio-2008

Mitarbeit an der SW-Entwicklung für einen Gaszähler (mit ARM Cortex-M3)

  • MISRA-kompatible Portierung der "Testing Framework for C, CUnit" zum Ablauf auf der Zielhardware (ARM Cortex-M3 von STM) als auch   auf einem Windows-PC. Es wurden nur die Funktionen aus CUnit portiert, die auch wirklich benötigt wurden. Zusätzlich wurden Funktionen für die formatierte Ausgabe über die UART-Schnittstelle entwickelt. Vereinfachung (Source-Code-Umfang) gegenüber CUnit-Original: Faktor 20
  • Entwicklung diverser SW-Module +CUnit-Tests (u.a. Timer, UART usw..)
SVN IAR-Compiler MS-Visual-Studio-2008
2 Monate
2014-06 - 2014-07

FPGA-Design

Echtzeitsysteme, FPGA-Design, ZigBee (HW/SW-Entwicklung)

  • Integration eines handelsüblichen ZigBee-Moduls in ein FPGA-Projekt
  • Anschluss USB-Serial-Converter von FTDI an das FPGA zur Konfiguration des ZigBee-Moduls über das Tool XCTU des Herstellers Digi International
  • HW-Entwicklung:
    • UART-Modul in VHDL (FPGA) + HW-Fifo für Nios2
    • Switch zwischen UART-Nios2 +UART-USB
  • SW-Entwicklung:
    • Treiber für UART (230 KB)
    • Funktionen für Datenübertragung innerhalb eines      ZigBee-Netzwerks (API-Mode)
  • die HW wurde 2 x aufgebaut, an jeder HW kann ein TFT-Display zur Datenvisualisierung angeschlossen werden.   Die Text/Grafik-Ein-/Ausgabe erfolgte über den Softcore-Prozessor Nios2 an das FPGA (selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)).
  • Durchführung eines Feldtests zur Bestimmung des max. möglichen Datendurchsatzes +Reichweite
  • der verwendete Softcore-Prozessor Nios2 bootet direkt aus dem EPCS-Flash des FPGA
  • Anschluss des Dev-Boards FRDM-K64F (Kinetis K64, ARM Cortex-M4) von Freescale über die SPI-Schnittstelle (16 MBaud) an das FPGA
  • HW-Entwicklung (VHDL) eines SPI-Moduls (Slave) auf dem FPGA
  • HW-Entwicklung (VHDL, schematisch) zur Koppelung des SPI-Moduls an die selbstentwickelte GPU (Grafik-Processing-Unit, VHDL)
  • SW-Entwicklung (C) eines SPI-Treibers für ARM Cortex-M4
  • SW-Entwicklung (C) diverser Funktionen für die Text+Grafikausgabe über SPI an das FPGA
  • Integration des selbstentwickelten Logic-Analyzers (VHDL) in das FPGA zur Visualisierung der HW-Signale (SPI_MOSI,.. ZigBee UART usw..)
  • HW-Entwicklung (VHDL): Implementierung Touch-Screen-Interface (resistiv) mit Auslesen ADC, Konvertierung in Screen-Koordinaten, Button-Interface usw.. innerhalb des Video-Kontrollers (FPGA) +Interface zum SPI-Kontroller
  • SW-Entwicklung (C): Realisierung SW-Funktionen zum Touch-Screen-Interface
5 Monate
2014-01 - 2014-05

Echtzeitsysteme, FPGA-Design

  • Integration/Aktivierung Softcore-CPU Nios II mit dem Altera Quartus-II Design-Tool Qsys +SW-Boot aus dem EPCS-Flash.
  • Integration/Aktivierung HPS (Hard Processor System = 2x ARM Cortex-A9, 800 Mhz) im Kameraprojekt (FPGA-Entwicklung mit Cyclone-V SoC, Altera) mit dem Altera Quartus-II Design- Tool Qsys.
  • Entwicklung von Interface-Funktionen in ANSI-C auf der HPS-Seite (CPU=ARM Cortex-A9) zum Testen der Kommunikation CPU <-> FPGA.
  • Entwicklung/Integration PCIe-Interface (PCI-Express) mit dem Quartus-II Design-Tool Qsys auf dem FPGA Cyclone-IV GX. (Dieses PCIe-Interface (PCIe x 1, max. 250 MByte/s Duplex) verbindet das FPGA Cyclone-IV GX mit der CPU (Intel Atom)
  • Entwicklung/Anpassung/Integration PCI-Express-Treiber für Win7 und embedded Linux (Yocto)
  • Zum Test des PCIe-Interface wurde des selbstentwickelte Finite-Elemente-Programm verwendet, das die Grafik-Befehle über das PCIe-Interface an die selbstentwickelte GPU (Grafik-Processing-Unit, FPGA) ausgibt. Dieses Testprogramm läuft auf der CPU-Seite (Intel Atom) sowohl unter Windows-7, als auch Linux (Yocto). Auf dem Cyclone-V SoC (ARM Cortex A9) nur unter Linux (Yocto).
  • Das Testprogramm ist übrigens ein mit MS Visual Studio 2008 bzw. gcc erzeugtes Konsolen-Programm, d.h. es werden nicht die entsprechende API von Linux oder Win7 zur Grafikausgabe benutzt. Diese Grafikausgaben gehen über DE2i-150(FPGA Cyclone IV GX + Intel Atom): Intel-Atom -> PCIe -> GPU(FPGA) -> TFT-Display DE1-SoC (FPGA Cyclone V Soc (inkl. ARM Cortex A9)): ARM Cortex A9 -> "HPS to FPGA Bridge" -> GPU(FPGA) -> TFT-Display
  • Integration und Test des selbstentwickelten Realtime-Kernels rtos32 auf dem FPGA-Entwicklungsboard DE2i-150 (Terasic/Altera /Intel). Messen der Datentransferrate zwischen 2 Threads über Message-Queues (Message-Size: 1 KByte, Taskwechselfrequenz: 0,99 MHz, Datentransferrate: 968 MByte/s).
    • Kurzbeschreibung des Echtzeit-Kernels rtos32:
      • läuft im Ring-0, d.h. alternativ zu Win7/Linux
      • Source-Code (> 12000 Zeilen) in x86-Assembler (32-bit protected mode, Speichermodell: FLAT)
      • pre-emptive scheduling (direkte Aktivierung einer wartenden Task aus einer Interrupt-Service-Routine)
    • Intertask-Kommunikation:
      • Events (32 pro Task)
      • Semaphore
      • Message-Queues
    • beliebige Anzahl von SW-Timer
    • Kennzahlen (getestet auf dem FPGA-Entwicklungsboard DE2i-150 (CPU: 1,6 GHz Intel Atom N2600):
      • SetEvents + WaitEvents +Taskwechsel = 0.489 us
      • ReleaseSM + GetSM +Taskwechsel = 0.574 us
      • SendMail + GetMail (1 KByte) +Taskwechsel = 1.009 us
  • Im Einzelnen wurden u.a. folgende Funktionseinheiten, Module (VHDL) entwickelt. Verwendbar sind sie z.B. für die FPGA's Cyclone-IV GX und Cyclone-V SoC. Getestet wurden sie auf den FPGA-Entwicklungsboards DE2i-150 (Terasic/Altera/Intel), DE1-SoC (Terasic/Altera/ARM), DE0-Nano(Terasic/Altera), dem selbstentwickelten Logic- Analyzer und mit ModelSim):
    • SDRAM-Controller für SDRAM (32Mx16), (100 % Eigenentwicklung, nicht Qsys-Lib!) Die Entwicklung erfolgte mit Hilfe eines VHDL-Simulations-Modell für ein DDR-RAM, das von mir auf SDRAM umgeschrieben wurde, einer Testumgebung +ModelSim:
      • Speichertakt: 125 MHz
      • Datenrate: 240 Myte/s (max. 250 MByte/s theoretisch möglich)
      • Burstmode: 1..256 (variabel)
      • 2-Kanal-FIFO-Interface:
        • XGA-Interface (VGA Video Display), 125 MByte/s
        • GPU (davon 27 x 2 = 54 MByte/s für Video-Signal, verbleiben max. 60 MByte/s für GPU-Befehle wie DrawTo(x,y)
    • cam_video_ctrl
    • Video-Display-Controller für VGA/TFT-RGB-Monitore, stellt neben den Videodaten aus dem SDRAM (125 MByte/s) auch den Inhalt eines Text-Framebuffer dar (Overlay, 128x48 ASCII-Zeichen).
    • cam_gpu_ctrl
      • nimmt die Kamera-Signale (55 MByte/s) aus dem cam_fifo entgegen und sendet sie als Packet an den SDRAM-Controller
      • nimmt die Grafik-Kommandos von der CPU entgegen und überträgt die zu setzenden Pixel an den SDRAM-Controller
    • Entwicklung eines VHDL-Moduls zum Einlesen des Video-Kamera- Signals über ADV7180 (SDTV Video Decoder) inkl. Initialisierung über I2C
    • Entwicklung VHDL-Modul zur Text-Ausgabe auf LCD-Display (2x16)
    • Realisierung (100 % Eigenentwicklung) eines Soft-Core 16-bit RISC Prozessors (ähnlich zum XGATE der Fa. Freescale), 125 MIPS auf FPGA Cyclone-IV (125 Mhz Takt)
    • Entwicklung eines Einfachst-Logik-Analysator zum Testen der FPGA-internen/externen Signale. Sehr geringer Resourcenverbrauch ( < 5 % auf 5CSEMA5F31C6), benötigt kein externes RAM (z.B. SDRAM, SRAM) für die Darstellung der Logik-Signale auf dem Monitor. Komplett unabhängig vom Rest, da eigener Video-Controller usw. Sample-Rate: 8 ns, 16-Kanal, Ausgabe auf VGA/RGB-TFT-Interface
5 Monate
2013-08 - 2013-12

Überarbeitung MemStack

  • Überarbeitung MemStack, RTE-Generierung mit CESSAR
  • Integration, diverse Fehlerbeseitigungen auf Grund der Ergebnisse der FAT-Tests
  • Unterstützung +Einarbeitung neuer SW-Team-Mitglieder
2 Jahre 6 Monate
2011-07 - 2013-12

Automotive-Bereich

Automotive-Bereich, München Mitarbeit an einem Radar-basierten Fahrerassistenz-System in insgesamt 5 Subprojekten

München
2 Monate
2013-06 - 2013-07

Portierung der gesamten Rahmen-SW

  • Portierung der gesamten Rahmen-SW vom MPC5675K (Komodo) auf den MPC5775 (Racerunner) aufbauend auf den Ergebnissen der Basis-SW-Entwicklung und der bestehenden SW für MPC5675K (Komodo, mit Ethernet). Zum Startzeitpunkt der Portierung war keinerlei Unterstützung von Seiten der Basis-SW-Entwicklung bzgl. Ethernets vorhanden. Ausnahme: MCAL (Ethernet) für MPC5775 von Freescale war verfügbar
  • Integration MCAL (Ethernet) MPC5775 (Racerunner)
  • Anpassung TCP/IP-Stack
  • Fehlerbeseitigung
  • Diese Portierung wurde von mir praktisch alleine innerhalb von 2 Monaten durchgeführt.
  • Daneben leistete ich Support für das Bootloader-Team, damit der Bootloader für den Racerunner ebenfalls Ethernet-fähig gemacht werden konnte.
  • Integration Bootloader +Applikation (beides Ethernet) o nach 2 Monaten funktionierte die Diagnose über Ethernet mit den BMW-Tools Diagnoser und EDIABAS.
  • mit ESys konnte dann auch das Racerunner-Steuergerät über Ethernet geflasht und codiert werden.
  • FAT-Tests waren ebenfalls möglich.
  • Übergabe der gesamten Portierung +Know-How an das SW-Entwicklungs-Team
5 Monate
2013-01 - 2013-05

Umstellung der Rahmen-SW

  • Umstellung der Rahmen-SW auf Autosar-4.0 / 4.1
  • Umstellung Diagnose auf Ethernet
  • Durchführung FAT-Tests +Fehlerbeseitigung
1 Jahr 3 Monate
2011-10 - 2012-12

Portierung eines EBI-Interfaces

  • Portierung eines EBI-Interfaces (der Datentransfer erfolgte per DMA) vom MPC5674F (Lyre) auf MPC5675K (Komodo)   (Interface zwischen einem XILINX-FPGA und dem Mikro-Kontroller)
  • Anpassung des Bootloaders an den MPC5675K
  • Überarbeitung Bootloader für Download des FPGA-Codes
  • Adaption CAN/Diagnose, Implementierung einer einfachen Restbus- Simulation (CANalyzer)
  • Fehlerlokalisierung +Beseitigung nach Fahrzeugversuchen an Hand von Trace-Log-Daten

Aus- und Weiterbildung

Aus- und Weiterbildung

Ausbildung: Luft- und Raumfahrttechnik

Abschluss: Dipl.Ing.(Univ)

Kompetenzen

Kompetenzen

Top-Skills

HW-nahe SW-Entwicklung für ARM Cortex-M4 FPGA Design (Intel/Altera) mit VHDL + schematisch +Debuggen mit ModelSim

Schwerpunkte

Fachlicher Schwerpunkt:

Hardwarenahe Software-Entwicklung von Echtzeitsystemen, FPGA-Design

Produkte / Standards / Erfahrungen / Methoden

Profil:

  • Software-Entwicklung / Programmierung
  • Hardware-Entwicklung (FPGA-Design)
  • Engineering / IT-nahe Ingenieurdienstleistungen
  • Festanstellung kommt derzeit nicht in Betracht, nur freiberufliche Mitarbeit
  
Erfahrungen im Bereich:
  • Hardwarenahe Software-Entwicklung von Echtzeitsystemen (embedded Controller im Automotive-/Luft- & Raumfahrt-Bereich) in ANSI-C/ C++/ADA/Pascal/Assembler (PowerPC (Lyre, Leopard, Komodo, RaceRunner),Star12/S12X_CPU, XGATE, Pentium, 68K)
  • FPGA-Desig
    • Altera Cyclone V SoC, Cylone IV GX mit Quartus 13.1, QSYS, VHDL-2008, ModelSim
  • ADA
    • ADAMULTI(GreenHills), Apex, eclipse (hibachi) mit GNAT, ObjectADA
  • C/C++/C#
    • aktuelle, langjährige und intensive Erfahrung mit der IAR-Embedded Workbench (ARM Cortex-M4/M7/A9), ghs, gcc, CodeWarrior, ADAMULTI, WinIdea, Cosmic, CBuilder, MS-Visual-Studio, Borland-C, Microtec, Watcom, CADUL
  • Assembler
    • GNU-Assembler, (PowerPC, Star12X (S12X_CPU, XGATE), 6502, 6805, 680x0, 80x86 (Real-/Protected Mode/FPU/MMU/MMX))
  • Pascal
    • Borland/Delphi/HP/VMS/Perspective
  • Debugger
    • Lauterbach TRACE32 (RaceRunner, Komodo, Lyre, MPC5643L, HCS12X), ADAMULTI (GreenHills), CodeWarrior usw.
  • Durch Studium erworbenes Hintergrundwissen in Physik/ Mathematik/ Maschinenbau/ Thermodynamik/ Gasturbinen/ Flugantriebe/ Flug-/Raummechanik/ Technische Mechanik/ Luft-/Raumfahrttechnik
  • numerische Mathematik (Matrizenrechnung, Finite Elemente (FEM))
  • Hardware-Entwicklung (TTL, EPLD, Microprozessoren
  • Software-Entwicklung von Real-Time-Operating-Systems (rtos12x, RTOSFE, RTOS32)
  • Anwendung von Real-Time-Operating-Systems (INTEGRITY (GreenHills), rtos12x, RTOSFE, RTOS32, pSOS), Targets: FreeScale S12X, PowerPC, x86, Intel Atom
  • Entwicklung von Echtzeitanwendungen (Multi-Threading/Tasking)
  • Software-Entwicklung für embedded Controller (FreeScale MPC5674F, MPC5675K, MPC577N, S12X, Intel Atom, x86)
  • Treiber-Programmierung (CAN, SPI, SCI, UART, APIC, Timer, MMU, COM, LPT, IPX/SPX)
  • Anwendung der COMMON­-ISDN­-API (CAPI) gemäß ETSI-Spezifikation
  • Compilerbau

Methoden:
  • Vector AUTOSAR Configurator/Developer
  • Anwendung Diagnoser Tool v3.0 (Protocol UDS/KWP2000)
  • Strukturierte Analyse/Design (SA-RT/SD) mit Teamwork
  • UML 2.0 mit Rhapsody 7.1
  • Software-Entwicklung nach Vorgehensmodell (V-Modell): Analyse, Design, Implementierung, Modul-/Integrationstest
  • Ereignisgesteuerte, visuelle Programmierung (Windows, CBuilder)

Microsoft Standards:

  • MS-Office (Word, Excel, Access, PowerPoint) mit VB-Programmierung
  • DirectX-SDK, Direct3D 9
  • MS Visual Studio C++ 9.0

Spezialkenntnisse:

  • neuronale Netzwerke
  • Programmierung der Multi-Media-Extension Einheit (MMX) der Pentium-Prozessoren
  • Anwendung des PowerPC-Pipeline-Analyzer von IBM
  • Anwendung des PowerPC-Timing-Simulators MPC7447ALINX86TIME von FreeScale

Betriebssysteme

CP/M
Echtzeitbetriebssysteme
ThreadX, FreeRTOS, osek, INTEGRITY(GreenHills), PikeOS, pSOS, ASAAC-OS
HPUX
MS-DOS
pSOS
SUN OS, Solaris
Unix
VMS
Windows
Windows CE

RTOS-Eigenentwicklungen:

  • rtos12x (FreeScale S12X_CPU, XGATE)
  • RTOSFE(x86, 16-bit Real-Mode)
  • RTOS32 (Intel Atom, Pentium, 32-bit Protected-Mode, inkl. FPU+MMU)

Programmiersprachen

Ada
(ADAMULTI, APEX, GNAT, ObjectADA) +VHDL Experte
Assembler
PowerPC, Star12, S12X (S12X_CPU, XGATE), 6502, 6805, 68020, 80x86, Pentium (Real-/Protected Mode/FPU/MMX), Experte
Basic
C
Experte
C#
C++
CodeWarrior
S12X, PowerPC (MPC5675K, MPC5517G)
DCL
Delphi
Fortran
HPGL, HP PCL
Pascal
VMS/Perspective/HP/Borland
Perl
Entwicklung C-Source-Code Generator aus DOORS-export(XLS)
Powerbuilder
Scriptsprachen
VHDL
für FPGA's: HW-Beschreibung (Synthese) +Simulation (ModelSim)
Visual Objects

Eigenentwicklung:

  • Assembler (6502)
  • Compiler (PASCAL-ähnlich, Zwischencode) + Debugger, erweitert um Funktionen für das Senden/ Empfangen von Diagnose-Botschaften (wurde zur Laufzeit von einem ebenfalls von mir entwickelten Diagnose-Testadapter für das Bildtelefon-II benutzt, um damit programmgesteuert Tests durchzuführen).

Datenbanken

Access
Auch Macros/Visual-Basic

Datenkommunikation

Bus
Treiberentwicklung CAN, SPI, SCI
Ethernet
Automotive, Integration MCAL (Ethernet) MPC5775 (Racerunner), Anpassung TCP/IP-Stack
ISDN
LAN, LAN Manager
parallele Schnittstelle
RS232
TCP/IP
siehe Ethernet
Treiber fuer IPX/SPX als Bestandteil des selbstentwickelten RTOS "RTOSFE".

Hardware

Ascii/X - Terminals
Bus
FPGA: SPI, UART, EBI (Enhanced Bus Interface für PowerPC (z.B.MPC5675K, MPC5517G von Freescale)
Digital
VAX
Echtzeitsysteme
ThreadX, FreeRTOS, OSEK, INTEGRITY(GreenHills), ASAAC-OS (PowerPC), pSOS (68k), rtos12x (Eigenentwicklung für FreeScale S12X), rtos32 (Eigenentwicklung für Intel Atom, 32-bit protected mode), rtosfe (16-bit x86)
embedded Systeme
i.MX6SoloX, ARM Cortex-M3/M4 (STM,Freescale), MPC5775N (RaceRunner), MPC5675K (Komodo), MPC5674F (Lyre), MPC5517G, MPC5643L, MPC5668G, S12XF + XGATE, Intel Atom, PowerPC, 680x0, NEC V25, 6805, 6502
Emulatoren
Segger, PE-Micro, Lauterbach Trace32 (MPC5643L, S12XF), iSystem, HP
Framegrabber
PC-Eye (Eltec) + Eigenentwicklung (z,B. mit FPGA)
Hardware entwickelt
GPU, SDRAM-Controller, TFT-Display-Controller mit FPGA (Cyclone IV/V), EBI-Interface (32 bit) zu PowerPC, 2-Platinen Rechner mit Video-In/Out, Interfcae zum Roboter-Greifarm
HP
Industrie-Roboter
HW-Entwicklung (Interfcae zum Roboter-Greifarm) + Software-Entwicklung
Messgeräte
Logic-Analyzer (selbst entwickelt: FPGA)
Mikrocontroller
ARM Cortex M3/M4, MPC577N, MPC5675K, MPC5674F, MPC5643L, MPC5668G, MPC5517G, Intel Atom, PowerPC, S12XF +XGATE, 6805, 8051, 68020, V25, 80x86
Motorola
PowerPC,Star12, S12X_CPU, XGATE, 68020, 6805
NEC
V25
PC
PLD, FPGA
Altera, Cyclone V SoC, Cyclone IV GX (Dev-Kits: DE1-SoC(Terasic/Altera/ARM), DE2i-150(Terasic/Altera/Intel), DE0-NANO(Terasic/Altera)), MAX-V CPLD, EPM7128 + Design-Software Quartus II 13.1 + ModelSim
Proprietäre HW
16-bit RISC-Core im FPGA (VHDL), diverse 6502-Systeme (Eigenentwicklung)
Sensoren
GPS,IMU
Silicon-Graphics
war Zielsystem fuer TIGER-Simulation
Steuer und Regelsysteme
PID-Regler für PSU (Pilot Sight Unit), Simulator Tiger
SUN
Workstation
VAX
Vektor-/Parallelrechner
FPGA (z.B. Matrizenmultiplikation), Optimierung der Vektor-Funktionen in PowerPC-Assembler, AltiVec
Video Capture Karte
Eltec PC-Eye, Eigenentwicklung embedded Controller mit Video-in/out, später mit FPGA (Eigenentwicklung)

Berechnung / Simulation / Versuch / Validierung

FEM (Finite-Elemente-Methode)
Eigenentwicklung + Veröffentlichung in c't 1988, Heft 5, Seite 100-114
2013,2014:
ModelSim, Überprüfung FPGA-Design, (z.B. Grafik-Accelerator, CPU (XGATE), SDRAM-Controller)

 

2000, EADS, Lenkflugkörper:

Entwicklung einer kompletten SW-Simulations-Umgebung für das Waffen-System Roland.

Idee + anschließende Realisierung wurden zu 100 % von mir durchgeführt: 

  • Simulation der Hardware (Milbus, analog/digital-IO)
  • Simulation der mechanischen/elektrischen Komponenten, Stromversorgung/ Turm/Raketenwerfer
  • Simulation des Flugkörpers (inkl. Simulation des flugmechanischen Verhaltens (Start, Beschleunigung, Flugbahn, Reaktion auf die Steuersignale der Bodenstation (ROLAND))
  • Simulation des Flugziels
  • Aufzeichnung der Simulations-Messdaten in Echtzeit (3 ms)
  • Zu dieser Simulations-Umgebung konnte die originale, operationelle Software unverändert übernommen, compiliert und dazugelinkt werden. Als RTOS wurde das selbst entwickelte RTOS32 verwendet (32-bit Protected-Mode für Pentium Prozessoren)
    In hunderten von simulierten "Flugversuchen" konnte die Qualität der operationellen SW entscheidend verbessert werden (Kosteneinsparung).
  • Vom Einschalten der Waffenanlage, Übergang in den Betriebszustand "Bekämpfen", Aufschalten auf Flugziel, Start des Lenkflugkörpers, usw.. konnte alles originalgetreu simuliert werden.
 
1986, EADS, Militärflugzeuge:
  • Umsetzung einer von der Systemabteilung in ProMod verfassten SW-Anforderung für die Steuerung der Secondary Power Supply (Hilfsturbine (APU), Starten der Haupttriebwerke usw..) des Eurofighters (Jäger-90) in ein ablauffähiges Programmsystem.
  • Um die Funktionen auf dem Simulationsrechner (VAX) nachzuweisen, wurde von mir dazu eine softwaretechnische Simulation der Hardware-Umgebung (HW-I/O, MILBUS, Cockpit, Verhalten der Gearboxen, Triebwerke, ECU, MDP, ...) entwickelt.
  • Mit Hilfe der Simulation konnten z.B. Bauteileausfälle (z.B. Bruch von Wellen), verschiedene Betriebsarten (z.B. Start der Triebwerke mit dem Bodenwagen) und die Reaktionen darauf überprüft werden.

Branchen

Branchen

  • Luft- und Raumfahrt
  • Militärflugzeuge
  • Hubschrauber
  • Lenkflugkörper
  • Autobranche
  • Maschinenbau
  • Softwarehersteller

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.