Hallo, ich suche ein preiswertes µC-Board mit 2 unabhängigen Ethernet-Ports (100MBit/s sollen es schon sein). Des weiteren wären 2 UARTs und ein paar frei zugängliche I/O-Pins wünschenswert (TTL-Pegel für 3,3V oder 2,5V ist bevorzugt). Als CPU werden wohl mindestens 200 MHz erforderlich sein damit die Pakete mit Wire-Speed verarbeitet werden können, das Board soll primär zwischen den beiden Ethernet-Ports eine Art Protokoll-Umwandlung durchführen. Bezüglich der CPU-Architektur bin ich relativ leidenschaftslos, hauptsache es gibt eine vollwertige gcc-Tool-Chain. Falls der Program-Code nicht im RAM liegt sollten 2 MByte reichen, ansonsten gerne mehr. Hier ist ausreichende Performance wohl wichtiger. Ich konnte nirgends was geeignetes finden, das einzigste was angeboten wird sind relativ große professionelle Embedded-Computer mit 2 vollwertigen Ethernet-Ports, aber so groß will ich es nicht, ich suche etwas kleines. Ich hoffe Ihr könnt mir etwas (halbwegs) passendes empfehlen. Grüße Erik
Mir ist kein µC-Board bekannt, dass all diese Ansprüche erfüllt. Wäre ein Raspberry PI mit zusätzlichem USB<->LAN-Adapter im Rahmen des Möglichen?
Erik schrieb: > ich suche ein preiswertes µC-Board mit 2 unabhängigen Ethernet-Ports > (100MBit/s sollen es schon sein). Erik schrieb: > das einzigste was angeboten > wird sind relativ große professionelle Embedded-Computer mit 2 > vollwertigen Ethernet-Ports, aber so groß will ich es nicht, ich suche > etwas kleines. Du widersprichst Dir selbst. Übrigens sind 200 MHz nur beim superskalaren Pentium und Intel NICs ausreichend gewesen, RTL8139 brauchten einen P2-400. Am preiswertesten düftest Du mit Raspberry Pi + 1x USB NIC hinkommen. Im embedded Breich verwendet man sonst SOCs mit 1x Ethernet + 1x Switch-Chip 3-Port. Falls man die Anschlüsse unterscheiden muss macht der Switch-Chip intern (tagged) VLAN.
von TI gibt die Sitara AM335x Prozessoren, sind aber schon fettere Cortex-A8 auf denen ein Linux laufen kann. Es gibt Boards damit, aber die liegen bei 200 US$: http://www.ti.com/tool/tmdsice3359#buy, da bekommt man kleine embedded PC evtl. schon billiger. Oder ein Cortex-M wie LPC4088 oder STM32F7 und ein Wiznet Modul für den 2. Port dran.
HLK-RM04 mit Baseboard. Die MIPS-CPU (von Ralink) laeuft wohl mit 360 MHz Takt. 2x Ethernet + ein paar GPIOs. Bei Modulen/Routern die ebenfalls diesen Chipsatz benutzen, konnte ich max. ca. 4 MByte/s Durchsatz erreichen. Das ist von Wirespeed schon ein Stueck weg. Bei der Beschaffung auf die Groesse von Flash und RAM achten. Besser waere z.B. ein Board mit dem Intel IXP425. 533 MHz und 2 direkt am/im Chip haengende Netzwerkprozessoren erreichen problemlos Wirespeed bei Fastethernet, auch auf beiden Interfaces gleichzeitig. Leider nicht mehr verfuegbar. Fuer beide gibt es funktionierende Ports von OpenWRT. Sicher gibt es aktuelleres, leider auch teureres... Viel Erfolg
Was ist mit dem Banana-Pi in der Routerversion? Der hat 2 ETH, davon einer als 4-Port Switch und 26 GPIO-Pins.
eventuell sowas: https://de.aliexpress.com/item/GL-iNet-6416A-150Mbps-Mini-WiFi-Router-Atheros-AR9331-WiFi-Repeater-Signal-Extender-With-USB-Port/32554397064.html https://de.aliexpress.com/item/Wireless-Router-NEXX-WT3020F-Portable-Mini-Wireless-NAS-Router-AP-Reapeater-300Mbps-USB-Interface-Two-Ethernet/32632555431.html
> Am preiswertesten düftest Du mit Raspberry Pi + 1x USB NIC hinkommen.
Ja, schadstoffstark und leistungsarm.
Hallo, Danke für Eure Antworten! Eine Variante mit einem echten Ethernet-Port und einer zusätzlichen USB/SPI/sonstwas-Schnittstelle kommt nicht in Frage da ich keinen Treiber für USB o.ä. programmieren möchte. Auch die Variante mit einem Ethernet-Port mit VLAN-Tagging und einem Switch erscheint mir eher ungeeignet, zum einen weil ich kaum glaube das die Datenblätter zum Switch-Chip genau genug sind das ich das allein hinkriege und zum anderen können ja die Frames auf den Ethernet-Leitungen bereits Tagging benutzen und doppeltes Tagging geht zwar aber dürfte im Switch-Chip wohl noch mehr Schmerzen verursachen. Ich stelle mir vor das ich mein Programm ohne OS laufen lasse und dieses primär aus den 2 RX-IRQ-Handlern besteht in denen dann jeweils aufs andere Interface gewandelt wird. Die 2 UARTs möchte ich primär für Debug-Zwecke und eventuell für eine spätere Erweiterung um irgendwelchen Klein-Kram. Auf dem Board müssen auch keine echten MAC-Adressen einprogrammiert sein. Auch sonst ist keinerlei nichtflüchtiger Speicher (vom Code-Flash mal abgesehen), keine RTC u.ä. erforderlich. Das 200 MHz nicht reichen wenn ich die Daten von den beiden Ethernet-Controllern manuell holen muss ist mir klar, ich erwarte eigentlich das die Ethernet-Controller die Frames fertig im RAM ablegen und mir dann einen RX-IRQ geben, und das zum Senden dem Controller nur gesagt werden muss wo im RAM das zu sendende Frame liegt (Scatter-Gatter o.ä. ist nicht erforderlich da ich keine MMU o.ä. benutzen möchte). Ich hab durchaus ein paar µC gefunden die 2 vollwertige MACs haben aber dort ist dann scheinbar immer noch Graphik, USB und alles mögliche andere mit enthalten. Gibt es denn keine kleineren Versionen mit 2 vollwertigen MACs (interne PHYs für 10/100MBit/s wären bevorzugt aber extern geht zur Not auch)? Grüße Erik
Bei Ethernet reden wir oft von TCP/IP. Dieses Protokoll versieht jedes Paket mit einer Prüfsumme. Wenn du die Daten änderst, musst du die Prüfsummen neu berechnen. Und das wiederum stellt ganz erhebliche Anforderungen an die CPU Leistung. http://locklessinc.com/articles/tcp_checksum/
Warum unbedingt ohne OS? Ein Linux bringt alles mit was Du brauchst ... ob nun RasPi, ein Board von pcengines.ch, oder wie angedeutet ein OpenWRT-Router ... Ansonsten evtl in Richtung FPGA gucken, vielleicht wirst Du da eher fündig als in der µC-Ecke.
Hallo, das "Banana-Pi in der Routerversion" sieht zwar echt cool aus aber eine Dual-Core 64Bit-CPU ist irgendwie oversized für mein Projekt. Das EtherCAT beim TI-µC sind keine zwei wirklich unabhängigen MACs, kann man zwar eventuell so betreiben aber ob das insgesamt sauber dokumentiert ist bliebe noch zu prüfen (so tief wollte ich jetzt nicht in die Datenblätter einarbeiten). Die Checksummen von TCP/UDP/IP sollten eigentlich vom Ethernet-Controller automagisch gecheckt (beim empfangen) bzw. berechnet (beim senden) werden, mir ist bewusst das dass sonst alles erheblich CPU-Leistung frisst. Da ein µC mit 2 mal Ethernet wohl nicht unter 500 MHz verfügbar ist sollte das aber insgesamt kein Problem darstellen. Und wenn Wire-Speed nur zur Hälfte oder nur für eine Richtung erreicht wird werde ich sicher nicht weinen, aber mehr als eine Ethernet-USB-Krücke möchte ich schon erreichen. Auf das OS kann ich komplett verzichten da ich dessen IP-Stack nicht benutzen möchte sondern die Ethernet-Frames selber empfangen und senden möchte. Auch all die anderen tollen Features die ein OS sonst so zu bieten hat nützen mir bei diesem Projekt eher wenig, ich benötige keine Dateien und kein komplexes Speichermanagement (die MMU soll schon aus Gründen der Performance aus bleiben, für ein simples malloc/free für Bare-Metal-Applications gibt es kleine Libraries) und auch sonst nichts. Meine Ideal-Vorstellung wäre ein simpler µC mit 1 MB internem Flash und 2 MByte internem SRAM (eventuell reichen auch 1 MB) und 2 internen Ethernet-MACs (meinetwegen mit MII-Interfaces zu den externen PHYs) und 2 UARTs und ein paar IO-Ports als Single-Chip-Lösung. Soetwas scheint es bei keinem Hersteller zu geben, selbst bei Atmel ist dann mindestens USB/Graphik/DDR-RAM-Interface/NAND-Flash obligatorisch (was mir zum selber Entwickeln einer Platine zu viel Aufwand/Risiko bedeutet). Ich weiß das es auch FPGAs mit echten CPUs und verschiedener Peripherie gibt aber das ist noch mal teurer und hat noch größere Gehäuse, mal davon abgesehen das ich den FPGA-Logik-Teil für dieses Projekt nicht benötige. Grüße Erik
> Die Checksummen von TCP/UDP/IP sollten eigentlich vom > Ethernet-Controller automagisch gecheckt (beim empfangen) > bzw. berechnet (beim senden) werden Nun, da kannst du lange suchen. Denn die mir bekannten Ethernet Controller kümmern sich bestenfalls um die Prüfsumme vom Ethernet Frame. Jedoch nicht vom IP-Protokoll. Da brauchst du dann schon Controller, die IP können. Also z.B. diese Chips von Wiznet. Aber das ginge nicht in die Richtung, die Dir vorschwebt.
> ein simpler µC mit 1 MB internem Flash und > 2 MByte internem SRAM (eventuell reichen auch 1 MB) Ab 1MB RAM wird bei Digikey die Ergebnisliste sehr übersichtlich
Angebot und Nachfrage, das ist eben eine Kombi die nicht viele brauchen. Mir fallen jetzt auch nicht soviele Geräte ein die zwei Ethernet Ports brauchen und nix an Grafik oder sonstigem. Am ehesten kommen dem doch die genannten Routerboards nahe. Und wenn die soviel Power haben das da auch ein (embedded) Linux drauf läuft dann ist in der Treiberschicht doch schon alles erledigt. Bei EA gibts noch i.MX6/7 Module mit Dual Ethernet, aber da braucht man noch ein Trägerboard mit PHY und den Buchsen. Oder bei Phytec schauen, die haben auch sowas in diese Richtung.
Du solltest unbedingt genauer beschreiben, was für eine "Protokoll-Umwandlung" eigentlich notnwendig ist. Wie Stefan Us schon geschrieben hat, geht man bei Ethernet, wenn man so wie du nichts spiezielles dazu sagt, meist davon aus, dass es um TCP/IP oder UDP und Konsorten geht. Natürlich kann man in einen Ethernet Frame auch andere Sachen reinpacken. Das ist hier aber wesentlicher Aspekt, weil davon ja abhängt wie viel Rechenleistung notwendig ist und auch wie hoch der Implementierungsaufwand ist. Auch wenn man die Rechenleistung und 98% der anderen Features eines RaPi und eines kompletten OS nicht braucht, ist es nicht unwahrscheinlich dass diese Lösung fertig ist bevor du mit deiner Bare-Metal Variante überhaupt einen einzigen Frame vom Ethernet Controller geholt hast und mit etwas Pech ist bis dahin nichtmal die Toolchain aufgesetzt. Wenn es da nicht nicht andere zwingende Randbedingungen wie Stromverbrauch, Platz, Ausfallsicherheit, Bootzeit, etc. oder Hobby (aka ich will das einfach so machen) gibt, sollte man den Ansatz überdenken.
Ist Qualcomm/Atheros mittlerweile etwas freizügiger bzgl. Herausgabe von Doku?
Stefan U. schrieb: > Denn die mir bekannten Ethernet Controller kümmern sich bestenfalls um > die Prüfsumme vom Ethernet Frame. Zumindest der im stm32 macht das innerhalb tcp udp und co.
Whitespace schrieb: > und eines kompletten OS nicht braucht, ist es nicht unwahrscheinlich > dass diese Lösung fertig ist bevor du mit deiner Bare-Metal Variante > überhaupt einen einzigen Frame vom Ethernet Controller geholt hast und > mit etwas Pech ist bis dahin nichtmal die Toolchain aufgesetzt Genau das ist es. Wenn er bei den harten Vorgaben bleibt wird das ganze auf ein eigenes Board mit externen/m Ethernetcontroller/n herauslaufen und parallel mit dem µC verbunden. Wiederum ohne OS (auch kein RTOS oder so?) anbinden wird richtig bitter. Dann braucht er vielleicht noch externen Speicher?! Die CPU braucht 200MHz um Frames zu filtern? Was heißt das? So ein Board gibt es nicht. Die Konzepterstellung allein steht schon in keinem Verhältnis zu 80€ für den Banana-Pi-Router. Wenn Du das so "pur" brauchst, dann bau doch ein eigenes Linux-Modul, so dass der ganze Rest wegbleiben kann.
Kannst du bestimmt auch baremetal programmieren, wir nutzen das Teil mit Linux. Als buildsystem verwenden wir ptxdist von pengutronix, das erstellt dir dein rootfs nach deinen wünschen, das kann dann auch minimal groß sein.. wie du magst.. Im Mainline Kernel ist der SOC auch drin.. was will man mehr :) http://www.nxp.com/products/software-and-tools/software-development-tools/i.mx-software-and-tools/i.mx28-evaluation-kit:MCIMX28EVKJ
Ein SAM9X25 hätte schonmal 2 Ethernet MACs. Vllt gibts ja auch nen Devboard für das Teil.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.