Forum: Mikrocontroller und Digitale Elektronik 2 Ethernet-Ports an einem Microcontroller


von Roland C. (rcassebohm)


Lesenswert?

Hallo!


Ich suche nach einer Möglichkeit an einem Microcontroller zwei 
vollwertige Ethernet-Ports anzuschließen. D.h. jeder Port soll seine 
eigene MAC-Adresse und IP-Adresse haben und in der Software auch als 
eigene Netzwerke angestuert werden können.

Wenn ich z.B. einen Microcontroller mit einer MAC-Einheit nehme und 
einen 3-Port-Switch-Chip wir z.B. den KSZ8893 anschließe, kann ich 
diesen dann so konfigurieren, das ich die 2 Ports nach außen getrennt 
betreiben kann?

Ich könnte mit vorstellen, dass das über VLAN funktioniert. Aber können 
die Ethernet-Treiber und TCP-Stacks dann auch damit umgehen?


Vielen Dank schon mal für Eure Hilfe!

Roland

von Stefan F. (Gast)


Lesenswert?

Wenn du über einen Switch gehst, hast du etwas anderes, als drei 
separate Ports. Ein Switch ist kein primitiver Dreifachstecker.

Zum Beispiel musst du dann den Switch fragen, wenn du wissen willst, 
welche Link LED's an sind.

> Aber können die Ethernet-Treiber und TCP-Stacks dann auch damit umgehen?

Welche Treiber und welche TCP-Stacks konkret?

von Roland C. (rcassebohm)


Lesenswert?

Stefan Us schrieb:
> Wenn du über einen Switch gehst, hast du etwas anderes, als drei
> separate Ports. Ein Switch ist kein primitiver Dreifachstecker.
>
> Zum Beispiel musst du dann den Switch fragen, wenn du wissen willst,
> welche Link LED's an sind.

So weit ist mir das schon klar. Aber kann man einen Switch so 
konfigurieren, dass die beiden Ports nach außen einzeln angesteuert 
werden können? Also einer ist eth0 und der andere eth1?

>
>> Aber können die Ethernet-Treiber und TCP-Stacks dann auch damit umgehen?
>
> Welche Treiber und welche TCP-Stacks konkret?

Ich bin da noch nicht festgelegt. Kennst Du einen der das kann, was ich 
möchte?

Grüße,
Roland

von derguteweka (Gast)


Lesenswert?

Moin,

Roland Caßebohm schrieb:
> Ich könnte mit vorstellen, dass das über VLAN funktioniert. Aber können
> die Ethernet-Treiber und TCP-Stacks dann auch damit umgehen?

Ja, ich wuerd' mal nicht pauschal ausschliessen, dass der KSZ8893 sowas 
kann. Das laeuft dann ueber sowas aehnliches wie VLAN-Tags, im 
Datenblatt steht sowas von "Special Tagging Mode", das ist hochgradig 
verdaechtig.
Bei Marvell-Switchen gibts auch so was in der Art, da heissts dann 
DSA-Tag:

https://lwn.net/Articles/302333/

Das bedeutet aber nur, dass die Switch-Hardware das prinzipiell kann 
(=in Paeckchen, die reinkommen, einen Tag reinbauen, der der CPU sagt, 
woher die Paeckchen kamen und umgekehrt: aus Paeckchen, die von der CPU 
kommen, entnehmen, an welchen Port sie weitergereicht werden sollen).
Ethernet-Treiber, die das unterstuetzen und nach oben als 2 ETHs 
durchreichen, sind da eher selten out-of-the-box zu finden. Weiterhin 
sollte auch sichergestellt sein, dass die einzelnen Ports nicht zusammen 
auf mehr als die Geschwindigkeit des 3. Ports zur CPU an Datenrate 
kommen...

Gruss
WK

von holger (Gast)


Lesenswert?

>Ich suche nach einer Möglichkeit an einem Microcontroller zwei
>vollwertige Ethernet-Ports anzuschließen.

Es soll Microcontroller geben die zwei MACs haben.

von derguteweka (Gast)


Lesenswert?

holger schrieb:
> Es soll Microcontroller geben die zwei MACs haben.

Und wieviele Ethernet-Ports kann man dann damit erst nachbilden... :-D

Gruss
WK

von Mic R. (microller)


Lesenswert?

Schau mal hier:
http://www.spansion.com/Products/microcontrollers/Pages/search.aspx#ethc=2&pf=4&ps=1&sc=1

Cortex-M3 core incl. 2ch Ethernet. Brauchst aber externen Phy.
MB9BF61x ... oder mit CAN-I/F: MB9BFD1x
Beide sowohl für 3.3V alsauch 5V Design.
Allerdings großes Gehäuse, 144pin oder 176pin

Grüße
Mic Roller

: Bearbeitet durch User
von Roland C. (rcassebohm)


Angehängte Dateien:

Lesenswert?

Danke für Eure Antworten!

Tja, einen Controller mit zwei MACs zu nehmen ist bestimmt ein besserer 
Weg, wenn das nur nicht immer gleich solche Schiffe wären... :-/

Wobei in dem Datasheet vom Axis AX88613 zeigen sie genau solche 
Anwendung. Siehe angehängtes Bild.

Also eigentlich müsste es gehen, aber ob es dafür entsprechende Treiber 
gibt?

Viele Grüße,
Roland

von derguteweka (Gast)


Lesenswert?

Moin,

Roland Caßebohm schrieb:
> Tja, einen Controller mit zwei MACs zu nehmen ist bestimmt ein besserer
> Weg, wenn das nur nicht immer gleich solche Schiffe wären... :-/

Wenn du Angst vor Controllern mit 2 MACs hast, dann ist das nix fuer 
dich. Mit einem externen 3 Port-Switch 2 MACs nachzubilden ist erheblich 
mehr Aufriss.

> Wobei in dem Datasheet vom Axis AX88613 zeigen sie genau solche
> Anwendung. Siehe angehängtes Bild.
>
> Also eigentlich müsste es gehen, aber ob es dafür entsprechende Treiber
> gibt?

Ja, es geht prinzipiell, wenn der Switch eben die entsprechende 
HW-Unterstuetzung liefert. Aber es ist ordentliches Gewurschtel. Und die 
entsprechenden Treiber darfst du selber schreiben oder aus "normalen" 
Treibern aufpeppen, wenn sie dir nicht beim Switchhersteller 
entgegenfallen. Was sehr selten passieren wird...Umso mehr, wenn die 
Prozessoren zu klein sind, um Linux laufen zu lassen.
Alleine die Programmierung des Switches: Das ist ja nicht, wie bei einem 
5 EUR Switch vom Mediamarkt: Anschliessen und wird schon irgendwie 
gehen.
Du musst dir den jeweiligen Linkstatus, usw. regelmaessig aus den 
Registern des Switchs auslesen; du musst dem Switch haarklein erklaeren, 
was er mit welchen Paketen zu tun hat - das geht alles ueber ein 2-Draht 
Interface (ueblicherweise kein I2C), hat also mit den eigentlichen 
ETH-Ports noch ueberhaupt nix zu tun.

Der/Die ETH-Treiber werden dann zusaetzlich noch interessant, wenn du 
irgendwelches Routing zwischen den Ports haben willst...Das sind 
ziemlich dicke Bretter die da gebohrt werden muessen.

Gruss
WK

von Gerd E. (robberknight)


Lesenswert?

Die Doku zu den Micrel-Switch-Bausteinen ist nicht gerade toll und oft 
unvollständig. Das merkt man dann leider erst hinterher. Du bekommst da 
keine schöne Fehlermeldung, sondern es funktioniert einfach nicht und 
dann darfst Du rätseln.

Wenn dieser Teil des Switches mit allen Registern da nicht haarklein 
erklärt ist, würde ich das als dickes Projektrisiko einstufen.

von Amateur (Gast)


Lesenswert?

Ich habe keine Ahnung, wie groß das Datenvolumen ist und wie eilig Du es 
hast, aber schau Dir doch mal den Konzept des AVR-NET-IO von Pollin an.
Der verwendet, wenn ich es richtig verstanden habe, einen I²C 
gekoppelten Netzwerkkontroller. Das müsste auch mit zweien gehen.
Alternativ kannst Du einen "eingebauten" mit einem "externen" I²C Port 
ergänzen.

von Marc S. (marc_s86)


Lesenswert?

Amateur schrieb:
> Ich habe keine Ahnung, wie groß das Datenvolumen ist und wie eilig Du es
> hast, aber schau Dir doch mal den Konzept des AVR-NET-IO von Pollin an.
> Der verwendet, wenn ich es richtig verstanden habe, einen I²C
> gekoppelten Netzwerkkontroller. Das müsste auch mit zweien gehen.
> Alternativ kannst Du einen "eingebauten" mit einem "externen" I²C Port
> ergänzen.

das netio verwendet spi. der TO schreibt aber ja leider kein wort 
darüber was er tun will.. sonst könnte man ihm ja villeicht auch einen 
der ganzen Router SoCs empfehlen bzw ein minimalboard mit einem solchen 
(vocore und so) aber man weiß ja weder wie viel 
speicher/Rechenleistung/Architektur oder sonst was der TO will.

von Stefan F. (Gast)


Lesenswert?

> Kennst Du einen der das kann

Nein.

Willst du denn wirklich zwei Ethernet Ports simulieren, oder genügt es 
schon, zwei IP-Adressen auf einem Port zu haben? Dann wäre die Sache 
nämlich viel einfacher. Das kann jeder billige 12 Euro Switch. Und 
gängige Netzwerk Stacks (wie µIP) entsprechend umzuschreiben, sollte 
kein allzu großer Akt sein.

Ich glaube dann genügt es, einfach zwei Instanzen von µIP parallel zu 
betreiben. Man müsste nur den Zugriff auf die globalen Variablen 
umschreiben, weil µIP eben nicht dafür gedacht ist, dass mehrere 
Instanzen parallel laufen.

Zumindest stelle ich mir das so vor.

von Roland C. (rcassebohm)


Lesenswert?

Hallo zusammen!


Danke nochmal für die vielen zahlreichen guten Antworten!

Es ist tatsächlich so, dass ich noch nicht genau weiß, wo es hingehen 
soll. Im Moment geht es einfach ganz grob darum, einem Gerät zwei 
Ethernet-Schnittstellen zu verpassen, die in zwei getrennten Netzwerken 
hängen.

Eine Schnittstelle um ein Gerät z.B. an ein Firmennetzwerk zu hängen und 
Gerätezustände in einem Webserver darzustellen und die andere um mehrere 
solcher Geräte autark untereinander zu vernetzen.

Ich möchte aber vor allem zunächst die Möglichkeiten ausloten. Auch 
überlege ich ob für mich die richtige Lösung eine Plattform ohne OS, mit 
einem kleinen RTOS oder sogar Embedded Linux ist.


Aber Eure Antworten haben mich dabei schon ein ganzes Stück weiter 
gebracht. Danke!!


Viele Grüße,
Roland

von Max D. (max_d)


Lesenswert?

Bei den Preisen für ein Board mit Embedded-Linux grenzt es doch an 
Masochismus einen anderen Weg zu gehen.
Mit Lin wirfst du einmal deine toolchain zusammen und kannst ab dann 
bequem auf den Resourcen rumwirtschaften...

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Max D. schrieb:
> Bei den Preisen für ein Board mit Embedded-Linux grenzt es doch an
> Masochismus einen anderen Weg zu gehen.

Das hängt von der angestrebten Stückzahl ab. Wenn es nur wenige (100...) 
Stück sind, dann ist ein kleines Embedded-Board wirklich die einfachere 
und günstigere Alternative, sofern nicht irgendwelche anderen 
Anforderungen dagegenstehen (Platz, Stromverbrauch, etc.).

Für ein Projekt, wo die Stückzahl eine Eigenentwicklung auf 
Mikrocontroller-Basis sinnvoll machte, haben wir auch die 
FM3/FM4-Mikrocontroller von Spansion mit zwei Ethernet-MACs eingesetzt. 
Die Software-Unterstützung von Spansion ist sehr gut, aber es ist 
trotzdem einiges an Arbeit.

von Kaj (Gast)


Lesenswert?


von Thomas T. (runout)


Lesenswert?


von Heinz L. (ducttape)


Lesenswert?

Es ist theoretisch möglich, praktisch ist allerdings in nahezu allen 
Fällen eine softwareseitige Lösung handlicher. Einzige Ausnahme hierzu 
wäre, wenn der Traffic eine entsprechende Menge erreicht dass es 
tatsächlich ans Limit dessen geht was die physische Leitung hergibt.

von Roland C. (rcassebohm)


Lesenswert?

Hi Thomas,

der ist auch interessant! Wobei laut Datenblatt sieht das auch danach 
aus, dass der eigentlich eine Ethernet-Schnitstelle mit einem Switch 
hat. Um so mehr wäre es hier auch interessant, ob man die zwei Ports mit 
der Linux-Version, die darauf läuft mit einzeln eth0 und eth1 verwenden 
kann.

Viele Grüße,
Roland

Thomas T. schrieb:
> https://www.olimex.com/Products/OLinuXino/RT5350F/RT5350F-OLinuXino-EVB/
>
> 25€

von Marc S. (marc_s86)


Lesenswert?

der verbaute chip ist der selbe wie beim von mir bereits genannten 
vocore und hat insgesamt 4 Ethernet Schnittstellen+ wlan

von Roland C. (rcassebohm)


Lesenswert?

Christoph Budelmann schrieb:
> Max D. schrieb:
>> Bei den Preisen für ein Board mit Embedded-Linux grenzt es doch an
>> Masochismus einen anderen Weg zu gehen.
>
> Das hängt von der angestrebten Stückzahl ab. Wenn es nur wenige (100...)
> Stück sind, dann ist ein kleines Embedded-Board wirklich die einfachere
> und günstigere Alternative, sofern nicht irgendwelche anderen
> Anforderungen dagegenstehen (Platz, Stromverbrauch, etc.).
>
> Für ein Projekt, wo die Stückzahl eine Eigenentwicklung auf
> Mikrocontroller-Basis sinnvoll machte, haben wir auch die
> FM3/FM4-Mikrocontroller von Spansion mit zwei Ethernet-MACs eingesetzt.
> Die Software-Unterstützung von Spansion ist sehr gut, aber es ist
> trotzdem einiges an Arbeit.

Das sehe ich auch so. Wobei bei mir schlagen da zwei Herzen, auf der 
einen Seite würde ich schon gerne die Möglichkeiten, die einem Linux 
bieten nutzen können, auf der anderen Seite ist es tatsächlich so, dass 
es sich tatsächlich um größere Stückzahlen handelt, wir keinen Platz 
haben, das ganze kein Strom verbrauchen darf, nicht lange booten soll 
und so weiter... ;-)

Die Spansion Controller machen auf mich auch einen guten Eindruck!

Nutzt ihr auf dem Spansion ein RTOS?

Viele Grüße,
Roland

von Frank K. (fchk)


Lesenswert?

Viele SOCs aus dem Mobilbereich haben noch einen SRAM-ähnlichen 
Adress-/Datenbus, an den gerne ein Davicom DM9000 angeschlossen wird. 
Und wo einer geht, passen in aller Regel auch zwei dran, genügend 
Adressleitungen oder Chipselects vorausgesetzt.

Der DM9000 ist ein kombinierter 10/100 MAC/PHY. Linux-Support ist kein 
Problem, sogar WinCE wird abgedeckt.

Ansonsten: Microchip ENC424J600/624J600, auch 10/100, mit offizieller 
MAC-Adresse im Chip und HW-Crypto-Support. Ansteuerung per SPI oder 8/16 
Bit SRAM-Bus.

fchk

von Frank K. (fchk)


Lesenswert?

Roland Caßebohm schrieb:

> Das sehe ich auch so. Wobei bei mir schlagen da zwei Herzen, auf der
> einen Seite würde ich schon gerne die Möglichkeiten, die einem Linux
> bieten nutzen können, auf der anderen Seite ist es tatsächlich so, dass
> es sich tatsächlich um größere Stückzahlen handelt, wir keinen Platz
> haben, das ganze kein Strom verbrauchen darf, nicht lange booten soll
> und so weiter... ;-)

Was heißt "größere Stückzahlen"? 1k p.a.? 10k? 100k?

fchk

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Roland Caßebohm schrieb:
> Nutzt ihr auf dem Spansion ein RTOS?

Nein, wir arbeiten direkt auf dem Controller. Der Hintergrund ist auch, 
dass wir einen Bootloader geschrieben haben, der sich über Ethernet neue 
Software vom Server ziehen kann inklusive Authentifizierung und 
Verschlüsselung. Da es eben "nur" der Bootloader ist, sollte dieser 
entsprechend klein sein. Ansonsten läuft auf dem Controller noch ein 
Webserver und es werden verschlüsselte Daten (Public-Key-Verfahren) 
ausgetauscht mit einem zentralen Server. Der Rest ist eher Kleinkram 
(externer Speicher, RTC, USB-CDC mit einer einfachen Shell, etc.).

von Martin K. (martinko)


Lesenswert?

Hi,

Was hindert Dich daran, an einem Mikrokontroller mit Ethernet Port 2 MAC 
Adressen auf den Port zu binden und diese in 2 IP Bereichen zu 
verwenden? Dahinter ein normaler Switch und gut.

Gruß Martin

von Roland C. (rcassebohm)


Lesenswert?

Frank K. schrieb:
> Roland Caßebohm schrieb:
>
>> Das sehe ich auch so. Wobei bei mir schlagen da zwei Herzen, auf der
>> einen Seite würde ich schon gerne die Möglichkeiten, die einem Linux
>> bieten nutzen können, auf der anderen Seite ist es tatsächlich so, dass
>> es sich tatsächlich um größere Stückzahlen handelt, wir keinen Platz
>> haben, das ganze kein Strom verbrauchen darf, nicht lange booten soll
>> und so weiter... ;-)
>
> Was heißt "größere Stückzahlen"? 1k p.a.? 10k? 100k?
>
> fchk

Zwischen 1k und 10k

Grüße,
Roland

von Roland C. (rcassebohm)


Lesenswert?

Hallo zusammen,

also wie ich bereits geschrieben habe, wollte ich erst einmal einen 
Überblick über die Möglichkeiten haben und den habe ich durch Eure guten 
Antworten bekommen! :-)

Also vielen Dank nochmal!!!

Roland

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
Noch kein Account? Hier anmelden.