Dieser Post baut auf der EthTrcv-Kernserie (Teile 1–4) und dem vorherigen Post, Hardware Deep Dive auf. Dort ging es um APIs, Init-Sequenz, ARXML-Konfiguration, WakeUp-Handling und die physikalischen Interfaces des PHY-Chips — also um das Wissen, das man braucht, um EthTrcv richtig zu konfigurieren.
Dieser Post dreht die Perspektive um: Was tun, wenn die Inbetriebnahme auf echter Hardware nicht funktioniert? In der Praxis läuft ein neues Board selten beim ersten Versuch durch — und die Symptome ähneln sich oft genug, dass eine systematische Checkliste den Unterschied zwischen fünf Minuten und einem ganzen Debugging-Tag macht.
Die folgenden sieben Szenarien sind ungefähr in der Reihenfolge sortiert, in der man ihnen bei einer typischen Inbetriebnahme begegnet: von "gar kein Link" über "Link steht, aber nichts kommt an" bis zu subtileren Problemen wie sporadischen Link-Drops oder einer erhöhten Bitfehlerrate trotz augenscheinlich funktionierendem Link. Für tiefere Register- und Protokolldetails wird gezielt auf die entsprechenden Vertiefungs-Posts der Serie verwiesen, statt Inhalte hier zu duplizieren.
Dieser Post ersetzt keine der beiden Kern-Debugging-Werkzeuge: Oszilloskop/Logic-Analyzer für die elektrische Ebene und MDIO-Register-Reads für die PHY-interne Sicht. Er ordnet lediglich zu, welches Werkzeug bei welchem Symptom zuerst zum Einsatz kommen sollte. |
1. Kein Link kommt zustande
Das Basissymptom: EthTrcv_GetLinkState liefert dauerhaft ETHTRCV_LINK_STATE_DOWN,
egal wie lange man wartet. Kein Link-Training, keine Autonegotiation-Aktivität,
nichts. Das ist gleichzeitig das häufigste und das am einfachsten einzugrenzende
Problem, weil die Ursache fast immer auf einer von beiden Seiten der Verbindung liegt
und sich per Register-Vergleich schnell isolieren lässt.
ECU A (Transceiver 1) ECU B (Transceiver 2)
Autoneg: AUS Autoneg: EIN
Speed: 100 Mbit/s fix Speed: Auto
Duplex: Full fix Duplex: Auto
│ │
└──────────────── Twisted Pair ──────────┘
kein gemeinsamer Startpunkt für
Link-Training möglichMögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
Speed/Duplex-Mismatch zwischen beiden Transceivern | Beide Seiten sind fest (nicht per Autoneg) auf unterschiedliche Werte konfiguriert — es gibt keinen gemeinsamen Nenner, auf den sich die Verbindung einigen könnte. |
Ein Transceiver auf Autonegotiation, der andere auf fixem Modus | Ein "half-open" Autoneg-Versuch: die Autoneg-Seite sendet Fast-Link-Pulse (FLP), bekommt aber keine Antwort im erwarteten Format von der fix konfigurierten Seite. Bei 100BASE-T1 gibt es kein FLP-Äquivalent — dort ist diese Kombination noch fataler, weil das gesamte Link-Training-Protokoll auf einer gemeinsamen Startbedingung beruht. |
100BASE-T1 Master/Slave nicht eindeutig konfiguriert (beide Master oder beide Slave) | Beide PHYs initiieren das Link-Training als Taktquelle, oder keiner tut es — in beiden Fällen kommt keine gültige Symbol-Synchronisation zustande. Dieses Szenario ist detailliert in einem eigenen Post behandelt (siehe unten). |
Kabel defekt oder Leitung zwischen den PHYs hardwareseitig fehlerhaft | Unterbrechung, Kurzschluss zwischen den Adern, oder ein Kabel das gar nicht am erwarteten MDI-Pin des PHYs ankommt (z. B. Verpolung bei einem selbstgefertigten Kabelbaum-Prototyp). |
Master/Slave-Rollenkonflikte bei 100BASE-T1 sind ein eigenes, nicht triviales Thema — inklusive ARXML-Parametrierung und den Fallstricken bei automatischer Rollenverhandlung. Dieser Post geht hier bewusst nicht in die Tiefe; die vollständige Behandlung findet sich im Post zur Master/Slave-Konfiguration. |
Mögliche Debugging-Wege
Diagnose-APIs nutzen — Kabeldiagnose (TDR-basiert, vendor-spezifisches Register) starten und das Ergebnis auslesen. Ein sauberes Kabel meldet keine Reflexionen; ein defektes zeigt Short/Open und häufig sogar eine ungefähre Fehlerposition in Metern. Ergänzend lassen sich Loopback-/Testmodes aktivieren, um den PHY selbst vom Kabel zu isolieren und so PHY-Fehler von Kabel-Fehlern zu trennen.
AUTOSAR-Tooling-Konfiguration gegen reale Hardware prüfen — ARXML-Parameter wie
EthTrcvSpeedundEthTrcvDuplexModemüssen mit dem tatsächlich verbauten PHY und dessen Fähigkeiten übereinstimmen. Ein häufiger Fehler: ein Parameter wurde von einer älteren Boardrevision kopiert, die einen anderen PHY-Chip mit anderen Default-Fähigkeiten hatte.EthTrcv_GetDuplexMode/EthTrcv_GetBaudRateauslesen und vergleichen — auf beiden Seiten der Verbindung, wenn beide Seiten unter eigener Kontrolle stehen. Eine Diskrepanz zwischen dem, was konfiguriert wurde, und dem, was der Treiber tatsächlich zurückliefert, zeigt sofort, ob das Problem in der Konfiguration oder im PHY-Zustand liegt.Pin-Straps auslesen — die Hardware-Default-Konfiguration direkt am PHY verifizieren (siehe Exkurs zu Strap-Pins weiter unten), unabhängig von dem, was die Software später per MDIO überschreibt. Wenn Strap und Software-Konfiguration widersprüchlich sind, gewinnt je nach PHY entweder der letzte MDIO-Write oder der Strap-Wert bleibt bis zum nächsten Reset bestehen — das steht im Datenblatt und ist PHY-spezifisch.
Prüfen, ob der Transceiver via
EthTrcv_SetTransceiverModetatsächlich inETH_MODE_ACTIVEgesetzt wurde — ein Transceiver, der im ModusETH_MODE_DOWNverharrt, zeigt exakt dasselbe äußere Symptom wie ein defekter PHY: kein Link, keine Aktivität auf der Leitung. Der Unterschied liegt rein in der Software-Ansteuerung, nicht in der Hardware.Prüfen, ob
ControllerInitdes Eth-Treibers erfolgreich durchgelaufen ist — ein fehlgeschlagener MAC-seitiger Init verhindert den Link genauso zuverlässig wie ein PHY-Problem, zeigt sich aber typischerweise an einer ganz anderen Stelle im Log (Eth-Modul statt EthTrcv-Modul) und wird deshalb in der ersten Fehlersuche gerne übersehen.
2. Link ist aktiv, aber keine Kommunikation möglich
Frustrierender als Szenario 1, weil der offensichtliche Indikator grün ist:
EthTrcv_GetLinkState liefert ETHTRCV_LINK_STATE_ACTIVE, Autonegotiation ist
abgeschlossen, aber es kommen keine Frames an — weder in die eine noch in die andere
Richtung, oder nur sporadisch und unvollständig. Der Link-Layer (PHY-zu-PHY) funktioniert,
aber irgendwo zwischen PHY und MAC geht die eigentliche Nutzlast verloren.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
Speed zwischen MAC und PHY nicht identisch konfiguriert (Software oder Hardware-Strap) | Der Link zwischen den beiden PHYs steht bei z. B. 100 Mbit/s, aber der MAC im SoC erwartet über RGMII einen 1000 Mbit/s-Takt (oder umgekehrt) — das MAC-PHY-Interface läuft mit falscher Taktrate, während das Leitungssignal selbst korrekt ist. |
MII-Interface-Typ (MII/RMII/RGMII) zwischen MAC und PHY nicht identisch konfiguriert | Der PHY ist per Strap oder Software auf RGMII eingestellt, der SoC-MAC-Treiber spricht aber RMII (oder umgekehrt) — unterschiedliche Signalbedeutung auf denselben Pins, in der Praxis komplettes Kauderwelsch auf dem Bus. |
Pin-Straps falsch beschaltet | Der PHY bootet in einer anderen Betriebsart als angenommen, weil ein Pull-up/Pull-down-Widerstand auf dem Board falsch bestückt wurde oder fehlt (siehe Exkurs unten). |
Mode-Pins (z. B. STB_N-artige Standby-Pins) falsch konfiguriert bezüglich Pegel | Der PHY befindet sich in einem reduzierten Betriebsmodus (Standby/Silent), in dem er zwar auf der Leitung einen Link zeigen kann, aber keine oder nur eingeschränkte Daten zum MAC durchreicht. |
Mögliche Debugging-Wege
MII-Interface-Typ beidseitig verifizieren — den tatsächlich verwendeten Interface-Typ sowohl aus der SoC-MAC-Treiberkonfiguration als auch aus dem PHY-Datenblatt bzw. den gelesenen Strap-Pins gegenüberstellen. Diese beiden Konfigurationen werden oft von unterschiedlichen Teams (SoC-BSP vs. PHY-Bring-up) gepflegt und laufen leicht auseinander.
Taktsignale am Interface oszilloskopisch prüfen — bei RGMII die Frequenz von
TXC/RXCmessen und mit der erwarteten Geschwindigkeit abgleichen (125 MHz bei 1 Gbit/s, 25 MHz bei 100 Mbit/s, 2,5 MHz bei 10 Mbit/s). Eine falsche Taktfrequenz ist der eindeutigste Beweis für einen Speed-Mismatch zwischen MAC und PHY.Mode-/Standby-Pins auf ihren tatsächlichen Pegel prüfen — mit Multimeter oder Oszilloskop direkt am Pin, nicht nur in der Schaltplan-Dokumentation. Ein Pin, der laut Schaltplan auf "aktiv" liegen soll, aber durch einen Bestückungsfehler auf dem falschen Potential hängt, ist ein klassischer Board-Bring-up-Fehler.
Rohen Frame-Traffic direkt am MII-Interface mitschneiden — mit einem Logic-Analyzer, der einen MII/RGMII-Decoder unterstützt. Das zeigt unmittelbar, ob überhaupt Bits über das Interface laufen, und falls ja, ob sie als gültige Frames dekodierbar sind — unabhängig davon, was der EthTrcv-Treiber softwareseitig meldet.
Treiber-/Hardware-Konfiguration gegen die tatsächliche PCB-Bestückung prüfen — welches Interface (MII/RMII/RGMII) der Treiber erwartet, ergibt sich implizit aus der konkreten Hardware- und Treiberintegration (es gibt kein eigenes ARXML-Enum dafür); diese Erwartung muss exakt zur Hardware passen, nicht nur zur ursprünglichen Design-Absicht.
Exkurs: Wie funktionieren Strap-Pins?
Weil "falsche Pin-Straps" in mehreren Szenarien dieses Posts als Ursache auftaucht, lohnt sich ein genauerer Blick auf den Mechanismus dahinter.
Viele PHY-Chips sparen sich dedizierte Konfigurationspins für seltene, aber essenzielle Boot-Parameter — stattdessen werden ganz normale I/O-Pins beim Reset "zweckentfremdet" und lesen einen externen Pull-up- oder Pull-down-Widerstand als Konfigurationsbit. Nach dem Reset übernehmen dieselben Pins dann ihre eigentliche Funktion (z. B. als LED-Ausgang, Interrupt-Pin oder GPIO).
VDD (3,3 V)
│
▲ R_pullup (typ. 4,7–10 kΩ)
│
├────────────● PHY-Pin (z. B. Strap-Funktion "PHYAD0")
│
▼ R_pulldown (typ. 4,7–10 kΩ)
│
GND
Nur EINER der beiden Widerstände wird bestückt:
Pull-up bestückt → Pin liest beim Sampling "1"
Pull-down bestückt → Pin liest beim Sampling "0"Der entscheidende Moment ist das Sampling-Window kurz nach dem Deassertieren des Hardware-Resets:
RST_N ──────┐ ┌──────────────────────
└──────────────────────────┘
▲
Strap-Pins werden hier
abgetastet (Sampling-Window,
meist < 1 µs nach Deassert von RST_N)
│
▼
Danach wechseln dieselben Pins in ihre
funktionale Rolle (LED, INT_N, GPIO, ...).
Die Pull-Widerstände sind ab hier für den
Betrieb wirkungslos — sie haben ihre Aufgabe
bereits erledigt.Typische Parameter, die auf diese Weise gestrapt werden:
| Parameter | Typische Strap-Funktion |
|---|---|
PHY-Adresse | Drei bis fünf Pins kodieren die 5-Bit-MDIO-Adresse binär. Jeder Pin trägt ein Bit —
Pull-up = 1, Pull-down = 0. Genau dieser Wert muss mit dem |
MII-Betriebsmodus | Ein oder zwei Pins wählen zwischen MII/RMII/RGMII, sofern der PHY-Chip mehrere Interface-Varianten unterstützt (viele moderne Automotive-PHYs sind fest auf eine Variante ausgelegt und benötigen diesen Strap nicht). |
Master/Slave-Rolle (100BASE-T1) | Ein Pin legt fest, mit welcher Rolle der PHY nach dem Reset startet, bevor Software die Rolle ggf. per MDIO überschreibt (siehe Master/Slave-Post für Details zur Rollenverhandlung). |
Speed-/Autonegotiation-Default | Pins legen den Default-Modus fest, der gilt, bevor |
Ein falsch bestückter Strap-Widerstand ist kein Software-Bug und lässt sich in der Regel nicht per Konfigurationsänderung beheben — er erfordert physisches Rework am Board (Widerstand umlöten) oder eine korrigierte Boardrevision. Manche PHYs bieten zwar ein MDIO-Register, mit dem sich der gestrapte Wert nach dem Boot überschreiben lässt — das ist dann aber ein Workaround für die Werkstatt, keine Serienlösung, und funktioniert nur für die Parameter, die der Hersteller tatsächlich als überschreibbar dokumentiert. |
Wenn der Verdacht auf einen Strap-Fehler besteht: einen der Standard-Register-Reads (PHY-Adresse, Master/Slave-Statusbit) unmittelbar nach dem Reset auswerten und mit dem Schaltplan vergleichen. Weicht der gelesene Wert vom erwarteten Strap ab, ist entweder der Widerstand falsch bestückt, oder ein anderer Treiber auf demselben Pin (z. B. ein zu früh aktiver GPIO) überschreibt den Pegel während des Sampling-Windows. |
3. Link ist instabil / flackert
Der Link kommt hoch, bleibt aber nicht stabil — EthTrcv_GetLinkState wechselt
wiederholt zwischen ACTIVE und DOWN, teils im Sekundentakt, teils nur alle paar
Minuten. Dieses Szenario ist tückischer als ein permanent toter Link, weil es auf der
Werkbank oft nicht reproduzierbar ist und sich erst im Fahrzeugkabelbaum oder unter
Temperaturbelastung zeigt.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
EMV-Störungen (fehlender oder falsch dimensionierter Common-Mode-Filter) | Link-Drops korrelieren zeitlich mit dem Schalten anderer Verbraucher im Fahrzeug (Zündanlage, DC/DC-Wandler, Motoren) — auf der Werkbank mit Labornetzteil oft unauffällig. |
Kabelimpedanz oder -länge außerhalb der Spezifikation | Der Link steht grundsätzlich, aber mit reduzierter Störfestigkeit — kleinste zusätzliche Störungen reichen aus, um das Link-Training kurzzeitig zu unterbrechen. |
Temperatureinfluss | Link ist bei Raumtemperatur stabil, flackert aber im Klimaschrank bei Kälte oder Hitze, weil sich Dämpfung, Impedanz und PHY-interne Timing-Reserven mit der Temperatur verschieben. |
Lockere oder korrodierte Steckverbindung | Mechanisches Wackeln am Steckverbinder verändert den Link-Zustand reproduzierbar; häufig bei Prototyp-Verkabelung oder nach längerer Feldstandzeit durch Kontaktkorrosion. |
Signalqualität am Rand der Spezifikation (Marginal-Link) | Kein einzelner Fehler erkennbar, aber die Störabstandsreserve ist so gering, dass bereits geringe Störungen zum Link-Drop führen — häufig eine Kombination aus mehreren kleinen, für sich genommen unauffälligen Abweichungen. |
Mögliche Debugging-Wege
EthTrcv_GetLinkStatewiederholt pollen und Drop-Zeitpunkte protokollieren — ein einfaches Loggingskript, das den Link-Zustand samt Zeitstempel mitschreibt, liefert die Grundlage für jede weitere Korrelation. Ohne Zeitstempel lässt sich ein EMV-bedingter Drop nicht von einem mechanischen Wackelkontakt unterscheiden.Drop-Zeitpunkte mit anderen Ereignissen korrelieren — Motorstart, Schalten von Relais, Betätigen von Aktoren im selben Kabelbaum. Fällt der Link exakt beim Einschalten eines bestimmten Verbrauchers, ist EMV-Einkopplung der naheliegendste Verdächtige.
RMS-Amplitude bzw. SQI-Werte (Signal Quality Index) auslesen — sofern der PHY diese vendor-spezifischen Diagnoseregister anbietet, liefern sie ein quantitatives Maß für die Signalreserve, statt nur ein binäres "Link up/down". Ein SQI-Wert, der nahe an der Schwelle liegt, bestätigt eine Marginal-Link-Situation, auch wenn der Link im Moment der Messung gerade steht.
Kabeldiagnose (TDR) unter Betriebsbedingungen wiederholen — nicht nur einmalig im Ruhezustand, sondern während der Link aktiv belastet wird und idealerweise unter denselben mechanischen/thermischen Bedingungen, unter denen die Drops auftreten.
Temperaturtests gezielt wiederholen — im Klimaschrank definierte Temperaturrampen fahren und dabei kontinuierlich den Link-Zustand protokollieren, um eine Temperaturschwelle einzugrenzen, ab der die Drops beginnen.
Mechanische Prüfung der Steckverbindung — Steckverbinder gezielt leicht bewegen (innerhalb der spezifizierten Toleranz) während der Link-Zustand beobachtet wird, sowie Sichtprüfung auf Korrosion oder unzureichende Kontaktkraft.
4. PHY reagiert gar nicht auf MDIO-Zugriffe
Ein Sonderfall von Szenario 1, aber mit einer eigenen Fehlerklasse: Nicht nur der Link
steht nicht, sondern schon die Kommunikation mit dem PHY selbst schlägt fehl.
Register-Reads liefern durchgehend denselben, offensichtlich ungültigen Wert —
typischerweise 0xFFFF oder 0x0000 — unabhängig davon, welches Register angesprochen
wird.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
Fehlender Pull-up auf der MDIO-Leitung | MDIO bleibt dauerhaft auf Low-Pegel hängen; alle Reads liefern konsistent |
Reset-Pin nicht oder zu kurz deassertiert | Der PHY befindet sich noch im Reset-Zustand und ignoriert jegliche MDIO-Aktivität — ein Zustand, der softwareseitig oft fälschlich als "PHY tot" interpretiert wird. |
Power-Sequencing-Fehler | Eine oder mehrere Versorgungsdomänen (Core, I/O, MDI-analog) liegen nicht in der vom Datenblatt geforderten Reihenfolge oder mit zu geringem zeitlichem Abstand an — der PHY bootet in einem undefinierten internen Zustand. |
Falsche PHY-Adresse konfiguriert | Die Software spricht eine andere Adresse an als die, auf die der PHY tatsächlich gestrapt ist — der eigentliche PHY antwortet nie, weil er den Adressvergleich im MDIO-Frame nie als Treffer erkennt. |
Mögliche Debugging-Wege
Register-Reads gegen Standardregister wie die PHY-ID prüfen — ein durchgehendes
0xFFFFoder0x0000über mehrere unterschiedliche Register hinweg (nicht nur eines) deutet zuverlässig auf ein Busproblem hin, nicht auf ein Konfigurationsproblem innerhalb des PHYs. Antwortet der PHY dagegen mit einem plausiblen, aber falschen Wert, liegt das Problem eher bei der Adressierung als auf der elektrischen Ebene.Spannungspegel und Power-Sequencing messen — alle relevanten Versorgungsdomänen (siehe Hardware Deep Dive) mit dem Oszilloskop beim Power-On aufzeichnen und die gemessene Reihenfolge sowie die zeitlichen Abstände gegen das Datenblatt prüfen.
Reset-Timing oszilloskopisch prüfen — Dauer des Low-Pegels an
RST_Nsowie den zeitlichen Abstand zwischen Deassertieren des Resets und dem ersten MDIO-Zugriff messen und mit der im Datenblatt geforderten minimalen Boot-Zeit vergleichen.MDIO-Adresse per Pin-Strap-Readback verifizieren — falls der PHY dies unterstützt, die tatsächlich gestrapte Adresse unabhängig von der Software auslesen (z. B. über ein Statusregister, das den Strap-Wert nach dem Boot weiterhin sichtbar hält), statt sich allein auf die Schaltplan-Dokumentation zu verlassen.
Für die register-genaue Diagnose — welches Bit im Basic Status Register was bedeutet, wie Clause 22 gegenüber Clause 45 funktioniert, und eine vollständige Fallstudie zu einem Link, der wegen eines Bestückungsfehlers nicht hochkommt — siehe den eigenen MDIO-Post. Dieser Abschnitt hier bleibt bewusst auf der Ebene "reagiert der Bus überhaupt", die Register-Interpretation im Detail folgt dort. |
5. Zwei PHYs mit gleicher MDIO-Adresse (Adresskonflikt)
Ein Spezialfall, der besonders bei Multi-PHY-Boards (z. B. Gateway-Steuergeräten mit mehreren Ethernet-Ports) auftritt: Zwei oder mehr PHYs teilen sich denselben MDIO-Bus, sind aber versehentlich auf dieselbe 5-Bit-Adresse gestrapt. Beide PHYs "hören" jeden an sie gerichteten Frame und antworten gleichzeitig — mit vorhersehbar chaotischem Ergebnis.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
Identisches Pin-Strapping der PHY-Adresse bei mehreren PHYs am selben Bus | Ein Design- oder Copy-Paste-Fehler im Schaltplan: dieselbe Widerstandsbestückung wurde für zwei PHY-Instanzen übernommen, ohne die Adresse für eine der beiden Instanzen zu verschieben. |
Fertigungs- oder Bestückungsfehler | Der Schaltplan sieht unterschiedliche Adressen vor, aber die tatsächliche Widerstandsbestückung auf dem gefertigten Board weicht davon ab (z. B. vertauschte Bestückungsvarianten zwischen zwei sonst identischen PHY-Footprints). |
Mögliche Debugging-Wege
Inkonsistente oder korrumpierte Register-Reads als Symptom erkennen — ein Adresskonflikt zeigt sich selten als sauberer, eindeutiger Fehler, sondern als unzuverlässiges Verhalten: mal antwortet PHY 1, mal PHY 2, mal überlagern sich beide Antworten zu einem Wert, der zu keinem der beiden passt. Dieses Muster — Werte, die von Read zu Read ohne ersichtlichen Grund wechseln — ist der stärkste Hinweis auf einen Adresskonflikt, im Unterschied zum konsistenten
0xFFFFbei einem reinen Busproblem.Adress-Strap-Pins jedes PHYs einzeln prüfen — für jeden PHY auf dem Board getrennt die gestrapte Adresse anhand des Schaltplans und, falls möglich, per Pin-Messung verifizieren, statt sich auf die ARXML-Konfiguration allein zu verlassen.
PHYs einzeln isolieren und Adresse verifizieren — falls das Board es zulässt, einen der beiden PHYs elektrisch vom MDIO-Bus trennen (z. B. durch Auslöten oder eine bestückbare Trennstelle) und die verbleibende PHY-Adresse gezielt auslesen. Damit lässt sich zweifelsfrei feststellen, welcher PHY auf welcher Adresse tatsächlich antwortet.
Ein Adresskonflikt betrifft nicht nur die beiden konfliktbehafteten PHYs — er kann den gesamten MDIO-Bus so weit stören, dass auch andere PHYs am selben Bus zeitweise unzuverlässig erscheinen, obwohl sie selbst korrekt gestrapt sind. Vor der Fehlersuche an vermeintlich "auch betroffenen" PHYs lohnt es sich daher, zuerst den Adresskonflikt selbst vollständig zu beheben oder den betroffenen PHY physisch vom Bus zu trennen. |
6. WakeUp funktioniert nicht
Das Steuergerät soll über Ethernet aus dem Schlaf geweckt werden, tut es aber nicht — oder es wacht auf, fällt aber sofort wieder in den Schlaf zurück, ohne dass die Applikation je hochläuft. Dieses Szenario ist besonders unangenehm, weil es sich in der Werkstattdiagnose kaum reproduzieren lässt: Das Steuergerät bootet ja grundsätzlich, wenn man es dauerhaft mit Spannung versorgt — das eigentliche Problem zeigt sich nur im Sleep/WakeUp-Zyklus.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
WakeUp-Support im ARXML falsch oder gar nicht konfiguriert |
|
| Wird die Funktion zu früh aufgerufen (vor der EcuM-Validierung), geht der eigentliche WakeUp-Grund verloren, bevor er bestätigt werden kann. Wird sie gar nicht aufgerufen, bleibt das (herstellerspezifisch über MDIO zu löschende) WakeUp-Latch im PHY gesetzt und verhindert den nächsten Tiefschlaf-Übergang. |
WakeUp-Pin oder In-Band-Signal hardwareseitig falsch verdrahtet | Der |
EcuM-WakeUp-Validierung nicht korrekt gemappt | Die ID, die |
Mögliche Debugging-Wege
EthTrcv_CheckWakeupim EcuM-Validierungszyklus debuggen — mit Breakpoint oder Tracing direkt in der Funktion prüfen, ob sie überhaupt aufgerufen wird, ob sie einen gültigen WakeUp-Grund erkennt, und obEcuM_SetWakeupEventmit der erwarteten ID tatsächlich ausgeführt wird, bevorEcuMValidationTimeoutabläuft.WakeUp-Puls hardwareseitig mit dem Oszilloskop prüfen — direkt am
WU-Pin bzw. am MDI-Leitungspaar mitschneiden, ob überhaupt ein Impuls bzw. eine TC10-Pulsfolge ankommt, und ob deren Form/Timing der Spezifikation entspricht. Das trennt zuverlässig "Hardware-Signal kommt nicht an" von "Software erkennt ein ankommendes Signal nicht".EcuM-Mapping prüfen — die Verknüpfung zwischen
EthTrcvWakeupSourceRefim ARXML und der tatsächlich im EcuM konfiguriertenEcuMWakeupSourceZeile für Zeile nachvollziehen, gerade nach Copy-Paste-Konfigurationsänderungen zwischen mehreren Steuergeräte-Varianten.
Der vollständige EcuM-Validierungszyklus — von der Hardware-WakeUp-Quelle über
|
7. Hohe Bitfehlerrate trotz Link Up
Das subtilste der sieben Szenarien: Der Link steht stabil, EthTrcv_GetLinkState
meldet dauerhaft ACTIVE, und grobe Kommunikation funktioniert augenscheinlich —
aber CRC-Fehler, Alignment-Fehler oder Symbol-Fehler häufen sich im Betrieb, ohne dass
die Verbindung komplett zusammenbricht. Für höherschichtige Protokolle äußert sich das
oft nur als gelegentlicher Paketverlust oder als sporadisch erhöhte Latenz durch
Retransmissions — ein Symptom, das leicht auf die falsche Schicht (Applikation statt
Physical Layer) geschoben wird.
Mögliche Ursachen
| Ursache | Erkennungsmerkmal |
|---|---|
Kabel oder Steckverbindung an der Spezifikationsgrenze | Kein harter Fehler, aber eine reduzierte Störabstandsreserve — der Link steht, aber jede zusätzliche Störung erzeugt messbare Symbolfehler statt eines kompletten Ausfalls. |
EMV-Einkopplung | Fehlerrate korreliert mit dem Betrieb bestimmter Verbraucher im Fahrzeug, bleibt aber unterhalb der Schwelle, die zu einem vollständigen Link-Drop führen würde. |
Taktqualität bzw. Jitter auf dem MAC-seitigen Interface außerhalb der Toleranz | Die Leitungsseite (MDI) ist sauber, aber das digitale Interface zwischen MAC und PHY (z. B. RGMII) hat Timing-Reserven, die knapp an oder über der Spezifikationsgrenze liegen — häufig durch ein PCB-Layout, das die geforderte RGMII-Delay-Toleranz nicht einhält. |
Mögliche Debugging-Wege
Fehlerzähler beobachten und mit Lastzuständen korrelieren — CRC-, Alignment- und Symbol-Fehlerzähler regelmäßig auslesen (meist Read-Clear-on-Read, also mit fester Abtastperiode protokollieren) und mit Umgebungsbedingungen wie Motorlast, Temperatur oder Datendurchsatz in Beziehung setzen. Eine Fehlerrate, die mit dem Datendurchsatz skaliert statt konstant zu sein, deutet eher auf ein Timing-Problem am MAC-Interface; eine Fehlerrate, die mit externen Lastwechseln korreliert, eher auf EMV.
Signalqualität über PHY-Diagnoseregister auslesen — SQI und vergleichbare vendor-spezifische Metriken liefern ein quantitatives Bild der Leitungsseite, unabhängig von den reinen Fehlerzählern, und helfen einzugrenzen, ob das Problem auf der Leitungsseite (MDI) oder dem digitalen MAC-Interface liegt.
Loopback-Tests zur Eingrenzung nutzen — durch gezieltes Kurzschließen des Datenpfads an unterschiedlichen Stellen (intern im PHY, extern am MDI) lässt sich feststellen, ob Fehler bereits ohne reale Leitung auftreten (→ Hinweis auf ein MAC-Interface- oder PHY-internes Problem) oder erst mit angeschlossenem Kabel (→ Hinweis auf die Leitungsseite). Details zu den verfügbaren Loopback-Modi und wie man sie über AUTOSAR aktiviert, stehen im eigenen Loopback-Post.
Eine erhöhte, aber nicht kommunikationsverhindernde Bitfehlerrate ist eines der Szenarien,
bei denen sich eine zu aggressive DEM-Debounce-Konfiguration besonders bemerkbar macht:
Die Fehlerrate kann hoch genug sein, um in der Applikation spürbar zu werden, aber zu
niedrig, um |
Zusammenfassung
| Szenario | Kernaussage für Software-Entwickler |
|---|---|
Kein Link kommt zustande | Meist Speed/Duplex- oder Master/Slave-Mismatch — per Register-Vergleich beider Seiten schnell eingrenzbar |
Link aktiv, keine Kommunikation | MAC- und PHY-Seite laufen mit unterschiedlichem Interface-Typ oder Speed — Taktsignale und Strap-Pins direkt prüfen |
Link instabil / flackert | Selten reiner Softwarefehler — EMV, Temperatur und Kabelqualität systematisch mit Zeitstempeln korrelieren |
PHY reagiert nicht auf MDIO | Konsistentes |
MDIO-Adresskonflikt | Inkonsistente, von Read zu Read wechselnde Werte sind das Leitsymptom — PHYs einzeln isolieren zur Bestätigung |
WakeUp funktioniert nicht | Fast immer ein Timing- oder Mapping-Fehler im EcuM-Validierungszyklus, kein reines Hardwareproblem |
Hohe Bitfehlerrate trotz Link Up | Subtilstes Szenario — Fehlerzähler mit Lastzuständen korrelieren, Loopback zur Eingrenzung zwischen MAC-Interface und Leitungsseite nutzen |
Das war die EthTrcv-Serie. Zurück zur Serienübersicht.