Heim Der Blog Blog Details

Beispiele für Embedded-Entwicklungsanwendungen in Automotive-ECUs

September 30 2025
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Hier ist eine praktische, engineering-fokussierte Übersicht, die Sie als Referenz oder Handout verwenden können. Ich habe es konkret gehalten (was man baut, wie es läuft, womit es spricht) und kleine Codesetzen hinzugefügt, wo sie hilfreich sind.

Hier ist eine praktische, engineering-fokussierte Übersicht, die Sie als Referenz oder Handout verwenden können. Ich habe es konkret gehalten (was man baut, wie es läuft, womit es spricht) und kleine Codesetzen hinzugefügt, wo sie hilfreich sind.

Beispiele für Embedded-Entwicklungsanwendungen in Automotive-ECUs

Kurzüberblick (ECU-Landschaft)

  • Netze: CAN/CAN FD, LIN (Karosserie), FlexRay (ältere Chassis-Plattformen), Automotive Ethernet (100/1000BASE-T1, TSN).

  • OS & Stacks: Bare-Metal, AUTOSAR Classic (RTE/BSW/MCAL), AUTOSAR Adaptive (POSIX), FreeRTOS/QNX/Linux (Domain/Infotainment).

  • Safety & Coding: ISO 26262 (ASIL A–D), MISRA C/C++, AUTOSAR C++14, deterministische Planung, Watchdogs, Brown-Out-Schutz, Secure Boot.

  • Tooling: Modellbasiert (Simulink/TargetLink), statische Analyse, HIL/SIL/PIL, MC/DC-Coverage, XCP/CCP zum Kalibrieren.


12 echte Projekte, die man auf ECUs baut

# ECU / Anwendung Regelungsziel Typische Sensoren & Aktoren Netzwerk(e) Safety (ASIL) Häufige HW/OS-Hinweise
1 Motorsteuerung (ECM/EMS) Drehmoment, Emissionen, Fahrbarkeit MAP/MAF, O₂/UEGO, Kurbel-/Nockenwelle, Klopfen; Injektoren, Zündspulen, E-Drossel CAN FD, Automotive Ethernet C–D Lockstep-MCU (RH850/AURIX), Fixed-Point-Regelkreise, harte RT-Fristen
2 Getriebesteuerung (TCU) Schaltqualität, Kupplungsdruck Drehzahlsensoren, Temp., Druck; Magnetventile, Pumpe CAN C–D RT-Scheduler mit ereignis-/zeitgetriggerten Tasks
3 ABS / ESC Radschlupf & Stabilität Raddrehzahl (Hall), IMU, Bremsdruck; Hydraulikmodulator CAN D Schnelle ISR-Kette, Plausibilitätsprüfungen, Degradationsmodi
4 Airbag / SRS Crash-Erkennung & Zündung Beschleunigungs-/Satellitensensoren; Squibs CAN/LIN D Zeitfenster im µs-Bereich, redundante Algorithmen & Strompfade
5 Elektrische Servolenkung (EPS) Lenkunterstützung & Lenkgefühl Drehmoment-/Winkelsensoren, I/V; 3-Phasen-Motor CAN C–D FOC auf MCU (z. B. C2000); Dual-Core-Safety-Überwachung
6 Batteriemanagement (BMS) SoC/SoH, Balancing, Sicherheit Zellspannung/-temp., Packstrom; Schütze, Balancer CAN FD, iso-SPI C–D Kalman/OCV-Modelle, Isolationsüberwachung, NVM-Logging
7 On-Board-Charger & DC/DC PFC, LLC-Regelung, Wirkungsgrad V/I, Temp.; Gate-Treiber, Relais CAN/Ethernet B–C Digitale Regler (PID/DOB), schnelle ADCs, Fault-Latch-Logik
8 ADAS-Domänencontroller Wahrnehmung & Planung Kameras, Radar, LiDAR, GNSS/IMU Ethernet TSN, CAN B–D Heterogene SoCs (CPU+GPU/NPU), POSIX, SOME/IP
9 Karosseriesteuergerät (BCM) Licht, Schlösser, Wischer, IO Tür-/Umfeldsensoren; Treiber, Relais LIN (Slaves), CAN A–B Low-Power-Modi, FOTA/OTA, Wake-on-Bus
10 Gateway / Telematik Routing, Diagnose, OTA Modem/GNSS; Crypto-HSM Ethernet, CAN, DoIP B Firewall, IDS, TLS, Secure Boot & Schlüsselrotation
11 Klimasteuerung (HVAC) Kabinentemp./Feuchte NTC/PTC, Feuchte, Sonneneinstrahlung; Gebläse/ Ventile LIN, CAN A PI/PID-Regler, geräuscharme PWM, Anti-Windup
12 Infotainment / HMI UX, Audio, Grafik Touch, Mikro, Kamera; Verstärker, Display Ethernet AVB, CAN QM/A Linux/QNX, Fast-Boot, Audio-DSP, Power-Domains

Mini-Bausteine (Code, den man wirklich schreibt)

1) Fixed-Point-PID (Q15) für Thermik/Druck/Leerlauf

 

// Q15 Fixed-Point-PID (Ein-/Ausgänge auf 32768 skaliert)
typedef struct { int32_t kp, ki, kd; int32_t iacc; int16_t prev; int16_t out; } pidq15_t;

static inline int16_t pidq15_step(pidq15_t* p, int16_t set, int16_t meas) {
    int16_t e = set - meas;
    int32_t pterm = (p->kp * e) >> 15;
    p->iacc = p->iacc + ((p->ki * e) >> 15);
    int32_t dterm = (p->kd * (e - p->prev)) >> 15;
    p->prev = e;
    int32_t y = pterm + p->iacc + dterm;
    if (y > 32767) y = 32767; else if (y < -32768) y = -32768;
    p->out = (int16_t)y;
    return p->out;
}

2) Periodischer CAN-Sendetask (Tick = 10 ms)

 
void Task_10ms(void) {
    static uint8_t ctr;
    if (++ctr >= 10) { // 100 ms
        ctr = 0;
        Can_PduType pdu = { .id = 0x18FF50E5, .length = 8 };
        uint8_t data[8] = { vehicle_speed_kph, motor_temp_c, 0,0,0,0,0,0 };
        pdu.sdu = data;
        (void)CanIf_Transmit(TX_PDU_STATUS, &pdu);
    }
}

3) UDS-Service 0x22 (ReadDataByIdentifier) – Skizze

 
int uds_read_did(uint16_t did, uint8_t* out, uint8_t* len) {
    uint8_t req[3] = { 0x22, did >> 8, did & 0xFF };
    if (tp_send(req, 3) != OK) return -1;
    uint8_t rsp[64]; uint8_t rlen=0;
    if (tp_recv(rsp, &rlen, 50) != OK) return -2;
    if (rlen < 3 || rsp[0] != 0x62) return -3; // Positive Response erwartet
    *len = rlen - 3; memcpy(out, &rsp[3], *len);
    return 0;
}

Entwicklungsmuster nach ECU-Typ

  • Harte Echtzeitregelung (ECM/TCU/ABS/EPS):
    Zeitgetriggerte Basisrate (z. B. 1 kHz) + interrupt-getriebene Fast-Paths; Fixed-Point-Mathematik; Window-Watchdogs; XCP-Kalibrierung; MC/DC-Tests; redundante Sensorik und Limp-Home-Zustände.

  • Leistungselektronik (OBC/DC-DC):
    Schnelle ADCs + PWM, latenzbegrenzte ISRs, digitale Regler (PI/PID/PR), Soft-Start, Fehlerlatches (OV/UV/OC/OT), galvanische Trennung, thermische Derating-Kennlinien.

  • Batteriemanagement (BMS):
    Präzise ADC/Delta-Sigma-Messung; SoC via Coulomb-Zählung + OCV-Fusion (EKF/UKF); Balancing-Scheduling; Schütz-Sequenzierung; Isolationsfehler-Handling; ausführliche Ereignislogs im NVM.

  • ADAS / Domänencontroller:
    Sensorfusion-Pipelines; DMA/ISP; deterministisches Middleware-Com (SOME/IP, ara::com); Zeitsynchronisation (gPTP/802.1AS); Zustandsüberwachung; Graceful Degradation und Minimal-Risk-Manöver.

  • Karosserie/Komfort & Gateways:
    Low-Power-Zustände (STOP/Standby), Wake-on-Bus/IO; OTA-Manager (A/B-Partition, Rollback); sichere Diagnose (authentifizierte UDS); Multi-Bus-Routing mit Rate-Limiting.


Diagnose, Kalibrierung & OTA

  • UDS (ISO 14229) & OBD-II: DIDs, DTCs, Routinen (0x31), Security Access; OBD-PIDs für Emissionen.

  • Kalibrierung: XCP/CCP via CAN/Ethernet; Parameter haltbar im NVM (Wear-Leveling).

  • Logging: Ringpuffer mit Zeitstempel; Snapshot-Pretrigger bei Fehlern.

  • OTA/FOTA: Signierte Images, Secure-Boot-Kette, Dual-Bank mit atomarem Swap, Delta-Updates, Fail-Safe-Rollback.


Safety- & Cybersecurity-Essentials

  • ISO 26262: HARA → ASIL → Safety Goals → Technische Safety-Anforderungen; Freedom-from-Interference (Zeit/Memory).

  • Sicherheitsgerechtes Design: Redundante Sensoren, Plausibilitätschecks, End-to-End-Schutz, CRCs, Deadline-Monitoring, sichere Zustände.

  • Security by Design: Root-of-Trust, Secure Boot, Code-Signierung, verschlüsselter Speicher, authentifizierte Diagnose, DoIP-Firewalling, regelmäßige Schlüsselrotation.


Modellbasiert & HIL – wiederholbares Vorgehen

  1. Pflanzenmodelle (Motor, Bremse, E-Antrieb, Batterie) → Reglerdesign (Simulink/Stateflow).

  2. Auto-Code der ECU-SWCs (oder manuelles MISRA-C für Kernel).

  3. SIL/PIL für numerische Äquivalenz; Fixed-Point-Skalierung reviewen.

  4. HIL mit echter I/O & Restbus-Simulation (CAN/Eth/LIN).

  5. Kalibrierfahrzyklen (FTP-75, WLTP, Thermalsweeps).

  6. Regression-Pakete: Unit-/Integrationstests, Coverage-Berichte, statische-Analyse-Gates.


Minimaler Projekt-Skeleton (AUTOSAR Classic)

 
/App
  /Swc_EpsAssist (Regellogik, Zustandsautomat)
  /Swc_Diag (UDS-Handler, DTCs)
  /Swc_Cal (Parameter, NVM-Binding)
/Bsw (CanIf, Com, Dcm, NvM, EcuM, WdgM, Dem, MemIf...)
/Mcal (Adc, Gpt, Pwm, Spi, Can, Dio, Port)
/Cfg (ARXML, generierter Code, Linkerskripte)
/Tests (Unit, Integration, HIL-Skripte)
/Tools (Flash, Skripte, Kalibrierung A2L)
 

Häufige Fallstricke & Gegenmaßnahmen

  • Jitter/Overruns: WCET budgetieren, via Trace messen, lange Tasks splitten, ISR-Prioritäten sparsam erhöhen.

  • Fixed-Point-Überlauf: Wertebereiche definieren, Sättigung nutzen, Assertions im Debug-Build.

  • Busüberlastung: CAN-Frames terminieren, Ereignisschwellen einsetzen, Gateway-Policing.

  • NVM-Verschleiß: Wear-Leveling, verzögertes Commit, Power-Loss-sichere Checkpoints.

  • Eckenfälle: Sensor-Freeze/Flicker, negative Temperaturen, niedrige Batteriespannung, Starttransienten.

Ampheo