<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-AT">
		<id>http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Legolas</id>
		<title>Ethersex_Wiki - Benutzerbeiträge [de-at]</title>
		<link rel="self" type="application/atom+xml" href="http://old.ethersex.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Legolas"/>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php/Spezial:Beitr%C3%A4ge/Legolas"/>
		<updated>2026-04-10T14:03:35Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5018</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5018"/>
				<updated>2011-07-05T19:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' außer CPU-Typ und MCU frequency für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Ich habe gerade noch einmal in den Quellen nachgesehen, dort werden die Netzwerkparameter von BOOTP nur im EEPROM des µC gespeichert, wenn ''Write BOOTP data to EEPROM'' in ''menuconfig'' ausgewählt ist. Damit lassen sich die Netzwerkparameter zwischenspeichern und stehen nach dem Start der Firmware als Default zur Verfügung. Per Default wird diese Option nicht geladen. Das Problem sollte sich damit beheben lassen. Das habe ich aber bisher noch nicht getestet. Wenn dem so ist, sollte die Default-Konfiguration des ''Ethernet Bootloader'' entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5017</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5017"/>
				<updated>2011-07-05T19:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' außer CPU-Typ und MCU frequency für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Ich habe gerade noch einmal in den Quellen nachgesehen, dort werden die Netzwerkparameter von BOOTP nur im EEPROM des µC gespeichert, wenn ''Write BOOTP data to EEPROM'' in ''menuconfig'' ausgewählt ist. Damit lassen sich die Netzwerkparameter zwischenspeichern und stehen nach dem Start der Firmware als Default zur Verfügung. Per Default wird diese Option nicht geladen. Das Problem sollte sich damit beheben lassen. Das habe ich aber bisher noch nicht getestet. Wenn dem so ist, sollte die Default-Konfiguration des ''Ethernet Bootloader'' entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5008</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5008"/>
				<updated>2011-07-02T15:10:27Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Ich habe gerade noch einmal in den Quellen nachgesehen, dort werden die Netzwerkparameter von BOOTP nur im EEPROM des µC gespeichert, wenn ''Write BOOTP data to EEPROM'' in ''menuconfig'' ausgewählt ist. Damit lassen sich die Netzwerkparameter zwischenspeichern und stehen nach dem Start der Firmware als Default zur Verfügung. Per Default wird diese Option nicht geladen. Das Problem sollte sich damit beheben lassen. Das habe ich aber bisher noch nicht getestet. Wenn dem so ist, sollte die Default-Konfiguration des ''Ethernet Bootloader'' entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5007</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5007"/>
				<updated>2011-07-02T14:43:46Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Ich habe gerade noch einmal in den Quellen nachgesehen, dort werden die Netzwerkparameter von BOOTP nur im EEPROM des µC gespeichert, wenn ''Write BOOTP data to EEPROM'' in ''menuconfig'' ausgewählt ist. Damit lassen sich die Netzwerkparameter zwischenspeichern und stehen nach dem Start der Firmware als Default zur Verfügung. Das Problem sollte sich damit beheben lassen. Das habe ich aber bisher noch nicht getestet. Wenn dem so ist, sollte die Default-Konfiguration des ''Ethernet Bootloader'' entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5006</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5006"/>
				<updated>2011-07-02T14:41:41Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Ich habe gerade noch einmal in den Quellen nachgesehen, dort werden die Netzwerkparameter von BOOTP nur im EEPROM des µC gespeichert, wenn ''Write BOOTP data to EEPROM'' in ''menuconfig'' ausgewählt ist. Damit lassen sich die Netzwerkparameter zwischenspeichern und stehen nach dem Start der Firmware als Default zur Verfügung. Das Problem sollte sich damit beheben lassen. Das habe ich aber bisher noch nicht getestet. Wenn dem so ist, sollte die Default-Konfiguration in ''Ethernet Bootloader'' entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5005</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5005"/>
				<updated>2011-07-02T13:40:40Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Nützliche Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5004</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5004"/>
				<updated>2011-07-02T13:38:50Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;br /&gt;
&lt;br /&gt;
== Nützliche Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.example.com ATMEL JTAG-Interface-Beschreibung]&lt;br /&gt;
* [http://www.example.com Datenblatt zum ATMEGA644]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5003</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5003"/>
				<updated>2011-07-02T13:36:03Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Warum BOOTP? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5002</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5002"/>
				<updated>2011-07-02T13:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Voraussetzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der 8KB Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5001</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5001"/>
				<updated>2011-07-02T13:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Warum BOOTP? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man [http://www.ethersex.de/index.php/Wie_flasht_man_ein_AVR-NET-IO flasht] die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5000</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=5000"/>
				<updated>2011-07-02T13:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP Startsequenz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP] mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4999</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4999"/>
				<updated>2011-07-02T13:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP Startsequenz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Bootstrap_Protocol BOOTP] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4998</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4998"/>
				<updated>2011-07-02T13:23:37Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Warum BOOTP? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [http://de.wikipedia.org/wiki/MAC-Adresse MAC]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4997</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4997"/>
				<updated>2011-07-02T12:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Warum BOOTP? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [http://de.wikipedia.org/wiki/Joint_Test_Action_Group JTAG] ([http://www.atmel.com/dyn/resources/prod_documents/doc2475.pdf ATMEL]). In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4996</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4996"/>
				<updated>2011-07-02T12:45:50Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP Startsequenz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol TFTP] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=4995</id>
		<title>Ethernet Loader</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Ethernet_Loader&amp;diff=4995"/>
				<updated>2011-07-02T12:43:23Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* LOCKBITS Bootloaderschutz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bootloader einrichten (TFTP)=&lt;br /&gt;
&lt;br /&gt;
Da ich mindesten 6h mit Fehlersuche verschwendet habe, hier eine Anleitung wie man den TFTP-Bootloader verwendet.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ganz wichtig, es darf per tftp NIE das ''ethersex.hex'' File geladen werden.&lt;br /&gt;
&lt;br /&gt;
= Vorteile des Bootloaders =&lt;br /&gt;
* Durch den Einsatz eines Bootloaders benötigt man (vom Flashen des Bootloaders einmal abgesehen) keine Flash-Hardware mehr.&lt;br /&gt;
* Der ISP-Port blockiert den Ethernet-Port (zumindesten bei der AVR NET-IO bzw. beim Einsatz bestimmter Programmieradapter)&lt;br /&gt;
* Update und Entwicklungen können bequem vom Schreibtisch aus vorgenommen werden&lt;br /&gt;
&lt;br /&gt;
== Benötigt werden: ==&lt;br /&gt;
&lt;br /&gt;
* Bootloader im ethersex.hex Format&lt;br /&gt;
** [http://www.ethersex.de/firmware-builder/list.cgi Firmware Builder]&lt;br /&gt;
*** enc_mac = die MAC-Adresse vom Hardwareboard&lt;br /&gt;
*** enc_ip  = IP-Adresse vom Board&lt;br /&gt;
*** enc_ip4_netmask = passende Maske vom Netz&lt;br /&gt;
*** etherrape_gateway = default GW&lt;br /&gt;
*** tftp_ip = die IP-Adresse vom tftpd Server, also des PCs auf dem der tftpd läuft&lt;br /&gt;
*** tftp_image = Name des binaries, das im tftpboot-Verzeichnis liegt. z.B. esex.bin&lt;br /&gt;
*oder&lt;br /&gt;
** config-File für die '''AVR Net-IO''' &lt;br /&gt;
*** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
****  (x) Ethernet Bootloader&lt;br /&gt;
*** als Start und dann an die Gegebenheiten anpassen. Im Bootloader werden nur UDP und TFTP zum Nachladen der Firmware benötigt.&lt;br /&gt;
*** Network ---&amp;gt; &lt;br /&gt;
**** (x) UDP support&lt;br /&gt;
**** (x) UDP broadcast support&lt;br /&gt;
**** (x) Ethernet(ENC28J60)support -&amp;gt; Etherrape IP-Adresse: &amp;quot;IP-ADRESSE eintragen&amp;quot; (Dieser Eintrag erscheint nur wenn bootp nicht aktiv ist)&lt;br /&gt;
*** Applications -&amp;gt;&lt;br /&gt;
**** (x) TFTP support&lt;br /&gt;
**** Bootloader configuration -&amp;gt;TFTP-o-matic (Dieser Eintrag erscheint nur wenn Network --&amp;gt; bootp nicht aktiv ist)&lt;br /&gt;
***** TFTP IP address: &amp;quot;IP-ADRESSE DES TFTP-SERVERS&amp;quot;&lt;br /&gt;
***** TFTP image to load: &amp;quot;esex.bin&amp;quot; (Name des BIN-files) (evtl. ist hier der absolute Pfad nötig /tftpboot/esex.bin)&lt;br /&gt;
&lt;br /&gt;
* eigentliche Firmware im ethersex.bin Format&lt;br /&gt;
** das make erzeugt immer eine ethersex.hex und eine ethersex.bin und wird z.B. als esex.bin auf den tftpd-Server kopiert&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tfpd-Server]&lt;br /&gt;
** Linux: [http://www.debianadmin.com/atftp-server-and-client-installation-and-configuration.html atftpd], tftpd oder tftpd-hpt&lt;br /&gt;
** Windows: [http://tftpd32.jounin.net/ tftp32.exe]&lt;br /&gt;
*** BESCHREIBUNG FÜR WINDOWS wenn '''nicht''' DHCP verwendet wird &lt;br /&gt;
*** der Windows Rechner muss die IP haben die vorher in Ethersex als Server eingestellt worden ist&lt;br /&gt;
*** esex.bin einfach in das Verzeichnis vom TFTP-Server (Windows) kopieren &lt;br /&gt;
*** Programm starten und freuen -- sobald der Ethersex startet holt er sich automatisch neue Firmware esex.bin (Name der eingestellt ist)&lt;br /&gt;
*** anschließend könnt ihr die Datei aus dem Verzeichnis löschen oder Programm schließen ansonsten wird der nach jedem starten vom ESEX wieder neu gelasht&lt;br /&gt;
&lt;br /&gt;
== Wichtig! ==&lt;br /&gt;
* Der Bootloader funktioniert ''nicht'' ohne weiteres mit dem Atmega32, da dort der Bootloaderbereich zu klein ist. Es wird ein Atmega644 oder ein 1284p benötigt.&lt;br /&gt;
* der ethersex Bootloader funktioniert als TFTP-Client&lt;br /&gt;
* auf der Linux bzw. Windows Maschine muss ein TFTPD (TFTP-Server) laufen.&lt;br /&gt;
* das ethersex sucht auf dem TFTP-Server seine Firmware lädt sie selbständig in seinen Flash.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* auf dem klassischem Weg wird die ethersex.bin erstellt (make menuconfig; make)&lt;br /&gt;
* Der tftpd wird wie von der Distribution vorgesehen gestartet. Das ethersex.bin kommt in das /tftpboot Verzeichniss&lt;br /&gt;
&lt;br /&gt;
== Anpassung der FUSE-Bits ==&lt;br /&gt;
Damit das Ganze funktioniert, müssen die FUSE-Bits angepasst werden.&lt;br /&gt;
Mit dem Tool [http://www.engbedded.com/fusecalc/ FUSE-Calc] kann man sich durch anklicken seine FUSE-Bits zusammenstellen.&lt;br /&gt;
Für den atmega644(p) hier ein Beispiel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
Der Bootloader wird als .hex auf klasischem Weg geflasht.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:&amp;lt;bootloader.hex&amp;gt; -v&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(Statt &amp;lt;bootloader.hex&amp;gt; ist natürlich der korrekte Name des Hex-Files anzugeben; selbstverständlich ohne &amp;quot;&amp;lt;&amp;gt;&amp;quot;. Wichtig: unbedingt das &amp;lt;bootloader.hex&amp;gt; flashen, mit dem Flashen des &amp;lt;bootloader.bin&amp;gt; funktioniert der Bootloader nicht, weil dieser in den falschen Bereich im Flash geschrieben wird)&lt;br /&gt;
&lt;br /&gt;
Spätestens nach einem Reboot der Hardware versucht der Bootloader per [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tftp] die eigentliche Firmware zu laden und zu starten.&lt;br /&gt;
&lt;br /&gt;
Eine einmal auf diesem Weg installierte Firmware ist immer auf dem Board und der Bootloader holt nur auf händische Anfrage ein neues esex.bin vom tftp-Server&lt;br /&gt;
&lt;br /&gt;
== LOCKBITS Bootloaderschutz ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn der Bootloader instaliert ist sollten noch die Lockbits gesetzt werden.&lt;br /&gt;
Bitte nur die [http://www.ethersex.de/index.php/Bild:AvrNet-644-boot.jpg Fuses mit Boot Loader Protections Mode3] setzen.&lt;br /&gt;
&lt;br /&gt;
Dadurch wird verhindert das der Bootloader überschrieben wird, wenn das Image in den Bereich vom Bootloader kommt. Dies Passiert wenn das Image für den ATMEGA 644 größer als 90% ist. (bei mir 90,3% da BL 9,7%)&lt;br /&gt;
&lt;br /&gt;
Durch die Lockbits bekommt man dann am TFTP Server die Meldung ERR, '''aber der Bootloader funktioniert weiterhin'''.&lt;br /&gt;
&lt;br /&gt;
Wenn mit SPI der Bootloaader neu geflasht wird, werden die Lockbits vom Bootloader Mode3 wieder auf Mode1 gesetzt.&lt;br /&gt;
D.h. immer beim neuflash über SPI, den Boot Loader Protections Mode3 setzen.&lt;br /&gt;
&lt;br /&gt;
'''ALS FAUSTFORMEL: BIN-File nicht größer als ''90%'' -- ca. ''10%'' braucht der Bootloader'''&lt;br /&gt;
&lt;br /&gt;
Für ATmega644P:&lt;br /&gt;
&lt;br /&gt;
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m&lt;br /&gt;
&lt;br /&gt;
== Händisches laden eines neuen Images ([[Ecmd_Reference]])==&lt;br /&gt;
Anm.: Voraussetzung für das ECMD &amp;quot;bootloader&amp;quot; sind die Optionen &amp;quot;General Setup -&amp;gt; Prompt all possible options&amp;quot; (CONFIG_EXPERT) und &amp;quot;General Setup -&amp;gt; Enable bootloader jump&amp;quot; (BOOTLOADER_JUMP) im menuconfig.&lt;br /&gt;
Per Telnet sich mit dem ethersex verbinden (telnet &amp;lt;IP-Ethersex&amp;gt; 2701). &lt;br /&gt;
Dort &amp;quot;bootloader&amp;quot; oder &amp;quot;wdreset&amp;quot; eingeben.&lt;br /&gt;
&lt;br /&gt;
Oder per Web-Browser: http://&amp;lt;IP-Ethersex&amp;gt;/ecmd?bootloader.&lt;br /&gt;
&lt;br /&gt;
Wenns nicht auf Anhieb klappt:&lt;br /&gt;
&lt;br /&gt;
(a) Fehlerbild:&lt;br /&gt;
&lt;br /&gt;
Ethersex holt sich zwar vom TFTP-Server ein neues Binärfile und schreibt es&lt;br /&gt;
in seinen Speicher - aber dann geht nichts mehr übers Netzwerk (kein &lt;br /&gt;
Ping, kein Telnet, etc).&lt;br /&gt;
&lt;br /&gt;
(b) Ursachen:&lt;br /&gt;
&lt;br /&gt;
b1) In Bootloader-Image und im Binärfile werden unterschiedliche MAC-Adressen verwendet.&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
b2) &amp;quot;make&amp;quot; hat keine wesentliche Änderung an .config festgestellt und daher das identische Binary nochmals erzeugt; Image wird zwar neu geladen und auch geflasht - Controller zeigt aber das identische Verhalten&lt;br /&gt;
&lt;br /&gt;
(c) Abhilfe:&lt;br /&gt;
&lt;br /&gt;
für b1) ARP-Cache löschen oder warten&lt;br /&gt;
&lt;br /&gt;
für b2) &amp;quot;make clean &amp;amp;&amp;amp; make&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== mögliche Probleme ==&lt;br /&gt;
Bei Einsatz des Add-On Boards kann es vorkommen, dass der SD-Kartenleser nicht mehr einwandfrei initialisiert wird. Die LED neben dem SD-Kartenslot leuchtet ständig und es erscheint die Meldung im Debug-Mode: „sd_reader: fat_create_file: invalid parameters.“&lt;br /&gt;
Dann muss die SD-Karte einmal entfernt und wieder eingesetzt werden. Die LED leuchtet dann auch nicht mehr dauerhaft. &lt;br /&gt;
&lt;br /&gt;
[[Category:Ethersex]]&lt;br /&gt;
[[Category:bootloader]]&lt;br /&gt;
[[Category:AVR Net-IO]]&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4994</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4994"/>
				<updated>2011-07-02T12:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat den Ethernet-Bootloader zu kompilieren, kann hier für das AVR NetIO mit Addon die Datei [http://www.phw-magdeburg.de/ethersex/ethersex.bin ''ethersex.bin''] verwenden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4993</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4993"/>
				<updated>2011-07-02T12:37:13Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in [http://www.phw-magdeburg.de/ethersex/ethersex.hex ''ethersex.hex''] ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4992</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4992"/>
				<updated>2011-07-02T12:35:46Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine [http://www.phw-magdeburg.de/ethersex/BOOTP.config Konfigurationsdatei] für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4991</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4991"/>
				<updated>2011-07-02T12:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können. Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
Ist die zu ladende Firmware größer als 56kB, so wird die Firmware nicht richtig geflasht, da ab xE000 der Ethernet-Bootloader den Bereich mit gesetzten Secure-Bits blockiert.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4990</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4990"/>
				<updated>2011-07-02T11:55:28Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Voraussetzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt die letzten 8KB ab Adresse xE000 des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf 56 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können.&lt;br /&gt;
&lt;br /&gt;
Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4989</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4989"/>
				<updated>2011-07-02T11:48:33Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Voraussetzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Ethernet Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können.&lt;br /&gt;
&lt;br /&gt;
Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4988</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4988"/>
				<updated>2011-07-02T11:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP Startsequenz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP [http://de.wikipedia.org/wiki/Bootstrap_Protocol Wiki] ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können.&lt;br /&gt;
&lt;br /&gt;
Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4987</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4987"/>
				<updated>2011-07-02T11:41:50Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]]) einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können.&lt;br /&gt;
&lt;br /&gt;
Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet.&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4986</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4986"/>
				<updated>2011-07-02T11:39:42Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen und die vorhandene Firmware gestartet&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
Ist im µC bereits eine Firmware geflasht, so sollten durch den BOOTP-Mechanismus die Netzwerkparameter wie IP, Gateway, DNS und Gateway bezogen werden. Laut Logfile vom haneWin DHCP Server erfolgt dies auch. Danach sollte dann die Firmware mit genau diesen Netzwerkparametern gestartet werden. Dies geschiet aber nicht, da vermutlich die Netzwerkparameter nicht an die Firmware weitergereicht werden. Es werden die alten Netzwerkparameter geladen trotz der Einstellung in ''menuconfig'', dass BOOTP verwendet werden soll.&lt;br /&gt;
&lt;br /&gt;
Man erkennt mit dem Kommando ''arp -a'' in der Windows-Konsole, dass nach dem Booten die neuen Netzwerkparameter mit der IP vom BOOTP-Server vergeben wurden. Im zweiten Schritt, wenn der µC die Firmware läd, jedoch die alte letzte IP-Adresse benutzt.&lt;br /&gt;
&lt;br /&gt;
Daher muss man mit ''arp -d'' die ARP-Tabelle löschen und sich unter der alten IP in den µC mit telnet (siehe [[ECMD Protocols]])einloggen und mit den Befehlen ''ip, netmask, gw, dns server'' manuell auf die neuen Werte setzen. Alternativ kann man den µC zwingen die neue Firmware zu laden, die dann aber intern die gleichen Netzwerkparameter wie der BOOTP-Server haben muss.&lt;br /&gt;
&lt;br /&gt;
Schade eigentlich, so hätte man sehr elegant mit dem BOOTP-Server die Netzwerkparameter zur Bootzeit vergeben können.&lt;br /&gt;
&lt;br /&gt;
Vielleicht geht es, wenn DHCP in der Firmware gesetzt ist. Das habe ich aber bisher noch nicht getestet. &lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung!'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4985</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4985"/>
				<updated>2011-07-02T11:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server verwenden */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [[ECMD]] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung!'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4984</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4984"/>
				<updated>2011-07-02T11:12:00Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden. So, nun sollte der BOOTP-Server laufen. Den Server kann man unter ''Datei-&amp;gt;Server starten/beenden'' in den jeweiligen Zustand setzen.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server verwenden ==&lt;br /&gt;
&lt;br /&gt;
Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
Folgende Bedingungen müssen beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* hat der µC noch keine Firmware geladen, so wird diese per TFTP im BOOTP-Prozess geladen und geflasht&lt;br /&gt;
* ist schon eine Firmware im µC geflasht, so werden nur die Netzwerkparameter nach einem Reboot oder Power on/off geladen&lt;br /&gt;
* um die Firmware erleut zu laden, muss mit dem [ECMD] Kommando ''wdreset'' oder ''bootloader'' der µC &amp;quot;resettet&amp;quot; werden&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung!'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4983</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4983"/>
				<updated>2011-07-01T22:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
So, nun sollte der BOOTP-Server laufen. Wird jetzt der µC gebootet, so bezieht er seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung!'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4982</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4982"/>
				<updated>2011-07-01T22:22:15Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter ''Optionen-&amp;gt;Einstellungen'' die Grundeinstellungen vorgenommen.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt werden unter ''Optionen-&amp;gt;Konfigurationsprofile verwalten'' das betreffende Netzwerk ausgewählt und mit ''Bearbeiten'' angepaßt. Im meinem Beispiel wurde der Profilname durch Ethersex ersetzt. Vorher stand dort If-2_0.1.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
&lt;br /&gt;
Als letztes wird dann noch ein neuer statischer Eintrag über den Schaltknopf ''Hinzufügen'' für den µC erstellt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
Alle nicht aufgeführten Seiten enthalten die Standardeinstellungen und müssen nicht weiter modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
So, nun sollte der BOOTP-Server laufen. Wird jetzt der µC gebootet, so bezieht er jetzt seine Netzwerkeinstellungen vom BOOTP-Server, läd danach die Firmware und startet diese. Im Logfile des BOOTP-Server können die Aktivitäten verfolgt werden. Sobald dem µC eine IP-Adresse vergeben wurde erscheint ein grünes Häkchen vor der MAC-Adresse in der Hauptansicht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden als erstes unter Optionen-&amp;gt;Einstellungen die Grundeinstellungen vorgenommen.&lt;br /&gt;
'''Seite ist in Bearbeitung'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4981</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4981"/>
				<updated>2011-07-01T22:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
* [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4980</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4980"/>
				<updated>2011-07-01T22:00:07Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge]&lt;br /&gt;
&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen]&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4979</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4979"/>
				<updated>2011-07-01T21:51:10Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192.168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:&lt;br /&gt;
&lt;br /&gt;
[http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Seite ist in Bearbeitung'''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4978</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4978"/>
				<updated>2011-07-01T21:43:39Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
Abb.: hahneWin DHCP Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Datei:Hahne_DHCP.jpg&amp;diff=4977</id>
		<title>Datei:Hahne DHCP.jpg</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Datei:Hahne_DHCP.jpg&amp;diff=4977"/>
				<updated>2011-07-01T21:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4976</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4976"/>
				<updated>2011-07-01T21:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
[[Datei:Hahne_DHCP.jpg]]&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4974</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4974"/>
				<updated>2011-06-28T22:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: Änderung 4971 von Legolas (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Datei:Leer.png&amp;diff=4973</id>
		<title>Datei:Leer.png</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Datei:Leer.png&amp;diff=4973"/>
				<updated>2011-06-28T22:00:11Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=Datei:Null.txt&amp;diff=4972</id>
		<title>Datei:Null.txt</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=Datei:Null.txt&amp;diff=4972"/>
				<updated>2011-06-28T21:52:34Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4971</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4971"/>
				<updated>2011-06-28T21:39:44Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Warum BOOTP? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:http://www.pollin.de/shop/images/article/big/G810058.JPG]]&lt;br /&gt;
== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4970</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4970"/>
				<updated>2011-06-28T21:30:41Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4969</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4969"/>
				<updated>2011-06-28T21:29:46Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
*(x) BootLock02&lt;br /&gt;
*(x) BootLock01&lt;br /&gt;
*(x) Lock2&lt;br /&gt;
*(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4968</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4968"/>
				<updated>2011-06-28T21:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
Für ATmega644:&lt;br /&gt;
&lt;br /&gt;
''avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m''&lt;br /&gt;
&lt;br /&gt;
oder in Ponyprog:&lt;br /&gt;
&lt;br /&gt;
(x) BootLock02&lt;br /&gt;
(x) BootLock01&lt;br /&gt;
(x) Lock2&lt;br /&gt;
(x) Lock1&lt;br /&gt;
&lt;br /&gt;
'''Achtung!''' Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4967</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4967"/>
				<updated>2011-06-28T21:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest zugewiesen&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4966</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4966"/>
				<updated>2011-06-28T21:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* BOOTP-Server konfigurieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows '''hahneWin DHCP Server'''. Als Beispielkonfiguration ist bei mir folgendes eingestellt:&lt;br /&gt;
&lt;br /&gt;
* Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)&lt;br /&gt;
* 192,168.0.0 Netzwerk für BOOTP&lt;br /&gt;
* 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69&lt;br /&gt;
* statische Adressvergabe über MAC-Adressen fest definiert&lt;br /&gt;
* 192.168.0.88 NetIO mit MAC AC:DE48:CE:23:C8&lt;br /&gt;
* 255.255.255.0 Netmask&lt;br /&gt;
* 192.168.0.251 Gateway&lt;br /&gt;
* 192.168.0.251 DNS-Server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4965</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4965"/>
				<updated>2011-06-28T20:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows hahneWin DHCP Server. &lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4964</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4964"/>
				<updated>2011-06-28T20:54:23Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows hahneWin DHCP Server. &lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4963</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4963"/>
				<updated>2011-06-28T20:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen. Wenn eine alte Vorlage benutzt wird, muss ggf. die MAC-Adresse noch einmal geändert werden.&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows hahneWin DHCP Server. &lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4962</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4962"/>
				<updated>2011-06-28T20:47:38Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make clean'' und ''make'' compilieren und mit einem Programmieradapter die Datei ''ethersex.hex'' flashen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BOOTP-Server konfigurieren ==&lt;br /&gt;
&lt;br /&gt;
Als BOOTP-Server verwende ich unter Windows hahneWin DHCP Server. &lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4961</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4961"/>
				<updated>2011-06-28T20:42:50Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Konfiguration in menuconfig */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make'' compilieren und mit einem Programmieradapter flashen.&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	<entry>
		<id>http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4960</id>
		<title>BOOTP</title>
		<link rel="alternate" type="text/html" href="http://old.ethersex.de/index.php?title=BOOTP&amp;diff=4960"/>
				<updated>2011-06-28T20:41:59Z</updated>
		
		<summary type="html">&lt;p&gt;Legolas: /* Flashen des Bootloaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Warum BOOTP? ==&lt;br /&gt;
&lt;br /&gt;
Jeder kennt das Problem, wenn man eine Firmware erstellt hat, muss sie irgendwie in die Hardware kommen. Der gängige Weg, man flasht die Hardware mit einem Programmieradapter über [[SPI]] oder [[JTAG]]. In der Firmware muss die [[MAC]]- Adresse und die IP-Adresse für die Hardware (µC) einkompiliert sein. Sie ist damit erstmal fix und kann nur nachträglich über das [[ECMD]]-Kommandos ip geändert werden. Schön wäre es, wenn man sich um die IP- Adresse nicht kümmern müsste und sie selbständig zum Bootzeitpunkt geladen wird. Und noch schöner wäre es, wenn der µC sich auch gleich die aktuelle Firmware selbst laden und flashen würde. Genau dies macht jetzt BOOTP.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BOOTP Startsequenz ===&lt;br /&gt;
&lt;br /&gt;
BOOTP ist der Vorläufer von DHCP mit dem einem Netzwerkgerät wie z.B. unserem µC eine IP-Adresse zugeordnet werden kann. Falls das Netzwerkgerät nicht über einen eigenen Festspeicher verfügt, kann auch die Firmware oder das Betriebssystem auf Anfrage des Netzwerkgerätes übertragen werden. Damit BOOTP funktioniert, muss ein Minimalprogramm mit dem BOOTP-Client auf dem Netzwerkgerät als Bootloader gespeicher sein. Bei einem PC liegt dieses Programm in der Netzwerkkarte. Auf unserem µC muss der Ethernet Bootloader geflasht sein. Dieser enthält eine eindeutige MAC-Adresse für das Netzwerkgerät, damit es adressiert werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer&lt;br /&gt;
mit der Bitte ihm eine IP-Adresse zu geben. Gibt es im Netzwerk einen anderen Rechner, der einen BOOTP- oder DHCP-Server enthält, so antwortet dieser Server und gibt ihm, sofern erlaubt, eine IP-Adresse, die Netmask und das Gateway. Ab nun an kann der µC unter dieser Adresse erreicht werden. Als nächstes fragt der µC den BOOTP-Server nach einer aktuellen Firmware. Dieser teilt ihm den Server und den Port mit, von dem die Firmware per [[TFTP]] geladen werden kann. &lt;br /&gt;
&lt;br /&gt;
Mit dieser Art des bootens, kann sehr elegant der µC geflasht und gleichzeitig eine IP-Adresse zugeordnet werden. Das eigentliche flashen der Firmware macht der µC damit selbständig. Mit dem Ethernet Bootloader und BOOTP ist es möglich, beliebige Firmware zu laden ohne ein Programmieradapter zu benutzen. Es muss lediglich die aktuelle Firmware auf dem BOOTP-Server hinterlegt sein und einmal der µC neu gestartet werden und schon flasht er sich selbständig ohne weiteres zutun nur über das Netzwerk. Diese Art des &amp;quot;flashens&amp;quot; geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzungen ===&lt;br /&gt;
&lt;br /&gt;
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:&lt;br /&gt;
&lt;br /&gt;
* Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen&lt;br /&gt;
* Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können&lt;br /&gt;
* Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt&lt;br /&gt;
* Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann&lt;br /&gt;
* Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein&lt;br /&gt;
* Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein&lt;br /&gt;
* In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händisch mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration in menuconfig ==&lt;br /&gt;
&lt;br /&gt;
Als Basis kann in nenuconfig die Option &amp;quot;Bootloader BOOTP&amp;quot; gewählt werden. Es ist zu beachten, dass '''keine spezifischen Einstellungen''' für die jeweilige Hardware im Bootloader durchgeführt werden. Die hardwarespezifischen Einstellungen werden in der Firmware vorgenommen.&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen sollten in '''menuconfig''' aktiviert sein:&lt;br /&gt;
&lt;br /&gt;
* '''config-File'''&lt;br /&gt;
** Load a Default Configuration  ---&amp;gt;&lt;br /&gt;
*** (x) Ethernet Bootloader&lt;br /&gt;
** General Setup&lt;br /&gt;
*** ATMEGA644&lt;br /&gt;
*** 16000000 MCU frequency (für NetIO)&lt;br /&gt;
*** (x) Build a bootloader&lt;br /&gt;
*** (x) Teensy build&lt;br /&gt;
** Network ---&amp;gt;&lt;br /&gt;
*** Ethernet (ENC28J60) support&lt;br /&gt;
**** Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)&lt;br /&gt;
*** (x) UDP support&lt;br /&gt;
*** (x) UDP broadcast support&lt;br /&gt;
*** (x) BOOTP (DHCP like) support&lt;br /&gt;
** Applications -&amp;gt;&lt;br /&gt;
*** (x) TFTP support&lt;br /&gt;
&lt;br /&gt;
'''Wichtig!''' Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):&lt;br /&gt;
&lt;br /&gt;
Damit man nun nicht jedes Mal die MAC-Adresse neu einkompilieren muss, kann man sie auch händich mit einem Texteditor in ''ethersex.hex'' ändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
:10E000003EC0000066C0000064C0000062C00000A6&lt;br /&gt;
:10E0100060C000005EC000005CC000005AC000008C&lt;br /&gt;
:10E0200058C0000056C0000054C0000052C000009C&lt;br /&gt;
:10E0300050C0000014C100004CC000004AC00000E5&lt;br /&gt;
:10E0400048C0000046C0000044C0000042C00000BC&lt;br /&gt;
:10E0500040C000003EC000003CC000003AC00000CC&lt;br /&gt;
:10E0600038C0000036C0000034C0000032C00000DC&lt;br /&gt;
:10E07000&amp;quot;ACDE48CE23C8&amp;quot;006F63746574000014BE24&lt;br /&gt;
:10E0800088E10FB6F89480936000109260000FBE94&lt;br /&gt;
:10E0900010926E0010926F001092700011241FBE3B&lt;br /&gt;
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flashen des Bootloaders ==&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration mit menuconfig den Bootloader mit ''make'' compilieren und mit einem Programmieradapter flashen.&lt;br /&gt;
&lt;br /&gt;
Seite ist in Bearbeitung''&lt;/div&gt;</summary>
		<author><name>Legolas</name></author>	</entry>

	</feed>