Ethernet mit Mikrocontroller Im Unterforum Microcontroller - Beschreibung: 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
|
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
|
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.
|
|
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
|