Hallo, ich habe mir ein Mikrocontrollerboard gebaut mit einem LPC2378. Das Board möchte ich nun mit dem Ethernet verbinden (PHY und so weiter ist natürlich drauf). Ich habe hier bereits gelesen, dass ich dazu einen IP-Stack benötige (?). Diese möchte ich natürlich selber programmieren; meine Frage hierzu: wo soll ich anfangen? Ich möchte, dass mein Controller Interruptgesteuert Pakete empfangen kann, und diese dann richtig verarbeitet. So, und noch gleich eine Frage: ich möchte die Software auf dem Board so bauen, dass ich das Board aus dem LAN über einen Hostnamen, und nicht über die IP ansprechen kann. Die IP weiss ich ja nicht, da das Board natürlich DHCP verwenden wird. So, um jetzt Hostnamen in IP-Adressen auflösen zu können, muss ich DNS implementieren. Aber, was kommt denn bei meinem Board an, wenn ich auf dem PC eingebe "ping test" ? kommt da ein DNS-Paket an, oder wie oder was. Und was steht da drin, und wie muss ich es beantworten? Dazu habe ich nichts schlaues gefunden; Wikipedia ist da ein bisschen kryptisch....
1. IP-Stacks sind nicht ganz trivial. wenn dann schau dir den von urlich radig mal für den atmel an. 2. das mit dem dhcp und ip läuft ein wenig anders. dein board hat immer eine ip. den namen weiß der dns server, den du anfragen kannst vom pc aus. soll das dynamisch gehen, muss der dhcp server dem dns server mitteilen, dass der name test.lan auf 192.168.0.42 zeigt. das hat mit deinem board so nicht zu tun. dns musst du in dem sinn nur implementieren, wenn du auf einen anderen host zugreifen willst bzw deine ip erfahren, die du aber sowieso weißt. wenn dann brauchst du dns auf dem anderen ende der kommunikation zb wenn du mit einem pc auf dein board zugreifen willst. das ganze wird dann umgewandelt in eine ip und mit der läuft die kommunikation.
> Das Board möchte ich nun mit dem Ethernet verbinden > (PHY und so weiter ist natürlich drauf). > Ich habe hier bereits gelesen, dass ich dazu einen IP-Stack > benötige (?). Im Prinzip nein, aber ... Um über Ethernet mit einem Gerät zu kommunizieren, bedarf es keines IP-Stacks, man kann auch direkt Ethernet-Pakete versenden und empfangen. Auf dieser Ebene wird die sogenannte MAC-Adresse Deines Boards verwendet. TCP/IP ist ein Protokoll, das (unter anderem) auf Ethernet verwendet werden kann und viel vom Verwaltungsaufwand einspart. Um das nutzen zu können, benötigtst Du einen IP-Stack. > Diese möchte ich natürlich selber programmieren; > meine Frage hierzu: wo soll ich anfangen? Indem Du es sein lässt und einen verfügbaren IP-Stack verwendest. Ein IP-Stack ist alles andere als trivial, so etwas programmiert man sich nicht mal eben selbst, vor allem, wenn man mit der Materie noch nie vorher zu tun hatte. Damit Dein Board eine IP-Adresse automatisch zugewiesen bekommen kann, musst Du zusätzlich zum IP-Stack einen DHCP-Client implementieren. Dieser fordert beim DHCP-Server (den es irgendwo in Deinem Netzwerk geben muss) eine IP-Adresse an. In Heimnetzwerken ist das oft eine vom Router übernommene Funktion. Für die Namensauflösung wird ein Protokoll namens DNS verwendet. Im o.g. Heimnetzwerkfall wird das üblicherweise ebenfalls vom Router übernommen, der bei Namensanfragen in der von ihm verwalteten Liste lokaler Geräte nachsieht und bei Nicht-Auffinden des Namens den übergeordneten DNS-Server des Providers kontaktiert. Im von Dir beschriebenen Modell (PC will Dein Board unter dem Namen "test" ansprechen) ist es ganz und gar nicht erforderlich, daß Dein Board etwas von DNS versteht, das müsste es nur, wenn es im Gegenzug Deinen PC über seinen Namen ansprechen wollte. Du musst nur dafür sorgen, daß Dein Board per DHCP-Request eine IP-Adresse reserviert und dabei seinen Namen bekanntgibt. Als ersten Schritt aber würde ich eine statische IP-Adresse verwenden und diese als statische DHCP-Lease in Deinem Router eintragen (sofern der das zulässt). Dann kann Dein PC nach wie vor nach "test" fragen, aber Du musst noch nicht gleich einen DHCP-Client implementieren. Auch einen DCHP-Client solltest Du nicht selberprogrammieren, sondern auf eine der unzähligen fertig verfügbaren freien Lösungen zurückgreifen. Das reduziert die Fehlermöglichkeiten ganz drastisch.
Du kannst aber auch einen fertig in Hardware gegossenen TCP/IP Stack verwenden. Schau mal auf der Seite von Wiznet. Da gibt es ein paar Ethernet TCP/IP Controller die den ganzen TCP Stack schon implementiert haben. Gruss Helmi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.