Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller ethernetfähig machen


von Dennis S. (eltio)


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

von Frank K. (fchk)


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

von derguteweka (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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

Oder:
µC <--> Wireless Modul <--> Router <--> Internet

von Dennis S. (eltio)


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

von bluppdidupp (Gast)


Lesenswert?

Interessant könnte da ggf. dieser Artikel sein: 
http://www.mikrocontroller.net/articles/ENC28J60

von Frank K. (fchk)


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

von derguteweka (Gast)


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)

von Dennis S. (eltio)


Lesenswert?

Ach super, vielen Dank nochmal an alle! Bis jetzt sind das alles nur 
theoretische Betrachtungen um ein bisschen Grundlagenwissen aufzubauen. 
Aber die Infos bringen mich auf jeden Fall schon mal ein gutes Stück 
weiter!

Gruß
Dennis

von Dennis S. (eltio)


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

von ... (Gast)


Lesenswert?

Die PHY redet uebern den Magjack mit den Switch.

Willst Du hier fuer jeden Furzzz jetzt einzeln fragen?

Gehirn an der Garderobe abgegben?

von Dennis S. (eltio)


Lesenswert?

... schrieb:
Hallo ...
abgesehen von deinen Beleidigungen:

> Die PHY redet uebern den Magjack mit den Switch.
Auch wenn der Switch-"Controller" auf der Platine ist (so wie ich es 
oben beschrieben habe)? Hast du die Diskussion nicht gelesen?

Gruß
Dennis

von derguteweka (Gast)


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

von Pete K. (pete77)


Lesenswert?

Schau Dir einfach mal ein Datenblatt von einem PHY an (z.B. KSZ8051 oder 
DP83848).
Den PHY lässt man auch gerne weg, weil es PHYs für verschiedene 
Standards gibt (Glasfaser/Gigabit/etc.).

von Peter D. (peda)


Lesenswert?

Dennis S. schrieb:
> - Muss ein Controller einen MAC beinhalten? Das gibt es doch
> sicherlich, ggfs. zusammen mit der PHY als externes IC oder?

Z.B. von Michrochip den ENC424J600.
Der kann SPI oder 8Bit parallel.

von Selbst Gewickelt (Gast)


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.

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.