Dieser Post baut auf
EthTrcv Teil 2 — API & Initialisierungssequenz
auf. Dort ging es um EthTrcv_Init und den Zustandsautomaten zur Laufzeit.
Bevor die API überhaupt aufgerufen werden kann, muss aber etwas anderes stimmen:
die ARXML-Konfiguration, aus der der Konfigurationsgenerator die EthTrcv_ConfigType-Struktur erzeugt.
Alle Container- und Parameternamen in diesem Post sind 1:1 der offiziellen AUTOSAR CP SWS EthernetTransceiverDriver (Release R25-11) und der AUTOSAR CP SWS EthernetInterface (Release R25-11) entnommen — nicht aus dem Gedächtnis rekonstruiert. Wer selbst nachschlagen will: beide Dokumente sind öffentlich auf autosar.org verfügbar.
BSW-Stacks unterscheiden sich in Details (Vendor Extensions, Namensvarianten bei Post-Build-Konfiguration), aber die hier gezeigten Container- und Parameternamen sind die im Standard definierten. Wer in seinem konkreten Projekt andere Namen sieht, hat es entweder mit einer älteren AUTOSAR-Release oder mit einer Vendor-spezifischen Erweiterung zu tun. |
EthTrcv im AUTOSAR-Konfigurationsmodell
Wie jedes Basic-Software-Modul wird EthTrcv über das AUTOSAR ECU-Configuration-Metamodell
(ECUC) konfiguriert. Der Konfigurationsgenerator liest das ARXML und erzeugt daraus
C-Strukturen — typischerweise EthTrcv_ConfigType mit einer Liste von
Transceiver-Beschreibungen, eine pro physischem PHY.
Die reale Container-Hierarchie sieht so aus:
EcucModuleDef "EthTrcv"
│
├── EthTrcvGeneral (1x, modulweit — EINE Instanz für das gesamte Modul)
│ ├── EthTrcvIndex [0..255] Instance-ID des Moduls selbst
│ ├── EthTrcvDevErrorDetect [bool]
│ ├── EthTrcvMaxTrcvsSupported [uint]
│ ├── EthTrcvWakeUpSupport [enum] gilt für ALLE Transceiver dieser Modulinstanz
│ ├── EthTrcvMainFunctionPeriod [0..1]
│ ├── EthTrcv...Api (mehrere bool) welche API-Funktionen generiert werden
│ └── EthTrcvEcucPartitionRef [0..*]
│
└── EthTrcvConfigSet (1x)
│
└── EthTrcvConfig (1..*) ── ein Container pro Transceiver/PHY
├── EthTrcvIdx [0..255] Pflicht
├── EthTrcvSpeed [enum] Pflicht
├── EthTrcvDuplexMode [enum] Pflicht
├── EthTrcvConnNeg [enum] Pflicht (Auto/Master/Slave/PLCA)
├── EthTrcvEnablePLCA [bool] Pflicht
├── EthTrcvPhysLayerType [enum] optional (0..1)
├── ... (MACsec-, PLCA-Detail-, OA-TC10-WakeUp-Parameter, optional)
│
├── EthTrcvDemEventParameterRefs (0..1)
│ └── ETHTRCV_E_ACCESS ──► Ref auf DemEventParameter
│
├── EthTrcvMgmtInterface (0..1) ── CHOICE-Container: entweder/oder
│ ├── EthTrcvMiiInterface (0..1)
│ │ ├── EthTrcvCtrlIdx [0..255] welcher Eth-Controller für MII-Zugriff
│ │ └── EthTrcvMiiIdx [0..255] Transceiver-Index für EthIf_ReadMii/EthIf_WriteMii
│ └── EthTrcvSwitchInterface (0..1)
│ ├── EthTrcvSwitchPortRef ──► EthSwtPort
│ └── EthTrcvSwitchRef ──► EthSwtConfig
│
└── EthTrcvWakeupMap (0..7)
├── EthTrcvWakeupReason [enum] z. B. ETHTRCV_WUR_PIN
└── EthTrcvWakeupSourceRef ──► EcuMWakeupSourceJeder EthTrcvConfig-Container entspricht genau einem physischen PHY-Chip auf dem PCB.
Ein Steuergerät mit drei Ethernet-Ports (z. B. Gateway mit 100BASE-T1-Backbone
zu drei Domain-Controllern) hat entsprechend drei EthTrcvConfig-Instanzen —
alle unterhalb derselben EthTrcvConfigSet.
|
Pflichtparameter Schritt für Schritt
In EthTrcvConfig — dem Container pro Transceiver — sind fünf Parameter mit
Multiplizität 1 (also zwingend) definiert.
EthTrcvIdx — Transceiver-Index
EthTrcvIdx ist der symbolische Index, unter dem der Transceiver in der API
adressiert wird — jeder API-Aufruf wie EthTrcv_GetLinkState(TrcvIdx, …)
nimmt diesen Wert als ersten Parameter entgegen. Der Konfigurationsgenerator
erzeugt dafür automatisch einen symbolischen Namen (withAuto = true in der Spezifikation).
| Eigenschaft | Beschreibung |
|---|---|
Typ |
|
Bedeutung | Instanz-ID des konfigurierten Transceivers — eindeutig innerhalb der EthTrcv-Modulinstanz |
Multiplizität |
|
|
EthTrcvSpeed — Link-Geschwindigkeit
Legt die Geschwindigkeit des Transceiver-Links in MBit/s fest. Ist
EthTrcvConnNeg = TRCV_CONN_NEG_AUTO gesetzt, ist dieser Wert die für die
Auto-Negotiation beworbene Maximalgeschwindigkeit.
| Enum-Literal | Bedeutung |
|---|---|
| 10 MBit/s |
| 100 MBit/s |
| 1000 MBit/s |
| 2500 MBit/s |
| 5000 MBit/s |
| 10000 MBit/s |
EthTrcvDuplexMode — Duplex-Modus
Legt Voll- oder Halbduplex fest, sofern keine Auto-Negotiation läuft. Bei
EthTrcvConnNeg = TRCV_CONN_NEG_AUTO wird dieser Wert ignoriert.
| Enum-Literal | Bedeutung |
|---|---|
| Vollduplex |
| Halbduplex |
EthTrcvConnNeg — Verbindungsaushandlung
Legt fest, wie sich der Transceiver-Link einigt — inklusive Master/Slave-Rolle bei 100BASE-T1-artigen Single-Pair-PHYs.
| Enum-Literal | Bedeutung |
|---|---|
| Automatische Aushandlung |
| Fester Master (z. B. bei 100BASE-T1/1000BASE-T1) |
| Fester Slave |
| PLCA (Physical Layer Collision Avoidance, relevant bei 10BASE-T1S) |
Ist |
EthTrcvEnablePLCA — Physical Layer Collision Avoidance
Boolescher Schalter für PLCA, relevant bei TRCV_PHYS_LAYER_TYPE_10BASE_T1S.
Ist PLCA aktiviert, müssen zusätzlich die PLCA-Detailparameter
(EthTrcvPhysLayerPlcaLocalNodeId, ..NodeCount, ..TransmitOpportunityTimer,
..MaxBurstCount, ..MaxBurstTimer) konfiguriert werden.
Optionale Parameter im Überblick
Über die fünf Pflichtparameter hinaus definiert EthTrcvConfig eine große Zahl
optionaler (0..1) Parameter — unter anderem:
| Parameter | Zweck |
|---|---|
| Physical-Layer-Typ des Links: |
| Baudrate und Typ auf MAC-Ebene, unabhängig vom Transceiver-Link |
| MACsec-Aktivierung und Bypass-Listen (Ziel-MAC, EtherType, VLAN) für unverschlüsselten Verkehr |
| OA-TC10-konformes Sleep/WakeUp über die Datenleitung (100BASE-T1) — u. a.
|
| Name einer Callout-Funktion, nur gültig wenn |
| Referenz auf einen Icu-Kanal, falls WakeUp-Erkennung über einen Interrupt-Capture-Kanal läuft |
| Ordnet diese konkrete Transceiver-Konfiguration einer ECUC-Partition zu |
Das ist bewusst keine vollständige Liste — allein die MACsec- und PLCA-Parameter umfassen ein Dutzend weiterer optionaler Felder. Die vollständige Referenz liefert Kapitel 10.2.3 der SWS EthernetTransceiverDriver. |
Fehlerreferenzierung: EthTrcvDemEventParameterRefs
Anders als man vielleicht erwartet, definiert der Standard hier nur ein einziges standardisiertes DEM-Event:
| Parameter | Bedeutung |
|---|---|
| Referenz auf ein |
Es gibt in der Spezifikation kein standardisiertes |
MDIO- vs. Switch-Zugriff: EthTrcvMgmtInterface
Einer der am häufigsten missverstandenen Teile der Konfiguration: Es gibt
keinen eigenständigen Parameter für eine MDIO-PHY-Adresse auf Ebene von
EthTrcvConfig. Stattdessen wählt der Choice-Container EthTrcvMgmtInterface,
wie der Transceiver überhaupt angesprochen wird:
| Sub-Container | Bedeutung |
|---|---|
| MII-Zugriff zwischen Ethernet-Controller und Transceiver. Ist dieser Container
konfiguriert, ruft EthTrcv synchron |
| Zugriff über einen Ethernet-Switch. Ist dieser Container konfiguriert, ruft
EthTrcv stattdessen |
EthTrcvMiiInterface enthält genau zwei Parameter:
| Parameter | Bedeutung |
|---|---|
| Welcher Eth-Controller für den MII-Zugriff auf diesen Transceiver verwendet wird |
| Transceiver-Index, der bei jedem |
Die eigentliche MDIO-PHY-Adresse (die 5-Bit-Hardwareadresse nach IEEE 802.3, per
Pin-Strapping am Chip festgelegt) ist im EthTrcv-ECUC-Modell nicht als
eigener Parameter modelliert. Sie ist Teil der Umsetzung des Eth-Treibers, an den
EthIf den |
EthTrcvSwitchInterface referenziert stattdessen direkt Switch-Konfiguration:
| Parameter | Bedeutung |
|---|---|
| Referenz auf den |
| Referenz auf die zugehörige |
WakeUp-Zuordnung: EthTrcvWakeupMap
Bis zu sieben EthTrcvWakeupMap-Instanzen pro Transceiver ordnen einen
WakeUp-Grund einer EcuM-WakeUp-Quelle zu:
| Parameter | Bedeutung |
|---|---|
| Einer von |
| Referenz auf die passende |
Mindestens eine EthTrcvWakeupMap-Instanz ist erforderlich, sobald
EthTrcvWakeUpSupport (in EthTrcvGeneral) nicht ETHTRCV_WAKEUP_NOT_SUPPORTED ist.
Das Zusammenspiel mit EcuM, die WakeUp-Validierung und die Diagnose bei WakeUp-Problemen behandelt Teil 4 der Serie im Detail. |
Referenzierung in EthIf
EthTrcv konfiguriert nur den Transceiver selbst. Die Verknüpfung zum
MAC-Controller läuft ausschließlich über EthIf — und zwar über zwei
Referenzschritte, nicht über einen direkten Verweis:
EthIf
│
├── EthIfConfigSet
│ ├── EthIfController (1..*) ── ein Container pro Eth-Controller
│ │ ├── EthIfCtrlIdx
│ │ ├── EthIfCtrlMtu
│ │ ├── EthIfPhysControllerRef ──► EthIfPhysController (Pflicht)
│ │ ├── EthIfEthTrcvRef (0..1) ──► EthIfTransceiver ★ Schritt 1
│ │ └── EthIfSwitchRefOrPortGroupRef (0..1) ──► EthIfSwitch | EthIfSwitchPortGroup
│ │
│ └── EthIfTransceiver (0..*)
│ ├── EthIfTransceiverIdx
│ ├── EthIfEthTrcvRef (0..1) ──► EthTrcvConfig ★ Schritt 2
│ ├── EthIfCanXLTrcvRef (0..1) (Alternative: CAN-XL-Transceiver)
│ └── EthIfWEthTrcvRef (0..1) (Alternative: Wireless-Ethernet-Transceiver)EthIfController.EthIfEthTrcvRef zeigt nicht direkt auf EthTrcvConfig,
sondern auf einen eigenständigen EthIfTransceiver-Container innerhalb von
EthIf. Erst dessen eigenes EthIfEthTrcvRef (gleicher Parametername, andere
ECUC-ID, anderer Elterncontainer) zeigt schließlich auf den echten
EthTrcvConfig-Container im EthTrcv-Modul.
Der Doppelname ist kein Tippfehler in diesem Post: In der offiziellen Spezifikation
heißt der Parameter tatsächlich in beiden Containern |
Der Grund für diesen Umweg über EthIfTransceiver statt eines direkten
EthIfController → EthTrcvConfig-Verweises: Ein EthIfTransceiver-Container
kann unabhängig von einem konkreten Controller stehen und trägt eigene
Parameter wie EthIfQualifiedUnexpectedLinkDownTime — relevant, wenn das
Steuergerät laut EthTrcvActAsSlavePassiveEnabled als passiver
Kommunikations-Slave agiert.
Vollständiges ARXML-Beispiel
Das folgende Beispiel zeigt eine minimale, aber realistische Konfiguration für
einen einzelnen 100BASE-T1-PHY im MII-Modus, inklusive der zweistufigen
EthIf-Referenzierung. Es ist zur Veranschaulichung vereinfacht (nicht alle
Pflicht-Metainformationen wie VARIANT-Angaben sind ausformuliert), folgt aber
den realen Container- und Parameternamen aus der Spezifikation.
<?xml version="1.0" encoding="UTF-8"?>
<AUTOSAR xmlns="http://autosar.org/schema/r4.0">
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>EcuC</SHORT-NAME>
<ELEMENTS>
<!-- ================= EthTrcv ================= -->
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>EthTrcv</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EthTrcv</DEFINITION-REF>
<CONTAINERS>
<!-- Modulweite Konfiguration -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvGeneral</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvGeneral
</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvGeneral/EthTrcvIndex
</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvGeneral/EthTrcvDevErrorDetect
</DEFINITION-REF>
<VALUE>true</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<!-- Gilt für ALLE EthTrcvConfig-Instanzen dieser Modulinstanz -->
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvGeneral/EthTrcvWakeUpSupport
</DEFINITION-REF>
<VALUE>ETHTRCV_WAKEUP_BY_POLLING</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
<!-- Ein Transceiver == ein PHY-Chip auf dem PCB -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvConfigSet</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet
</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvConfig_Gateway_Port0</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig
</DEFINITION-REF>
<PARAMETER-VALUES>
<!-- Pflicht 1: Transceiver-Index -->
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvIdx
</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<!-- Pflicht 2: Speed -->
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvSpeed
</DEFINITION-REF>
<VALUE>TRCV_SPEED_100</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
<!-- Pflicht 3: Duplex -->
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvDuplexMode
</DEFINITION-REF>
<VALUE>ETHTRCV_DUPLEX_MODE_FULL</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
<!-- Pflicht 4: Verbindungsaushandlung -- 100BASE-T1 Master -->
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvConnNeg
</DEFINITION-REF>
<VALUE>TRCV_CONN_NEG_MASTER</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
<!-- Pflicht 5: PLCA deaktiviert (100BASE-T1, nicht 10BASE-T1S) -->
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvEnablePLCA
</DEFINITION-REF>
<VALUE>false</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<!-- Optional, aber praxisrelevant: Physical-Layer-Typ -->
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvPhysLayerType
</DEFINITION-REF>
<VALUE>TRCV_PHYS_LAYER_TYPE_100BASE_T1</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
</PARAMETER-VALUES>
<SUB-CONTAINERS>
<!-- DEM-Fehlerreferenzierung -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvDemEventParameterRefs</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvDemEventParameterRefs
</DEFINITION-REF>
<REFERENCE-VALUES>
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvDemEventParameterRefs/ETHTRCV_E_ACCESS
</DEFINITION-REF>
<VALUE-REF DEST="DEM-EVENT-PARAMETER">/Dem/DemConfigSet/DEM_EVENT_ETHTRCV_ACCESS</VALUE-REF>
</ECUC-REFERENCE-VALUE>
</REFERENCE-VALUES>
</ECUC-CONTAINER-VALUE>
<!-- Choice: MII-Zugriff (Alternative wäre EthTrcvSwitchInterface) -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvMgmtInterface</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-CHOICE-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvMgmtInterface
</DEFINITION-REF>
<SUB-CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvMiiInterface</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvMgmtInterface/EthTrcvMiiInterface
</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvMgmtInterface/EthTrcvMiiInterface/EthTrcvCtrlIdx
</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvMgmtInterface/EthTrcvMiiInterface/EthTrcvMiiIdx
</DEFINITION-REF>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
<!-- WakeUp-Zuordnung: Pin-WakeUp -> EcuM-Quelle -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthTrcvWakeupMap_Pin</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvWakeupMap
</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-TEXTUAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-ENUMERATION-PARAM-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvWakeupMap/EthTrcvWakeupReason
</DEFINITION-REF>
<VALUE>ETHTRCV_WUR_PIN</VALUE>
</ECUC-TEXTUAL-PARAM-VALUE>
</PARAMETER-VALUES>
<REFERENCE-VALUES>
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">
/AUTOSAR/EthTrcv/EthTrcvConfigSet/EthTrcvConfig/EthTrcvWakeupMap/EthTrcvWakeupSourceRef
</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">/EcuC/EcuM/EcuMConfiguration/EcuMWakeupSource_EthTrcv0</VALUE-REF>
</ECUC-REFERENCE-VALUE>
</REFERENCE-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
<!-- ================= EthIf ================= -->
<ECUC-MODULE-CONFIGURATION-VALUES>
<SHORT-NAME>EthIf</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EthIf</DEFINITION-REF>
<CONTAINERS>
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthIfConfigSet</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthIf/EthIfConfigSet
</DEFINITION-REF>
<SUB-CONTAINERS>
<!-- Schritt 1: Controller -> EthIfTransceiver -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthIfController_Port0</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfController
</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfController/EthIfCtrlIdx
</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfController/EthIfCtrlMtu
</DEFINITION-REF>
<VALUE>1500</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
<REFERENCE-VALUES>
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfController/EthIfPhysControllerRef
</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">/EcuC/EthIf/EthIfConfigSet/EthIfPhysController_Port0</VALUE-REF>
</ECUC-REFERENCE-VALUE>
<!-- Schritt 1: zeigt auf EthIfTransceiver, NICHT direkt auf EthTrcvConfig -->
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfController/EthIfEthTrcvRef
</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">/EcuC/EthIf/EthIfConfigSet/EthIfTransceiver_Port0</VALUE-REF>
</ECUC-REFERENCE-VALUE>
</REFERENCE-VALUES>
</ECUC-CONTAINER-VALUE>
<!-- Schritt 2: EthIfTransceiver -> EthTrcvConfig -->
<ECUC-CONTAINER-VALUE>
<SHORT-NAME>EthIfTransceiver_Port0</SHORT-NAME>
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfTransceiver
</DEFINITION-REF>
<PARAMETER-VALUES>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-INTEGER-PARAM-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfTransceiver/EthIfTransceiverIdx
</DEFINITION-REF>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
</PARAMETER-VALUES>
<REFERENCE-VALUES>
<!-- Die eigentliche Verknüpfung zum EthTrcv-Modul -->
<ECUC-REFERENCE-VALUE>
<DEFINITION-REF DEST="ECUC-REFERENCE-DEF">
/AUTOSAR/EthIf/EthIfConfigSet/EthIfTransceiver/EthIfEthTrcvRef
</DEFINITION-REF>
<VALUE-REF DEST="ECUC-CONTAINER-VALUE">
/EcuC/EthTrcv/EthTrcvConfigSet/EthTrcvConfig_Gateway_Port0
</VALUE-REF>
</ECUC-REFERENCE-VALUE>
</REFERENCE-VALUES>
</ECUC-CONTAINER-VALUE>
</SUB-CONTAINERS>
</ECUC-CONTAINER-VALUE>
</CONTAINERS>
</ECUC-MODULE-CONFIGURATION-VALUES>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
</AUTOSAR>Jeder |
Typische Konfigurationsfehler
| Fehler | Symptom | Ursache |
|---|---|---|
Falsche |
| Werte weichen von der tatsächlichen Verdrahtung/Board-Variante ab, oder Kopierfehler aus einer anderen Konfiguration |
| Bei 100BASE-T1: kein Link, weil beide Seiten Master oder beide Slave sind | Fehlende Abstimmung zwischen den |
Nur | EthIf initialisiert den Controller, aber die Verbindung zum eigentlichen
| Die zweistufige Referenzkette wurde nur zur Hälfte nachgezogen — ein klassischer Fehler, wenn man den (in vielen Diagrammen vereinfachten) direkten Verweis erwartet |
| EcuM erwartet WakeUp-Fähigkeit für alle Transceiver der Modulinstanz, die ein einzelner verbauter PHY gar nicht hat (oder umgekehrt) | Übersehen, dass dieser Parameter modulweit und nicht pro Transceiver gilt |
Doppelt vergebene | Konfigurationsgenerator meldet Fehler, oder — schlimmer — akzeptiert es und der erste passende Eintrag "gewinnt" zur Laufzeit | Manuelles Anlegen einer neuen |
Keiner dieser Fehler führt zu einem Compile- oder Link-Fehler. Alle zeigen sich erst zur Laufzeit — häufig erst auf dem realen Board, nicht im HIL-Test mit Ersatzhardware. Ein Review der ARXML-Werte gegen das PHY-Datenblatt und den Schaltplan ist deshalb kein optionaler Schritt. |
Serie
| Teil | Titel | Status |
|---|---|---|
1 | ✅ erschienen | |
2 | ✅ erschienen | |
3 | EthTrcv Teil 3 — ARXML-Konfiguration in der Praxis | 📍 dieser Post |
4 | ⏭ nächster Teil |
Zusammenfassung
| Thema | Kernaussage für die Praxis |
|---|---|
Container-Struktur | Ein |
Pflichtparameter |
|
MDIO-/Switch-Zugriff | Läuft über den Choice-Container |
| Liegt in |
EthIf-Referenzierung | Zweistufig: |
Fehlerbild | Nahezu alle Konfigurationsfehler in diesem Modul zeigen sich erst zur Laufzeit auf realer Hardware — nie beim Compilieren |
Weiter in der EthTrcv-Serie: EthTrcv Teil 4 — WakeUp-Handling & Diagnose