Ethernet Loader: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (Hinweis auf Einstellungen im Konfigfile)
(Händisches laden eines neuen Images (Ecmd_Reference))
Zeile 60: Zeile 60:
 
Per Telnet sich mit dem ethersex verbinden (telnet <IP-Ethersex> 2701).  
 
Per Telnet sich mit dem ethersex verbinden (telnet <IP-Ethersex> 2701).  
 
Dort "bootloader" eingeben.
 
Dort "bootloader" eingeben.
 +
 +
Oder per Web-Browser: http://<IP-Ethersex>/ecmd?bootloader.
 +
 +
Wenns nicht auf Anhieb klappt:
 +
 +
(a) Fehlerbild:
 +
 +
Ethersex holt sich zwar vom TFTP-Server ein neues Binärfile und schreibt es
 +
in seinen Speicher - aber dann geht nichts mehr übers Netzwerk (kein
 +
Ping, kein Telnet, etc).
 +
 +
(b) Ursache:
 +
 +
In Bootloader-Image und im Binärfile werden unterschiedliche MAC-
 +
Adressen verwendet.
 +
 +
(c) Abhilfe:
 +
 +
ARP-Cache löschen oder warten.
 +
 +
  
 
[[Category:Ethersex]]
 
[[Category:Ethersex]]
 
[[Category:bootloader]]
 
[[Category:bootloader]]
 
[[Category:AVR Net-IO]]
 
[[Category:AVR Net-IO]]

Version vom 7. Februar 2010, 13:00 Uhr

Bootloader einrichten

Da ich mindesten 6h mit Fehlersuche verschwendet habe, hier eine Anleitung wie man den TFTP-Bootloader verwendet.
Ganz wichtig, es darf per tftp NIE das ethersex.hex File geladen werden.

Vorteile des Bootloaders

  • Durch den Einsatz eines Bootloaders benötigt man (vom Flashen des Bootloaders einmal abgesehen) keine Flash-Hardware mehr.
  • Der ISP-Port blockiert den Ethernet-Port (zumindesten bei der AVR NET-IO bzw. beim Einsatz bestimmter Programmieradapter)
  • Update und Entwicklungen können bequem vom Schreibtisch aus vorgenommen werden

Benötigt werden:

  • Bootloader im ethersex.hex Format
    • Firmware Builder
      • enc_mac = die MAC-Adresse vom Hardwareboard
      • enc_ip = IP-Adresse vom Board
      • enc_ip4_netmask = passende Maske vom Netz
      • etherrape_gateway = default GW
      • tftp_ip = die IP-Adresse vom tftpd Server, also des PCs auf dem der tftpd läuft
      • tftp_image = Name des binaries, das im tftpboot-Verzeichnis liegt. z.B. esex.bin
  • oder
    • config-File für die AVR Net-IO
      • Load a Default Configuration --->
        • (x) Ethernet Bootloader
      • als Start und dann an die Gegebenheiten anpassen. Im Bootloader werden nur UDP und TFTP zum Nachladen der Firmware benötigt.
  • eigentliche Firmware im ethersex.bin Format
    • das make erzeugt immer eine ethersex.hex und eine ethersex.bin und wird z.B. als esex.bin auf den tftpd-Server kopiert
  • tfpd-Server

Installation

  • auf dem klassischem Weg wird die ethersex.bin erstellt (make menuconfig; make)
  • Der tftpd wird wie von der Distribution vorgesehen gestartet. Das ethersex.bin kommt in das /tftpboot Verzeichniss

Anpassung der FUSE-Bits

Damit das Ganze funktioniert, müssen die FUSE-Bits angepasst werden. Mit dem Tool FUSE-Calc kann man sich durch anklicken seine FUSE-Bits zusammenstellen. Für den atmega644(p) hier ein Beispiel.

avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m

Flashen des Bootloaders

Der Bootloader wird als .hex auf klasischem Weg geflasht.

avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:<bootloader.hex> -v

(Statt <bootloader.hex> ist natürlich der korrekte Name des Hex-Files anzugeben; selbstverständlich ohne "<>")


Spätestens nach einem Reboot der Hardware versucht der Bootloader per tftp die eigentliche Firmware zu laden und zu starten.

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

Händisches laden eines neuen Images (Ecmd_Reference)

Per Telnet sich mit dem ethersex verbinden (telnet <IP-Ethersex> 2701). Dort "bootloader" eingeben.

Oder per Web-Browser: http://<IP-Ethersex>/ecmd?bootloader.

Wenns nicht auf Anhieb klappt:

(a) Fehlerbild:

Ethersex holt sich zwar vom TFTP-Server ein neues Binärfile und schreibt es in seinen Speicher - aber dann geht nichts mehr übers Netzwerk (kein Ping, kein Telnet, etc).

(b) Ursache:

In Bootloader-Image und im Binärfile werden unterschiedliche MAC- Adressen verwendet.

(c) Abhilfe:

ARP-Cache löschen oder warten.