Was ist eine gute Referenz für Ethernet-Treiber ohne Betriebssystem?

8

In Kürze werde ich an einer Ethernet-Implementierung für eine Bare-Metal-Funktion (ohne Betriebssystem) auf einem ARM-basierten Prozessor arbeiten. Ich bin mit dem Ethernet-Treibermodell im Buch Linux Device Drivers einigermaßen vertraut, frage mich jedoch, ob es eine Referenz für die Implementierung eines Ethernet-Treibers für einen SoC-Lauf mit einem benutzerdefinierten Software-Stack gibt.

Gibt es Referenzimplementierungen für ARM-Architekturprozessoren oder Anleitungen zur Implementierung eines Ethernet-Treibers auf einem ARM-Prozessor?

Netskink
quelle
3
Welche Art von SoC haben Sie im Sinn? Ich vermute, dass viele eine Referenzimplementierung bereitstellen werden, wenn sie die Vernetzung unterstützen.
Aurora0001
1
Atmel, TI usw. Es wird ARM sein, aber nicht sicher, welcher Anbieter. Hast du irgendwelche Vorschläge?
Netskink
Es ist schwer zu sagen, ohne ein bisschen mehr Kontext über Ihren Anwendungsfall. Schauen Sie sich das [Hardware] -Tag-Wiki an, um zu erfahren, wie Sie eine Frage zur Hardwareauswahl stellen können , oder werfen Sie einen Blick auf Auswählen eines Mikrocontrollers für ein batteriebetriebenes Datenerfassungsprojekt . Wenn Sie jedoch eine Anleitung wünschen, können Sie gerne eine weitere Frage stellen, solange Sie Ihre Anforderungen angeben!
Aurora0001
6
In der Regel ist es besser zu erklären, warum Sie im Rahmen Ihrer Frage etwas tun, als nur die Frage zu stellen, die Sie am Ende Ihres Prozesses erreicht haben. Jemand könnte dann möglicherweise einen anderen Ansatz vorschlagen (wenn Sie in Ihrer Argumentation eine ungenaue Annahme gemacht haben).
Sean Houlihane
Beachten Sie, dass "eingebettete" Netzwerklösungen der Mikrocontroller-Klasse nicht unbedingt immer noch billiger sind als kleine "Vollbetriebssysteme", die auf Standardchips ausgeführt werden. Beides ist in der Regel schmerzhaft - die winzigen Systeme müssen mit den von Ihnen benötigten Diensten konfiguriert werden, insbesondere wenn sich während des Kurses Änderungen gegenüber der ursprünglichen Anforderung ergeben oder wenn sich etwas nicht wie angekündigt verhält, während der vollständige Betriebssystemansatz lange dauern kann Ringen Sie auf das Wesentliche, ohne dass unerwünschte Komponenten oder Services übrig bleiben.
Chris Stratton

Antworten:

3

Es ist ein bisschen schwer zu sagen, wonach Sie suchen, wenn Sie nach Bare Metal fragen, insbesondere wenn Sie die Architektur nicht spezifizieren ...

Suchen Sie für eine eingebettete Anwendung unter Verwendung eines leichtgewichtigen Betriebssystems (je nachdem, was Sie als Betriebssystem betrachten) in der mbed- Quelle nach einem Gerät, das dem Gerät ähnelt, an dem Sie interessiert sind (unter der Annahme eines ARM Cortex-M-Mikrocontrollers).

Die neueste Dokumentation zu mbed Network Sockets finden Sie hier, obwohl darin nicht die gerätespezifischen HAL-Implementierungen beschrieben werden (diese werden wahrscheinlich von den Geräteherstellern beigesteuert).

Dies kann nahe genug sein, um Metall direkt zu verwenden. Andernfalls wird der Gerätehersteller mit ziemlicher Sicherheit eine Beispielimplementierung auf niedriger Ebene in seinem eigenen Rahmen bereitstellen.

Sean Houlihane
quelle
2
Andernfalls wird der Gerätehersteller mit ziemlicher Sicherheit eine Beispielimplementierung auf niedriger Ebene in seinem eigenen Rahmen bereitstellen. Bei vielen in China hergestellten SBCs, wie denen, die auf Allwinner-Chips basieren, haben Sie Glück, wenn sie Ihnen eine funktionierende Linux-Binärdatei bieten.
DepressedDaniel
@DepressedDaniel - Das OP scheint nach einem SoC zu fragen, den er in ein Gerät einbauen möchte, und nicht nach einem vorgefertigten SBC, der auf einer Telefon-CPU basiert. Er fragt auch, wo er suchen soll, bevor er seinen Verkäufer auswählt ...
Sean Houlihane
1
Sean, das sieht nach einer guten Beispielimplementierung aus. Ich werde diese Antwort als die richtige Antwort dafür kennzeichnen. Alternativ wollte ich mir so etwas wie freeRTOS ansehen, aber ich habe noch nicht angefangen, mir Code anzuschauen. Ich interessiere mich an dieser Stelle auch für ein Wiki, ein Online-Dokument oder ein Buch. Etwas, das ich lesen konnte, bevor ich in den Code sprang. Haben Sie auch dafür einen guten Vorschlag?
Netskink
@netskink Sorry, die Treiberimplementierung ist nicht mein Bereich. Es wurde ein Link zur Benutzerdokumentation hinzugefügt. Ich denke, das hilft.
Sean Houlihane
1
Vielen Dank, Sean. Ihre Antworten haben mir sehr geholfen. Ich schätze es.
Netskink
4

Wenn Sie sich sicher sind, ARM zu verwenden, können Sie sich die Ethernet-Treiber von Keil für ARM ansehen . Es ist sehr vielversprechend.

RL-TCPnet enthält mehrere Ethernet-Netzwerktreiber. Diese befinden sich im Verzeichnis \ Keil \ ARM \ RL \ TCPnet \ Drivers:

  • LAN91C111.C - für den SMSC LAN91C111 Ethernet-Controller, der auf der Phytec phyCore LPC229x-Evaluierungskarte verwendet wird.
  • EMAC_SAM7X.C - für den On-Chip-EMAC-Ethernet-Controller Atmel AT91SAM7X, der auf der Evaluierungskarte Atmel AT91SAM7X-EK verwendet wird.
  • STR9_ENET.C - für den On-Chip-ENET-Ethernet-Controller ST STR912, der auf der Keil MCBSTR9-Evaluierungskarte verwendet wird.
  • LPC23_EMAC.c - für die auf der Keil MCB2300-Evaluierungskarte verwendeten On-Chip-EMAC-Ethernet-Controller NPCP (gegründet von Philips) LPC2368 und LPC2378.
  • LPC24_EMAC.c - für die On-Chip-EMAC-Ethernet-Controller LPC2468 und LPC2478 von NXP (gegründet von Philips), die auf der Keil MCB2400-Evaluierungskarte verwendet werden.
  • LM3S_EMAC.c - für die On-Chip-EMAC-Ethernet-Controller Luminary Micro LM3S6962 und LM3S8962, die auf den Evaluierungskarten Luminary Micro EK-LM3S6965 und EK-LM3S8962 verwendet werden.

Wie Sie sehen, gibt es Beispiele für Ethernet-Treiber für verschiedene Evaluierungskarten mit unterschiedlichen Chips verschiedener Hersteller. Wie Atmel, NXP oder ST Microelectonics.

Bence Kaulics
quelle