Ethernet Loader: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(LOCKBITS Bootloaderschutz)
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „[http://www.ethersex.de/index.php/Ethernet_Loader_(Deutsch) Ethernet Loader im neuen Wiki]“)
 
Zeile 1: Zeile 1:
= Bootloader einrichten (TFTP)=
+
[http://www.ethersex.de/index.php/Ethernet_Loader_(Deutsch) Ethernet Loader im neuen Wiki]
 
 
Da ich mindesten 6h mit Fehlersuche verschwendet habe, hier eine Anleitung wie man den TFTP-Bootloader verwendet.<br />
 
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
 
** [http://www.ethersex.de/firmware-builder/list.cgi 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.
 
*** Network --->
 
**** (x) UDP support
 
**** (x) UDP broadcast support
 
**** (x) Ethernet(ENC28J60)support -> Etherrape IP-Adresse: "IP-ADRESSE eintragen" (Dieser Eintrag erscheint nur wenn bootp nicht aktiv ist)
 
*** Applications ->
 
**** (x) TFTP support
 
**** Bootloader configuration ->TFTP-o-matic (Dieser Eintrag erscheint nur wenn Network --> bootp nicht aktiv ist)
 
***** TFTP IP address: "IP-ADRESSE DES TFTP-SERVERS"
 
***** TFTP image to load: "esex.bin" (Name des BIN-files) (evtl. ist hier der absolute Pfad nötig /tftpboot/esex.bin)
 
 
 
* 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
 
* [http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol tfpd-Server]
 
** Linux: [http://www.debianadmin.com/atftp-server-and-client-installation-and-configuration.html atftpd], tftpd oder tftpd-hpt
 
** Windows: [http://tftpd32.jounin.net/ tftp32.exe]
 
*** BESCHREIBUNG FÜR WINDOWS wenn '''nicht''' DHCP verwendet wird
 
*** der Windows Rechner muss die IP haben die vorher in Ethersex als Server eingestellt worden ist
 
*** esex.bin einfach in das Verzeichnis vom TFTP-Server (Windows) kopieren
 
*** Programm starten und freuen -- sobald der Ethersex startet holt er sich automatisch neue Firmware esex.bin (Name der eingestellt ist)
 
*** 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
 
 
 
== Wichtig! ==
 
* 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.
 
* der ethersex Bootloader funktioniert als TFTP-Client
 
* auf der Linux bzw. Windows Maschine muss ein TFTPD (TFTP-Server) laufen.
 
* das ethersex sucht auf dem TFTP-Server seine Firmware lädt sie selbständig in seinen Flash.
 
 
 
== 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 [http://www.engbedded.com/fusecalc/ FUSE-Calc] kann man sich durch anklicken seine FUSE-Bits zusammenstellen.
 
Für den atmega644(p) hier ein Beispiel.
 
 
 
<source lang="text">
 
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m
 
</source>
 
 
 
== Flashen des Bootloaders ==
 
Der Bootloader wird als .hex auf klasischem Weg geflasht.
 
<source lang="text">
 
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U flash:w:<bootloader.hex> -v
 
</source>
 
(Statt <bootloader.hex> ist natürlich der korrekte Name des Hex-Files anzugeben; selbstverständlich ohne "<>". Wichtig: unbedingt das <bootloader.hex> flashen, mit dem Flashen des <bootloader.bin> funktioniert der Bootloader nicht, weil dieser in den falschen Bereich im Flash geschrieben wird)
 
 
 
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.
 
 
 
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
 
 
 
== LOCKBITS Bootloaderschutz ==
 
 
 
 
 
Wenn der Bootloader instaliert ist sollten noch die Lockbits gesetzt werden.
 
Bitte nur die [http://www.ethersex.de/index.php/Bild:AvrNet-644-boot.jpg Fuses mit Boot Loader Protections Mode3] setzen.
 
 
 
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%)
 
 
 
Durch die Lockbits bekommt man dann am TFTP Server die Meldung ERR, '''aber der Bootloader funktioniert weiterhin'''.
 
 
 
Wenn mit SPI der Bootloaader neu geflasht wird, werden die Lockbits vom Bootloader Mode3 wieder auf Mode1 gesetzt.
 
D.h. immer beim neuflash über SPI, den Boot Loader Protections Mode3 setzen.
 
 
 
'''ALS FAUSTFORMEL: BIN-File nicht größer als ''90%'' -- ca. ''10%'' braucht der Bootloader'''
 
 
 
Für ATmega644P:
 
 
 
avrdude -p m644p -c ponyser -P /dev/ttyS0 -U lock:w:0x0F:m
 
 
 
== Händisches laden eines neuen Images ([[Ecmd_Reference]])==
 
Anm.: Voraussetzung für das ECMD "bootloader" sind die Optionen "General Setup -> Prompt all possible options" (CONFIG_EXPERT) und "General Setup -> Enable bootloader jump" (BOOTLOADER_JUMP) im menuconfig.
 
Per Telnet sich mit dem ethersex verbinden (telnet <IP-Ethersex> 2701).
 
Dort "bootloader" oder "wdreset" 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) Ursachen:
 
 
 
b1) In Bootloader-Image und im Binärfile werden unterschiedliche MAC-Adressen verwendet.
 
 
 
oder:
 
 
 
b2) "make" 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
 
 
 
(c) Abhilfe:
 
 
 
für b1) ARP-Cache löschen oder warten
 
 
 
für b2) "make clean && make"
 
 
 
== mögliche Probleme ==
 
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.“
 
Dann muss die SD-Karte einmal entfernt und wieder eingesetzt werden. Die LED leuchtet dann auch nicht mehr dauerhaft.
 
 
 
[[Category:Ethersex]]
 
[[Category:bootloader]]
 
[[Category:AVR Net-IO]]
 

Aktuelle Version vom 30. Jänner 2016, 21:17 Uhr