Qual è un buon riferimento per il driver Ethernet senza un sistema operativo?


8

Presto lavorerò su un'implementazione Ethernet per una funzionalità bare metal (senza sistema operativo) su un processore basato su ARM. Ho una certa familiarità con il modello di driver Ethernet nel libro Driver di dispositivo Linux, ma mi chiedo se ci sia un riferimento per l'implementazione di un driver Ethernet per un SoC eseguito con uno stack di software personalizzato.

Esistono implementazioni di riferimento per i processori di architettura ARM o esistono indicazioni su come implementare un driver Ethernet su un processore ARM?


3
Che tipo di SoC hai in mente? Sospetto che molti forniranno un'implementazione di riferimento se supportano la rete.
Aurora0001

1
Atmel, TI, ecc. Sarà ARM ma non è sicuro di quale fornitore. Hai qualche suggerimento?
netskink,

È difficile dire senza un po 'più di contesto sul tuo caso d'uso. Dai un'occhiata al wiki [hardware] tag per indicazioni su come porre una domanda di selezione hardware , o forse dai un'occhiata a Selezione di un microcontrollore per un progetto di raccolta dati a batteria . Se vuoi un consiglio, sentiti libero di porre un'altra domanda purché includa le tue esigenze!
Aurora0001

6
Come regola generale, è meglio spiegare perché stai facendo qualcosa come parte della tua domanda, piuttosto che porre solo la domanda che hai posto alla fine del processo. Qualcuno potrebbe quindi essere in grado di suggerire un approccio diverso (se hai fatto un'ipotesi imprecisa nel tuo ragionamento).
Sean Houlihane,

Si noti che le soluzioni di rete "integrate" di classe microcontrollore non sono necessariamente ancora più economiche di quelle di piccole dimensioni "a pieno sistema operativo" in esecuzione su chip di materie prime. Entrambi tendono ad essere dolorosi: i piccoli sistemi per essere configurati con i servizi di cui hai bisogno, specialmente se ci sono cambiamenti di metà corso rispetto al requisito originale o qualcosa che non si comporta come pubblicizzato, nel frattempo l'approccio del sistema operativo completo può richiedere molto tempo lottare fino all'essenziale che vuoi, senza componenti o servizi indesiderati rimanenti.
Chris Stratton,

Risposte:


3

È un po 'difficile dire cosa stai cercando quando chiedi il bare metal, in particolare quando non specifichi l'architettura ...

Per un'applicazione incorporata, utilizzando un sistema operativo leggero (a seconda di ciò che consideri un sistema operativo), osserva l' origine mbed per un dispositivo simile a quello a cui sei interessato (supponendo un microcontrollore ARM Cortex-M).

L'ultima documentazione di mbed Network Socket è qui, sebbene non descriva le implementazioni HAL specifiche per i dispositivi (probabilmente fornite dai produttori dei dispositivi).

Questo può essere abbastanza vicino al metallo nudo da usare direttamente. In caso contrario, il fornitore del dispositivo fornirà quasi certamente un'implementazione di esempio di basso livello all'interno del proprio framework.


2
In caso contrario, il fornitore del dispositivo fornirà quasi certamente un'implementazione di esempio di basso livello all'interno del proprio framework. Con molti SBC di fabbricazione cinese, come quelli basati sui chip Allwinner, sei fortunato se ti forniscono un binario Linux funzionante.
Depresso

@DepressedDaniel - L'OP sembra chiedere un SoC che intende integrare in un dispositivo, piuttosto che un SBC pre-costruito basato su una CPU del telefono. Sta anche chiedendo dove cercare prima di selezionare il suo fornitore ....
Sean Houlihane,

1
Sean sembra una buona implementazione di esempio da usare. Contrassegnerò questa risposta come la risposta corretta. In alternativa stavo per guardare qualcosa come freeRTOS ma non ho ancora iniziato a guardare il codice. Sono anche interessato a un wiki, a un documento online oa un libro a questo punto. Qualcosa che potevo leggere prima di saltare al codice. Hai un buon suggerimento anche per quello?
netskink,

@netskink Spiacenti, l'implementazione del driver non è la mia area. Aggiunto un link alla documentazione per l'utente, penso che aiuti.
Sean Houlihane,

1
Grazie Sean. Le tue risposte mi hanno aiutato considerevolmente. Lo apprezzo.
netskink,

4

Se sei sicuro dell'utilizzo di ARM, dai un'occhiata ai driver Ethernet di Keil per ARM . È abbastanza promettente.

RL-TCPnet include diversi driver di rete Ethernet. Questi si trovano nella directory \ Keil \ ARM \ RL \ TCPnet \ Drivers:

  • LAN91C111.C - per il controller Ethernet LAN91C111 SMSC utilizzato sulla scheda di valutazione Phytec phyCore LPC229x.
  • EMAC_SAM7X.C - per il controller Ethernet EMAC su chip Atmel AT91SAM7X utilizzato sulla scheda di valutazione Atmel AT91SAM7X-EK.
  • STR9_ENET.C - per il controller Ethernet ENET su chip ST STR912 utilizzato sulla scheda di valutazione Keil MCBSTR9.
  • LPC23_EMAC.c - per i controller Ethernet EMAC su chip NXP (fondata da Philips) LPC2368 e LPC2378 utilizzati sulla scheda di valutazione Keil MCB2300.
  • LPC24_EMAC.c - per i controller Ethernet EMAC su chip NXP (fondata da Philips) LPC2468 e LPC2478 utilizzati sulla scheda di valutazione Keil MCB2400.
  • LM3S_EMAC.c - per i controller Ethernet EMAC su chip Luminary Micro LM3S6962 e LM3S8962 utilizzati sulle schede di valutazione Luminary Micro EK-LM3S6965 ed EK-LM3S8962.

Come puoi vedere ci sono esempi di driver Ethernet per varie schede di valutazione che hanno chip diversi di produttori diversi. Come Atmel, NXP o ST Microelectonics.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.