Ethernet mit Mikrocontroller

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  04:17:27      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Ethernet mit Mikrocontroller

    







BID = 651187

abracadabra

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 361
 

  


Hallo.

Ich würde gerne in dieses Thema einsteigen, doch weiß ich nicht wo ich anfangen sollte.
Kennt Ihr vielleicht Internetseiten, die die Grundlagen dieses Themas abdecken?

Ich habe beispielsweise einen PIC mit:
-IEE 802.3 Compatible Ethernet Controller
-Integrated MAC and Base-T PHY
- .
- .
usw.

Lieder kann ich dieses Thema noch nicht ganz fassen.
Würde Euch also bitten, mir Eure Erfahrungen mitzuteilen oder mich anweisen mich zuerst über ganz bestimmte Dinge zu informieren.

Darüber bin ich mir beispielsweise nicht im Klaren:

Brauche ich eine IP/oder MAC Adresse?
Wie vergebe ich die?
Ich denke, dass eine MAC in einer anderen Schicht des OSI(heißt das so?) Modells "sitzt" als die IP.
Es interessiert mich auch, welche Beschränkungen aufkommen gegenüber der Nutzung eines Ethernets über einen PC (Dabei meine ich nicht die Bandbreite)
Wenn ich zum Beispiel Daten über SPI verschicken möchte, so schreibe ich meine 8 Bit in ein Register und iniziiere den Sendevorgang.
Wie ist es beim ETHERNET?
Wie sehen überhaupt die Daten aus und wohin werden sie geschickt?
Zu einem anderen Rechner im Netz? Zu google? Zu meinem Router?
Wie werden die Daten verpackt?
An welcher stelle bekommt mein Datenpaket eine Zieladresse,
oder sogar eine Antwortadresse?


Wäre froh wenn Ihr einfach mal ein wenig Licht ins Dunkel bringen könnt. Oder auf Internetseiten verweist.


Grüße
abracadabra

BID = 651195

abracadabra

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 361

 

  

Ich lese beispielsweise über das Ethernet-Datenpaket nach IEEE 802.3, dass es eine maximale Länge von 1530 Byte hat.
Darin enthalten sind verschiedene Informationen wie: Preämbel, MAC Asressen von Sender und Empfänger, ein CRC, ... sowie die eigentlichen Nutzdaten.
Ihre Länge wird mit 0-1500 Byte angegeben.
Welche dieser Bytes muss ich auf der Ebene des Mikrocontrollers selbst erzeugen oder für ihre Korrektheit sorgen?
Die MAC Adressen? Den CRC?

Muss ich irgendwo die Adresse meines Routers oder PCs eintragen (in ein bestimmtes Register oder die Übergabeparameter einer Funktion die zuständig ist für das "zusammenschnüren" des Ethernet-Paketes)
Ich könnte mir vorstellen, dass die MAC des Absenders, wenn sie einmal von mir festgelegt wurde, automatisch von der Hardware an die richtige Stelle im Ethernet-Datenpaket platziert wird.

Ich sehe, dass dieses Ethernet-Paket gewisse Normen hinsichtlich des Aufbaus usw. einhalten muss.
Verstehe ich das richtig, dass die Einschränkung bezüglich der Nutzdaten nur auf ihre Länge bezogen ist?
D.h. ich kann dort wirklich die "Reihenfolge der Bits" so wählen wie es mir gefällt, bzw. wie es meinen Zweck erfüllt?

Analog zu der SPI Übertragung wäre das doch der Inhalt meines Datenregisters. Oder?

BID = 651205

Jornbyte

Moderator



Beiträge: 7143

Hier mal was zu Lesen: http://www.sics.se/~adam/

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 651356

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Hinweis: Die Quote-Tags nutze ich nicht, damit es nicht zu groß wird

>Brauche ich eine IP/oder MAC Adresse? Wie vergebe ich die?
Die MAC wird fest im µC hinterlegt, du darfst dir selbst eine ausdenken. Möglichst eine hohe Adresse, damit es keine Komplikationen mit anderen Geräten gibt. Ob es reservierte Bereiche für Privat gibt kann ich nicht sagen.
Eine IP wird ebenfalls benötigt, entweder per DHCP (schwer zu programmieren) oder statisch. Wichtig ist, dass der gleiche Subnetzbereich wie bei den normalen Rechnern genutzt wird, aber nicht die gleiche IP mehrfach.
> Ich denke, dass eine MAC in einer anderen Schicht des OSI(heißt das so?) Modells "sitzt" als die IP.
Das heist so. Die MAC sitzt auf Layer 2, die IP ist Layer 3 (und dein Problem auf Layer 8 )
> Es interessiert mich auch, welche Beschränkungen aufkommen gegenüber der Nutzung eines Ethernets über einen PC (Dabei meine ich nicht die Bandbreite)
Na du musst alle Protokolle selbst schreiben, was dir bei PCs das Betriebssystem mit fertigen Funktionen abnimmt.
> Wie sehen überhaupt die Daten aus und wohin werden sie geschickt?
Zur Ziel-MAC, herauszufinden per ARP (Wiki hilft) oder per Broadcast (unschön) an die MAC FF:FF:FF:FF:FF:FF
> Zu einem anderen Rechner im Netz? Zu google? Zu meinem Router?
Zu Google = Zu deinem Router, was die MAC-Adresse betrifft.
> Wie werden die Daten verpackt?
Suche mal nach Ethernet in Wikipedia und Google
> An welcher stelle bekommt mein Datenpaket eine Zieladresse, oder sogar eine Antwortadresse?
Im Ethernet-Header die MACs und im IP-Header die IPs


Meiner Erfahrung nach sind die Seiten auf Wikipedia ganz gut gemacht, zumindest was die Schichten 2 bis 4 angeht. Aber du wirst sehen, dass für eine richige Übertragung sehr viele Protokolle involviert sind. Einen FTP-Server oder gar SMB/CIFS-Server wirst du wohl nicht mal eben so programmieren können, für HTTP-Server gibt es einige Beispiele im Internet. DonComi hier hat zu dem Thema auch schon einiges geschrieben.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 651367

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Moin,

Erst mal kurz vor dem eigentlichen Thema: ich habe aktuell keine Zeit mehr, hier wirklich aktiv noch mitzuarbeiten - ich sitze seit zwei Tagen an Laborberichten und sonstigen Dingen. Da hat man echt kaum Zeit .

Zum Thema:
Es hängt vor allem viel davon ab, was der Ethernetcontroller kann.
Es gibt solche, die nur Ethernet auf Bitebene implementieren. Alles darüber, also auf MAC-Ebene, muss dann bereits vom steuerndem µC erledigt werden. Das ist neben der Präambel, der Ziel- und Quell-MAC, dem Type-Feld, und den Daten vor allem auch das CRC-Feld.
Bessere Controller, z.B. der ENC28J60, beherrschen wesentlich mehr: sie bieten diverse Filtermöglichkeiten (z.B. MAC-Filter: in ein 48Bit-Register wird eine MAC geschrieben, auf die der Controller hört. Alle Pakete, die er empfängt und die als Ziel nicht dieser Adresse entsprechen, werden verworfen. Der µC wird damit entlastet. Eine Ausnahme bilden Broad- und Multicastpakete.)
Dieser Controller berechnet auch das CRC-Feld, erzeugt die Präambel und bietet diverse Interruptquellen. Ich würde dir sowas empfehlen.

Wie clembra andeutete, müssen alle anderen Protokolle (also die meisten ) von dir implementiert werden. Auf die Protokolle will ich nicht mehr eingehen, da findet man genug im Internet.

Du musst, ähnlich wie bei Betriebssystemen, eine Kommunikationsschnittstelle implementieren, die es erlaubt, Daten zu einem und von einem Host zu empfangen. Bei modernen Rechnern sind das die sogenannten Sockets, auf einem µC ist das je nach Ressourcen schwierig. Man wird sich in der Realität auf eine Art Pseudosocket beschränken.

Ich habe mir sowas vor einigen Monaten gebaut, aber aktuell absolut keine Zeit mehr dazu.
Achja, ich kann dir nur empfehlen, für erste Experimente auf einen Sniffer zurückzugreifen, um die RAW-Daten auf dem Netzwerk mitzuverfolgen. Gehe mal davon aus, dass du anfangs viele Fehler machst. Der Kernel wird Pakete, die nicht 100% konform sind, verwerfen. Wireshark (vormals ethereal) zeigt sowas an und zeigt auch die Fehler. Es beherrscht alle wichtigen Protokolle so ziemlich jeder Ebene .


_________________

BID = 651369

Kleinspannung

Urgestein



Beiträge: 13354
Wohnort: Tal der Ahnungslosen


Zitat :
DonComi hat am 28 Nov 2009 21:51 geschrieben :

Erst mal kurz vor dem eigentlichen Thema: ich habe aktuell keine Zeit mehr, hier wirklich aktiv noch mitzuarbeiten


Offtopic :

Vielleicht hättest lieber doch einen richtigen Beruf lernen sollen...


_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 651380

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika


Offtopic :

Moin Kleinspannung!

Nöö, dem Forum bleibe ich treu, nur kann ich hier halt nicht mehr so oft reinschauen .
Achja, übrigens: am Montag habe ich, du wirst es kaum glauben, Ralfi (Tim Taylor) in der Universität getroffen - ich bin grad aus dem Ausgang raus, er kam gerade rein .

Haben uns dann kurz unterhalten, dann musste ich weg (naher Verwandter war im Krankenhaus).

Sooo,
ich hoffe, es wird bald etwas ruhiger. Es ist halt momentan normal, in drei Nebenfächern 5-seitige Übungen pro Woche zu leisten, die bewirken, dass wenn man sie nicht macht, man rausfliegt

Immerhin ist Informatik cool - da hätte ich bis jetzt die Vorlesungen auch selbst halten können .

Sooo, nun mache ich mir mal ein Bierchen auf. Ich spendier' auch ne virtuelle Runde!

Gruß,
D.


_________________

BID = 651772

abracadabra

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 361

Jornbyte danke für den Link.. Lese gerade das uIP Reference Manual.

Habe mir zwar in den letzten Tagen etwas Wissen angeeignet, es wäre aber naiv zu fordern bereits alles zu verstehen. Daher noch meine weiteren Fragen:

Bei der Datenübertragung werden die Daten von der 7ten bis hinunter zur 1sten Ebene von einem Protokoll zum anderen gereicht.
Dabei fügt jede Schicht ihren Header an bevor sie die Daten weiterreicht.

Da für mich die obersten Schichten sehr unverstädlich sind, bin ich froh, dass es ja noch das TCP/IP oder auch DOD Modell gibt (Schichten 4-1).
Nach meinem bisherigen Wissensstand würde das ja für meine Anwendung (Über Web einen Mikrocontroller Befehle schicken) reichen.

Verstehe ich denn recht, dass:

Schicht 1:
Hier bekommt das Paket eine Präambel (7Byte), die der Synchronisation dient. Sie sieht immer wie folgt aus: 10101...10
Danach folgt noch ein Byte: 10101011
(Heute ist die Präambel veraltet blieb jedoch aus Kompatibilitätsgründen erhalten)


In Wiki steht:
Das FCS-Feld stellt eine 32-Bit-CRC-Prüfsumme dar. Die FCS wird über den eigentlichen Frame berechnet,
also beginnend mit der Ziel-MAC-Adresse und endend mit dem PAD-Feld

Also muss die CRC Berechnung erst ziemlich tief erfolgen, wenn das Ethernet-Frame fast komplett ist. Also Schit 1 ?
Mein Controller (PIC18F97J60) macht das automatisch, also muss ich mich schonmal nicht um diese Berechnung kümmern.

Es wird die MAC des Senders und des Empfängers hinzugefügt.

Das dürfte mein Controller auch automatisch machen..


Schicht 2:
Hier kommt der IP Header hinzu. Diese Schichtist also dafür verantwortlich,
dass Daten über verschiedene Netze hinweg transportiert werden können.


Schicht 3:
Hier sitzt beispielsweise das TCP Protokoll
Sein Haeder ist ca. 20Byte groß.

Ich denke, dass ich ab hier mit der Implementierung anfangen müsste.
Wenn mein Controller also beim Empfang von Daten das Paket aus Schicht 2 übergibt,( Ich gehe davon aus, dass alle nötigen Schritte der unteren beiden Schichten in Hardware gemacht werden) so müsste ich dieses Datenpaket mit meinen selbstgeschriebenen Routinen interpretieren.
Ich könnte also bereits auf dieser Ebene an meine Daten (Steuerbefehle) kommen.


Hmm, so langsam wird das mit dem Verständnis.. Hoffe ich.

Was meint Ihr?


Vielen Dank


PS: Mein Controller bietet auch eine Art der Filterung auf MAC Ebene usw. Könnte es sein, dass die J60 in seiner Bezeichnung PIC18F97J60
etwas zu tun hat mit: ENC28J60





BID = 651834

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Zu den µC-spezifischen Dingen kann ich mangels Erfahrung=Zeit nichts sagen, aber die Schichten sind dir verrutscht. Beim OSI 7-Schichten-Modell sieht es so aus:
Schicht 1: Bitübertragung, also die 1en und 0en auf der Leitung sowie die Steckverbinder und Leitungen selbst
Schicht 2: Ethernet (14 Byte+Präambel), also MACs
Schicht 3: IP (20 Byte) und ARP
Schicht 4: UDP (8 Byte) /TCP (20 Byte)
Schicht 5: HTTP (GET / HTTP/1.1)

_________________
Reboot oder be root, das ist hier die Frage.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 16 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182086210   Heute : 688    Gestern : 6155    Online : 570        28.9.2024    4:17
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0571479797363