Sviluppo driver per switch Ethernet NXP SJA1110

La SJA1110 è una famiglia di quattro SoC switch Ethernet automotive compatibili per pin e software. Il lavoro di driver su questa famiglia non è normale lavoro su driver di rete: il comportamento dello switch è definito da una tabella di configurazione statica che viene caricata sul dispositivo all'inizializzazione, e il layer driver deve corrispondere esattamente a quella tabella. In pratica, la maggior parte dei guasti su questa famiglia nasce da questa discrepanza, non dallo stack Ethernet.

Ambito

  • Configurazione statica — porte, VLAN e regole di frame forwarding, mantenute coerenti tra tool di configurazione e codice driver
  • Connessione PHY — RGMII e SGMII, incluso il comportamento di clock e skew che diventa visibile solo sotto carico
  • Integrazione OS — FreeRTOS, Zephyr o bare-metal, sull'RTD SDK NXP o su un layer HAL proprio
  • Debug a livello di registro — accesso MDIO/MDC quando il layer di astrazione nasconde il guasto reale
  • Percorso pacchetti real-time — elaborazione interrupt-driven con comportamento di latenza definito
  • Sincronizzazione temporale — timestamp hardware per PTP / IEEE 1588 e 802.1AS

Dove i problemi si manifestano davvero

Questi sono gli schemi di guasto ricorrenti su questa famiglia, ed è il motivo per cui l'accesso a livello di registro conta più dell'API:

  • Deriva tra configurazione e driver. La configurazione statica viene generata una volta e caricata all'inizializzazione. Se il driver assume una mappa porte, una configurazione VLAN o un set di regole di forwarding diverso, lo switch funziona — ma non come ci si aspetta, e solo con un certo traffico.
  • Clock e skew su SGMII. La sorgente del clock di riferimento decide se la negoziazione del link avviene. Un problema che sembra un guasto PHY è spesso un problema di clock o di budget di skew.
  • Contesa MDIO. Più di un master che accede all'interfaccia di management dello switch produce guasti intermittenti che scompaiono sotto debugger.
  • Comportamento interrupt sotto traffico burst. La latenza media non è il requisito; la latenza worst-case lo è. L'inversione di priorità nel percorso pacchetti è la causa abituale quando una garanzia real-time non regge.
  • Timestamp senza unità di timestamp. Il timestamp hardware tiene solo se il percorso di timestamp dello switch e la configurazione 802.1AS sono effettivamente abilitati e il ritardo del PHY è considerato. Il timestamp software non è un sostituto.
  • Funzioni di sicurezza come problema solo di driver. PHY con MACsec come il TJA1121 richiedono gestione delle chiavi, non solo un driver funzionante.

Toolchain

RTD SDK NXP (Real-time Drivers) per la famiglia SJA1110, il tool di configurazione che genera la tabella caricabile, e un layer device-tree o HAL quando l'integrazione gira su Linux invece che su un RTOS. Dove l'SDK non copre un caso, il driver viene scritto direttamente sul set di registri.

Cosa si riceve

Driver testati e documentati — non una consegna di codice. File di configurazione, le assunzioni del driver e le condizioni di test fanno parte della consegna, perché è esattamente la discrepanza tra configurazione e driver che si rompe più tardi.

FAQ

Il driver DSA standard di Linux supporta la SJA1110?

Un driver Linux NXP archiviato esiste, ma indirizza un dispositivo specifico e una configurazione specifica. Per l'uso in produzione la configurazione statica e il driver devono essere generati e validati insieme: è lì che sta la maggior parte del lavoro.

Il driver può essere portati tra FreeRTOS, Zephyr e bare-metal?

Il layer di accesso hardware sì, l'astrazione OS no. La logica di porte, VLAN e forwarding è indipendente dall'OS; la gestione di interrupt e buffer non lo è. È questa separazione a rendere possibile una porting.

Perché lo switch funziona in laboratorio e fallisce nel veicolo?

Perché il traffico di laboratorio non è il traffico reale. Distribuzione delle dimensioni dei frame, comportamento in burst e percorso di timestamp sono le variabili che cambiano tra un test su banco e un sistema in funzione.

Correlati