Mikrocontroller ethernetfähig machen

OP #3978271
Lesenswert?

Hallo zusammen!

Hintergrund dieser Frage ist eigentlich "das große Ganze" beim Thema 
Ethernet und Mikrocontroller. Insbesondere interessiert mich das
Zusammenspiel zwischen Hardware und Software. Während meiner Recherchen
bin ich auf eine Reihe von Begriffen gestoßen. Die erste Frage ist: Habe
ich diese richtig verstanden?

Der Datenfluss ist:
µC <--> PHY <--> MAC <--> Switch <--> MagJack <--> Kabel <--> ...


PHY Ist ein Schaltkreis der aus einem modellierten Analogsignal
(auf der Leitung) ein  digitales Signal (im µC) macht (und umgekehrt).
Also, wenn ich in meinem Programm  sage "Sende fünf Einsen", dann
wandelt die PHY das in ein analoges Signal (welches?) um? Dieser Chip
ist oft auch schon im Mikrocontroller integriert.

MAC Kenne ich nur im Zusammenhang mit der Zugriffskontrolle
(OSI-Modell). Was bedeutet es aber Hardwaretechnisch?

Switch Verteilt das Signal von der MAC auf verschiedene Ports

MagJack Die physikalische Anschlussbuchse für das LAN-Kabel (Steckt da
noch mehr drin?)

MII standartisierte Protokolle wie PHY und MAC miteinander reden

Angenommen ich habe einen STM32F10x ohne interne PHY, was wäre der
richtige Weg den Controller "ins Netz" zu kriegen? Nehmen wir an ich
hätte hardwaretechnisch alles korrekt verdrahtet, wo setze ich jetzt
mit der Software an? Ich muss ja irgendwie die "Schnittstellen" die
ich oben versucht habe darzustellen beschreiben.

Ich weiß, das ist eine sehr grobe Beschreibung meines "Problems", aber
vielleicht könnt ihr mir den Weg aufzeigen wie ich daran gehen kann.

Gruß
Dennis
#3978286
Lesenswert?

Dennis S. schrieb:
> Hallo zusammen!
>
> Hintergrund dieser Frage ist eigentlich "das große Ganze" beim Thema
> Ethernet und Mikrocontroller. Insbesondere interessiert mich das
> Zusammenspiel zwischen Hardware und Software. Während meiner Recherchen
> bin ich auf eine Reihe von Begriffen gestoßen. Die erste Frage ist: Habe
> ich diese richtig verstanden?
>
> Der Datenfluss ist:
> µC <--> PHY <--> MAC <--> Switch <--> MagJack <--> Kabel <--> ...

µC <--> MAC <--> PHY <--> MagJack <--> Kabel <--> Switch <--> ...

PHY ist der Analogteil, MAC der Digitalteil des Ethernetcontrollers


> MagJack Die physikalische Anschlussbuchse für das LAN-Kabel (Steckt da
> noch mehr drin?)

Ja, Transformatoren.

> Angenommen ich habe einen STM32F10x ohne interne PHY, was wäre der
> richtige Weg den Controller "ins Netz" zu kriegen? Nehmen wir an ich
> hätte hardwaretechnisch alles korrekt verdrahtet, wo setze ich jetzt
> mit der Software an? Ich muss ja irgendwie die "Schnittstellen" die
> ich oben versucht habe darzustellen beschreiben.

Dein STM32 muss einen MAC beinhalten (also ein 105'er oder 107'er) und 
hat dann eine MII oder RMII-Schnittstelle, und da musst Du einen PHY 
anschließen.

Such Dir ein Demoboard, zB bei Olimex, und schau, wie die das machen.

fchk
Gast #3978317
Lesenswert?

Moin,

Der Datenfluss ist eher so:

µC <--> MAC <--> PHY <--> MagJack <--> Kabel <--> Switch <--> ...

Der MAC ist oft im Microcontroller. Da wird ueblicherweise eine CRC 
ueber das zu sendende Paket berechnet und angehaengt; bei empfangenen 
Paketen gecheckt und abgesaebelt. Vor den Daten gibt's eine Preamble, 
StartFrameDelimiter, so Zeugs. Das macht der MAC.

Der PHY ist eher selten im Microcontroller integriert, weil da DSP und 
Analogtechnik drinnen ist (Verstaerker, Kabelequalizer,...)

Der MagJack besteht aus dem Jack, also der Buchse selbst und dem 
Mag(netics), das ist eine Ansammlung von Transformatoren und 
Entstoerdrosseln. Damit wird eine galvanische Trennung der 
Ethernetsignale  zwischen Geraet und Aussenwelt gemacht. Bei Power over 
Ethernet wird dort auch die "Power" eingespeist/rausgeholt.

Der Switch guckt in jedes Paket rein und versucht anhand der dort 
gefundenen Ziel-MAC-Adresse rauszufinden an welchen Port er das Paket 
weiterleiten soll.

Bei den µCs mit Ethernetsupport gibts ueblicherweise irgendwelche Libs, 
mit denen dann hoehere Netzwerkprotokolle genutzt werden koennen. Wenn 
du die nicht nutzen willst, wirst du selbst deine zu sendenden Pakete 
irgendwo im Speicher zusammenbauen muessen und dann die Tx-DMA 
anschmeissen, die die Daten zum MAC bringt. Gleichzeitig dafuer sorgen, 
dass du aus den Daten die die Rx-DMA andauernd in den Speicher schreibt, 
die fuer dich interessanten rausfindest und weiterverarbeitest.

Gruss
WK
OP #3978597
Lesenswert?

Vielen Dank erstmal an alle für die Antworten.

- Muss ein Controller einen MAC beinhalten? Das gibt es doch 
sicherlich, ggfs. zusammen mit der PHY als externes IC oder? Wie wird 
dieser in der Regel an den µC angeflanscht (SPI)?

- Ich meinte keinen Switch wie man ihn zuhause rumstehen hat, sondern 
eher eine Komponente, die ich verwenden möchte, wenn mein Controller 
zwei Ethernet-Schnittstellen haben soll. Meinetwegen für eine Bridge 
oder so.

- Was sind gängige Anbieter von diesen Komponenten (Marvell, TI, ...)?

- Fehlt noch MII: Wenn ich das richtig gesehen habe, dann ist das 
einfach die Schnittstelle zwischen MAC und PHY bei 100 MBit/s-Netzen?

Gruß
Dennis
#3978623
Lesenswert?

Dennis S. schrieb:

> - Muss ein Controller einen MAC beinhalten? Das gibt es doch
> sicherlich, ggfs. zusammen mit der PHY als externes IC oder? Wie wird
> dieser in der Regel an den µC angeflanscht (SPI)?

Nein, muss nicht, aber Du hast eine sehr viel höhere Geschwindigkeit, 
wenn Du einen Controller mit integriertem MAC verwendest (so Faktor 10 
Unterschied kann das schon werden).
Ansonsten: Ja, es gibt MAC+PHY als SPI oder mit parallelem Bus. Ist aber 
in den meisten Fällen nur die zweitbeste Lösung, zB wenn der Bastler nur 
AVR, AVR und AVR kennt.

> - Ich meinte keinen Switch wie man ihn zuhause rumstehen hat, sondern
> eher eine Komponente, die ich verwenden möchte, wenn mein Controller
> zwei Ethernet-Schnittstellen haben soll. Meinetwegen für eine Bridge
> oder so.

Es gibt genügend Controller mit zwei MACs. Ansonsten wird oft ein 
managebarer Switch verwendet, der den PHY ersetzt.

> - Was sind gängige Anbieter von diesen Komponenten (Marvell, TI, ...)?

ja. Micrel, Microchip (hat SMSC gekauft)

> - Fehlt noch MII: Wenn ich das richtig gesehen habe, dann ist das
> einfach die Schnittstelle zwischen MAC und PHY bei 100 MBit/s-Netzen?

es ist eine mögliche.

fchk
Gast #3978654
Lesenswert?

Moin,

> - Muss ein Controller einen MAC beinhalten? Das gibt es doch
> sicherlich, ggfs. zusammen mit der PHY als externes IC oder? Wie wird
> dieser in der Regel an den µC angeflanscht (SPI)?

Nee, muss natuerlich nicht. Aber ich wuerd' mir's nicht ohne grosse 
andere Zwaenge antun, heute an einen Prozessor, der das nicht vorgesehen 
hat, mit Gewalt sowas anzuflanschen. Von SMSC (hupps, die heissen ja 
ploetzlich microchip) gibs/gabs mal einen, ich glaub' der war recht 
beliebt. Wurde afair ueber parallele Daten/Adressbusse angeflanscht.

> - Ich meinte keinen Switch wie man ihn zuhause rumstehen hat, sondern
> eher eine Komponente, die ich verwenden möchte, wenn mein Controller
> zwei Ethernet-Schnittstellen haben soll. Meinetwegen für eine Bridge
> oder so.
Uiuiui, da willst du gleich ziemlich dicke Bretter bohren. Da wuerd' ich 
viel eher einen Prozessor mit 2x Ethernet nehmen. Switch-ICs gibts z.b. 
von Marvell, die haben manchmal die PHYs schon drinnen, manche auch 
[RG]MII Interfaces. Sind aber imho fuer den Einstieg in Ethernet voellig 
ungeeignet.

> - Was sind gängige Anbieter von diesen Komponenten (Marvell, TI, ...)?
Jepp. Microchip, Vitesse, Micrel,...

> - Fehlt noch MII: Wenn ich das richtig gesehen habe, dann ist das
> einfach die Schnittstelle zwischen MAC und PHY bei 100 MBit/s-Netzen?
Ja, die Schnittstelle ueber die die Netzwerkpakete fluppen. In jede 
Richtung bei MII ueblicherweise 4 Datenleitungen, 1 Clock, 1 DataValid, 
dann noch verschiedene Error, etc. Signale. Takt 2.5Mhz oder 25MHz 
(25MHz*4bit=100Mbit/sec).
Zusaetzlich gibts dann noch das MDI; das ist ein 2 Leitungsbus, 
Mischmasch aus SPI und I2C - mit dem werden Register im PHY/Switch 
abgefragt/programmiert. zb.solche Sachen wie: Link Status; die LEDs am 
MagJack, Parameter der (RG)MII Schnittstelle...

Gruss
WK (der langsamer als andere tippt)
OP #3978865
Lesenswert?

Okay, nochmal zusammenfassend:
1
                        MDI              MDI
2
                         |                |
3
------------           -------       ----------      |---| MagJack |--- Kabel
4
| µC | MAC | <--MII--> | PHY | <-?-> |  Switch |<-?->|
5
------------           -------       ----------      |---| MagJack |--- Kabel

Wie sieht es mit der Verbindung zwischen PHY und Switch bzw. Switch und 
MagJack aus? Hier müsste ja schon das Ethernet-Protokoll laufen, oder?

Gruß
Dennis
Gast #3979099
Lesenswert?

Moin,

Dennis S. schrieb:
>
> Wie sieht es mit der Verbindung zwischen PHY und Switch bzw. Switch und
> MagJack aus? Hier müsste ja schon das Ethernet-Protokoll laufen, oder?
>

Kommt drauf an, was dein Switch fuer Interfaces hat. Entweder was aus 
der MII Familie oder - wenn der Switch an dem betreffenden Port den PHY 
schon integriert hat, mit Magnetics. Solange aber die Verbindungen in 
einem Geraet bleiben (d.h. kein richtiges Netzwerkkabel zwischen den 
Komponenten) kann man statt den Magnetics auch einfach Koppel-Cs in die 
Leitungen einbauen und so die Leitungsinterfaces miteinander koppeln. 
Kann sein, dass dann die Autoneg. nicht mehr funktioniert, dann muessen 
eben die Linkparameter der beteiligten Partner mittels MDI eingestellt 
werden.

Guck' mal ins Datenblatt vom Marvell 88E6060.

Gruss
WK
Gast #3979335
Lesenswert?

die 3 Klassiker, wo es jede Menge Beispielschaltpläne und Software gibt 
:

1) AVR Net-IO : ENC28J60 für uC+SPI
2) Wiznet W5100 :  mit IP Stack im Chip für uC mit i80 oder SPI
3) Waveshare Modul mit DP83848 und uC(vulgo STM32) mit RMII Interface

viel Spass beim Googlen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren