BOOTP: Unterschied zwischen den Versionen
(→BOOTP-Server konfigurieren) |
(→BOOTP-Server konfigurieren) |
||
Zeile 105: | Zeile 105: | ||
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden: | Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden: | ||
+ | |||
+ | [http://www.phw-magdeburg.de/ethersex/Ethersex_Basiskonfiguration.JPG Basiskonfiguration] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Ethersex_DNS.JPG DNS] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Ethersex_Boot.JPG Boot] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Konfigurationsprofile.JPG Konfigurationsprofile] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Statische_Eintraege.JPG Statische Einträge] | ||
[http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein] | [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein] | ||
− | + | [http://www.phw-magdeburg.de/ethersex/Einstellungen_Schnittstellen.JPG Einstellungen Schnittstellen] | |
+ | [http://www.phw-magdeburg.de/ethersex/Einstellungen_DHCP.JPG Einstellungen DHCP] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP.JPG Einstellungen TFTP] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Einstellungen_TFTP_Optionen.JPG Einstellungen TFTP Optionen] | ||
+ | [http://www.phw-magdeburg.de/ethersex/Einstellungen_Allgemein.JPG Einstellungen Allgemein] | ||
'''Seite ist in Bearbeitung''' | '''Seite ist in Bearbeitung''' |
Version vom 1. Juli 2011, 23:00 Uhr
Inhaltsverzeichnis
Warum BOOTP?
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.
BOOTP Startsequenz
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.
Zum Bootzeitpunkt verfügt der µC nur über die MAC-Adresse. Er stellt also als erstes eine Broadcast-Anfrage an alle Netzwerkteilnehmer 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.
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 "flashens" geht schneller als mit einem Programmieradapter. In gut 10s ist die Firmware (ca. 50kB) geladen, geflasht und gestartet.
Voraussetzungen
Damit BOOTP benutzt werden kann müssen bestimmte Voraussetzungen erfüllt sein:
- Nur mit einem ATMEGA644 oder größer läßt sich der Bootloader flashen
- Der Bootloader mit BOOTP belegt ungefähr 10KB des Programmspeichers, die nicht mehr genutzt werden können
- Die Programmgröße (Firmware) ist auf ca. 50 KB beschränkt
- Die Securebits sollten gesetzt sein, damit der Bootloader sich nicht selbst überschreiben kann
- Es muss ein BOOTP- und TFTP- Server wie z.B. HahneDHCP o.ä. im Netzwerk erreichbar sein
- Die Firmware muss als ethersex.bin auf dem TFTP-Server hinterlegt sein
- In der Firmware muss die selbe MAC-Adresse verwendet werden wie im Bootloader von BOOTP
Als Basis kann in nenuconfig die Option "Bootloader BOOTP" 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.
Folgende Optionen sollten in menuconfig aktiviert sein:
- config-File
- Load a Default Configuration --->
- (x) Ethernet Bootloader
- General Setup
- ATMEGA644
- 16000000 MCU frequency (für NetIO)
- (x) Build a bootloader
- (x) Teensy build
- Network --->
- Ethernet (ENC28J60) support
- Etherrape MAC address 00:11:22:33:44:55 (bitte ändern!)
- (x) UDP support
- (x) UDP broadcast support
- (x) BOOTP (DHCP like) support
- Ethernet (ENC28J60) support
- Applications ->
- (x) TFTP support
- Load a Default Configuration --->
Wichtig! Die MAC-Adresse muss gesetzt sein. Die selbe MAC-Adresse muss in der Firmware später auch benutzt werden.
Hier ist eine Konfigurationsdatei für das Pollin NetIO mit Addon (MAC: AC:DE:48:CE:23:C8 ):
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.
:10E000003EC0000066C0000064C0000062C00000A6
:10E0100060C000005EC000005CC000005AC000008C
:10E0200058C0000056C0000054C0000052C000009C
:10E0300050C0000014C100004CC000004AC00000E5
:10E0400048C0000046C0000044C0000042C00000BC
:10E0500040C000003EC000003CC000003AC00000CC
:10E0600038C0000036C0000034C0000032C00000DC
:10E07000"ACDE48CE23C8"006F63746574000014BE24
:10E0800088E10FB6F89480936000109260000FBE94
:10E0900010926E0010926F001092700011241FBE3B
:10E0A000CFEFD0E1DEBFCDBF11E0A0E0B1E0E8EE00
Flashen des Bootloaders
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.
Damit der Bootloader nicht durch die Firmware überschrieben wird, müssen die Lock-Bits folgendermaßen gesetzt sein:
Für ATmega644:
avrdude -p m644 -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m
oder in Ponyprog:
- (x) BootLock02
- (x) BootLock01
- (x) Lock2
- (x) Lock1
Achtung! Sollte der Bootloader neu geflasht werden, so müssen die Lock-Bits nach dem flashen immer wieder neu gesetzt werden.
BOOTP-Server konfigurieren
Als BOOTP-Server verwende ich unter Windows hahneWin DHCP Server. Als Beispielkonfiguration ist bei mir folgendes eingestellt:
- Kein DHCP sondern nur BOOTP aktiviert (zur Problemvermeidung bei bestehendem DHCP-Server)
- 192.168.0.0 Netzwerk für BOOTP
- 192.168.0.1 Rechner mit hahneWin DHCP Server und TFTP auf Port 69
- statische Adressvergabe über MAC-Adressen fest zugewiesen
- 192.168.0.88 NetIO mit MAC AC:DE:48:CE:23:C8
- 255.255.255.0 Netmask
- 192.168.0.251 Gateway
- 192.168.0.251 DNS-Server
Abb.: hahneWin DHCP Server
Alle weiteren Einstellungen zum hahneWin DHCP Server können den nachfolgenden Links entnommen werden:
Basiskonfiguration DNS Boot Konfigurationsprofile Statische Einträge
Einstellungen Allgemein Einstellungen Schnittstellen Einstellungen DHCP Einstellungen TFTP Einstellungen TFTP Optionen Einstellungen Allgemein
Seite ist in Bearbeitung