AVR Net IO - Problem mit Firmware laden, Absturz

OP (Firma: JDCC) #2611338
Lesenswert?

Servus,

ich habe bei Pollin der AVR NET IO gekauft und versuche, den zum
Laufen zu bringen.

Erstmal über ein Terminal angeschlossen und eine neue IP vergeben,
dann versucht, diesen anzupingen, alles in Ordnung.

Lt. dem Manual soll man dann eine Firmware aktualisieren. Also
netserver.exe von der beiliegenden CD installiert und aufgerufen.
Nach Einstellen der IP des Boards hat es auch brav alle ADCs etc
angezeigt.

Dann habe ich das mit der Firmware probiert.

Button "Firmwareupdate" geklickt, dann die Com gewählt, mit der
ich eh schon Ko0ntakt mit dem Board hatte (s.o., das Programm
hatte ich vorher beendet) und dann auf "Firmware 1.03 übertragen"
geklickt. Es kamen 2 Meldungen, die com7 sei ok, dann hat er das
Flash gelöscht und dann übertragen ... (vorher hatte ich noch den
Jumper auf "prog" gesteckt und das Board mal kurz vom Strom weg).

Nach 10 min in denen nichts passiert ist habe ich das abgebrochen.

Beim nächsten Versuch kam die Meldung, er lösche jetzt das Flash,
nicht mehr. Auch Hänger und nach 10 min abgebrochen.

Jetzt tut das Board überhaupt nichts mehr. Anscheinend hat zumindest
die Flash-Löschung funktioniert.

Weder auf der CD noch bei Pollin finde ich einen Bootload bzw die
Firmware 1.03. Hier im Forum habe ich dazu auch kaum etwas gefunden.

Ich habe hier WinAVR mit avrdude.

Kann ich herausbekommen ob der Bootload auch mit weg ist ? Oder
wie bekomme ich diese %$$§&§&-Firmware wieder drauf ?
OP (Firma: JDCC) #2611428
Lesenswert?

Ich hänge jetzt am Bootloader. Die Fuses habe ich, wie im Forum
beschrieben, auf c2 und bf gesetzt. Den Bootload mit NetServer
erzeugt.

Problem:

Meldung avrdude:

G:\Luna\avrdude.exe -u -C G:\Luna\avrdude.conf -p m32 -P com4 -c avrisp2 
-B200 -U flash:w:C:\Programme\NetServer\bootloader.hex:a
avrdude.exe: Skipping paramter write; parameter value already set.

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.01s

avrdude.exe: Device signature = 0x1e9502
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will 
be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "C:\Programme\NetServer\bootloader.hex"
avrdude.exe: input file C:\Programme\NetServer\bootloader.hex auto 
detected as Intel Hex
avrdude.exe: writing flash (31632 bytes):

Writing | ################################################## | 100% 
4.84s

avrdude.exe: 31632 bytes of flash written
avrdude.exe: verifying flash memory against 
C:\Programme\NetServer\bootloader.hex:
avrdude.exe: load data flash data from input file 
C:\Programme\NetServer\bootloader.hex:
avrdude.exe: input file C:\Programme\NetServer\bootloader.hex auto 
detected as Intel Hex
avrdude.exe: input file C:\Programme\NetServer\bootloader.hex contains 
31632 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 
163.47s

avrdude.exe: verifying ...
avrdude.exe: 31632 bytes of flash verified

avrdude.exe done.  Thank you.

bootloader.hex hat aber nur 2599 Byte. Woher nimmt avrdude den Rest ...
Gast #2611488
Lesenswert?

Joachim Drechsel schrieb:
> Gehört der nicht ins Flash ?
>
> (Ähem ... bis jetzt nur ATTiny2313 ;). Ich schau mal ...

Doch. Der gehört in's Flash. Und zwar an's Ende des Flashs, z.B. beim 
ATM32 von $3800 bis $3F00 (Wortadresse), einstellbar je nach 
Bootladergröße.

Das Flash selbst wird Page-weise beschrieben, avrdude hat hier 
offensichtlich den ganzen Flash von Zelle 0 bis Ende des Bootladers 
geschrieben. Alles was vor dem Bootlader kam, ist dann einfach leer.
OP (Firma: JDCC) #2611507
Lesenswert?

Die erste Zeile bootloader.hex:

:10 7800 000C942A3C0C94473C0C94473C0C94473C09

müßte er doch nach $3800 laden ?

Die Fuses habe ich noch mal überprüft, sie stehen so wie im Handbuch 
S12/3.

MWS schrieb:
> Das Flash selbst wird Page-weise beschrieben, avrdude hat hier
> offensichtlich den ganzen Flash von Zelle 0 bis Ende des Bootladers
> geschrieben. Alles was vor dem Bootlader kam, ist dann einfach leer.

Erklärt auch die relativ lange Lesezeit 160 sec (knapp 5 sec für write).

Irgendetwas klemmt da noch grrrr

---

Würde heißen, der Bootloader müßte jetzt auf dem Chip sein ?
Wie kann ich das testen ? NetServer hängt sich auf.
Gast #2611528
Lesenswert?

Joachim Drechsel schrieb:
> Merci. dh ich müßte avrdude dazu überreden, das auch bei $3800 bis
> $3f00 abzulegen. Ich schau mal ...

Nein, es ist eher umgekehrt, im Hex stand drin wo der Bootlader hin 
soll, und Du musst in den Fuses einstellen, wo er tatsächlich ist, bei 
ATM32 z.B. $3800, $3C00, $3E00 oder $3F00. Sollte irgendwo in der Doku 
zu finden sein.

Wenn 31632 Bytes geschrieben worden sind, dann ist das Ende an 
Wortadresse $3DC8, also wäre es für 'nen ATM32 entweder $3800 (default) 
oder $3C00 bei 'nem kleinen Bootlader. Von der Größe des Hex her, ist's 
$3800.

Joachim Drechsel schrieb:
> müßte er doch nach $3800 laden ?

Häng's Hex an, dann seh ich's nach.

Hast Du die BOOTRST Fuse passend gesetzt ?
OP (Firma: JDCC) #2611588
Lesenswert?

MWS schrieb:
> Lader fängt bei $3C00 an.

Wieso $3c00 ? Auf 
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Grundlagen
steht etwas von ATmega32/324/328   28672 Byte   4096 Byte   0x7000 
0x3800 ?

Mit BOOTSZ0 = 1 und BOOTSZ1 = 0 wären das auf 0xF00 - 0xFFF eingestellt,
Größe 256x2 Byte x 8 Pages = 4 kB. Eigentlich sollte das passen.

Meldet sich der Boot-Lader nach einem Rest über die RS232 ?

Offensichtlich ist zwischen Netserver und dem Board Funkstille, mit
dem Scope sehe ich nichts auf der Leitung.
Gast #2611648
Lesenswert?

Joachim Drechsel schrieb:
> Wieso $3c00 ? Auf
> http://www.mikrocontroller.net/articles/AVR_Bootlo...
> steht etwas von ATmega32/324/328   28672 Byte   4096 Byte   0x7000
> 0x3800 ?

Wenn Du meinst :-)

Es gibt nicht DEN, sondern viele Bootlader. Und beim ATM32 gibt es 
verschiedene Startadressen für den BL.
Der Artikel sagt auch:

> Dabei wurde immer die maximale Größe des Bootloader betrachtet

Also die niedrigste Adresse.

> Mit BOOTSZ0 = 1 und BOOTSZ1 = 0 wären das auf 0xF00 - 0xFFF eingestellt,
> Größe 256x2 Byte x 8 Pages = 4 kB. Eigentlich sollte das passen.

Aha. Was sollte passen ? Dass die von Dir beschriebene Einstellung 
Bootlader@$3C00 ergibt ?

Ja, das ist so.

Schau mal hier:
http://www.engbedded.com/fusecalc/#

> Meldet sich der Boot-Lader nach einem Rest über die RS232 ?

Keine Ahnung, ich kenne den spezifischen Bootlader nicht, kann auch 
sein, dass der nur 'ne gewisse Zeit wartet und dann eben auf $0000 
springt.
Angehängte Dateien:
OP (Firma: JDCC) #2611822
Lesenswert?

Komisch - ich habe das ausgelesen, anbei ein Auszug aus dem Hexdump:

077f0 : ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff
07800 : 0c 94 2a 3c 0c 94 47 3c - 0c 94 47 3c 0c 94 47 3c
...
07b80 : 11 96 0f b6 f8 94 e2 9a - e1 9a 0f be 08 95 ff cf

fängt nicht, wie bei Deinem, bei $3c00 an (eher $3800 mit dem fehlenden
Bit). Ich mach mir jetzt mal ein Bier auf kopfkratz.

Irgendwann wird es mir wie Schuppen von den Augen fallen ;)

Alle ISP-Signal sind da. Es kommt aber nichts auf der RS232. dh, er
startet vermutlich nicht. Also mal sehen, was das Board nach einem
harten Rest so macht ...

Danke, daß Du mir da keine "Fertiglösung" hinknallst. Ich will das
selbst herausbekommen. Es kann auch nicht schlimmer sein wie
japanische Bestückautomaten zu hacken. Irgendwann macht es "Klick".

Grüße Joe.
Gast #2611839
Lesenswert?

Joachim Drechsel schrieb:
> fängt nicht, wie bei Deinem, bei $3c00 an (eher $3800 mit dem fehlenden
> Bit). Ich mach mir jetzt mal ein Bier auf kopfkratz.

Kuckst Du bei $7800 das erste Programmbyte :-)
$7800 ist eine Byteadresse, die teil' mal durch 2, dann hast Du die 
Wordadresse $3C00.

In den Datenblättern und auch beim von mir verlinkten Fusecalculator 
wird sich immer auf Wordadressen bezogen, darum nehm' ich die auch.

Ist übrigens auch in Deinem Link:

> http://www.mikrocontroller.net/articles/AVR_Bootlo...
> steht etwas von ATmega32/324/328   28672 Byte   4096 Byte   0x7000
> 0x3800 ?

so zu finden:

> Startadresse des Bootloaders (Byteadresse) (Wordadresse)

Joachim Drechsel schrieb:
> Danke, daß Du mir da keine "Fertiglösung" hinknallst. Ich will das
> selbst herausbekommen.

Ehrlich gesagt hätte ich da auch keine. Hab' zwar noch so'n Net-IO 
rumliegen, aber nie benutzt, kann also zum Bootlader nur das sagen, was 
ich selbst rausfinde.

Wenn alle Stricke reißen, könnte ich noch im Hex-File nachsehen, was das 
so macht, oder auf was gewartet wird.
Aber da muss es ja auch 'ne Anleitung dazu geben.
OP (Firma: JDCC) #2611845
Lesenswert?

Anleitung ja - funktioniert aber nicht.

Das Flashen scheint hinzuhauen, das Problem ist anscheinend
NetServer.exe. Das Elend hat ja damit begonnen, daß ich versucht
hatte, die Firmware neu aufzuspielen. NetServer.exe bekommt
über die die RS232 keine Verbindung zum Board.

Zu Anfang hatte ja alles funktioniert, das ist das Verrückte.
(Firma: Huddel und Brassel Ltd.) Persönliche Seite #2612178
Lesenswert?

Ich habe jetzt keine Lust den ganzen Thread hier zu analysieren, 
deswegen gleich zu deiner Ausgangsfrage.

Eben probiert und funktioniert einwandfrei.

Alles OHNE Lan-Verbindung.

Netserver starten, bootloader.hex erzeugen, AVR-NET-IO anschliessen, 
Jumper auf "Prog"

Bootloader mit Programmiergeraet an ISP einspielen, siehe txt File 
(Pfade und Programmieradapter anpassen)
Fuses setzen, siehe txt File (Pfade und Programmieradapter anpassen)

Serielles Kabel an AVR-NET-IO und Netserver starten. Jumper bleibt auf 
"Prog"

Fimware-Update klicken und einspielen.

Jumper auf "Normal", Per Seriell IP vergeben, LAN anstoepseln und 
freuen.

Wenn du damit jetzt nicht zurecht kommst, weiss ich auch nicht.
Angehängte Dateien:
Gast #2612218
Lesenswert?

> Die Fuses habe ich, wie im Forum beschrieben, auf c2 und bf gesetzt.

> Die Fuses habe ich noch mal überprüft, sie stehen so wie im Handbuch
> S12/3.

Laut Handbuch und Peter W. ist das aber nicht C2 !
Angehängte Dateien:
OP (Firma: JDCC) #2612651
Lesenswert?

Servus Peter,

ich habe es gerade noch einmal laufen lassen, diesmal mit den
Fuses ca und bf. Dann zuerst den Bootload ohne -D (also Flash
gelöscht) und dann, mit Option -D die Firmware von Dir.

Es tut sich leider nichts beim live Ausprobierenauf der RS232.

Dann mal einen Dump des Boards gezogen (s. Anlage). Eigentlich
sieht das doch gut aus - am unteren Ende des FLash offensichtlich
die Firmware, oben der Bootloader.

NetServer kommt bis zur Meldung "[Firmwareupdate beginnt]" und
hängt sich dann auf (und zwar richtig). Ich kann nicht mal mehr
einen Screenshot machen ;) Entweder ein Problem mit meinem USB
auf RS232 Teil oder des Programms selbst. Der Adapter funktioniert
eigentlich problemlos.

Umgebung: WinXP prof, AVR8 Burn-O-Mat v2, avrdude 5.1.

---

Nächste Runde: mal den Prozessor getauscht und das direkt geflasht
(Fuses DA/BF). Ebenfalls tot.

---

Ich checke jetzt mal die Hardware durch, irgendwo ist da etwas faul.
Angehängte Dateien:
OP (Firma: JDCC) #2612724
Lesenswert?

Habe ich leider nicht.

Beim Ausmisten letztes Jahr habe ich eine Riesenkiste Kabel,
Adapter und so einen Mist weggeschmissen.

Bevor da kommt "das macht man doch nicht":

Der Kram war von mehreren kleinen Nagern so vollgeschissen, die
habe ich nicht mehr anlangen wollen. Ein Mainboard haben sie auc
totgepieselt. 58 Stück habe ich vorletzten Winter in meinem Büro
erwischt (Lebendfalle, Gelbe Säcke etc) bis ich das Loch in der
Decke gefunden hatte. Alle fotografiert ;)

http://murxvonmarx.de/bin/parse.exe?CMD=X&FILE=maus.htm

Halt eine ehemalige Scheune.
Gast #2612770
Lesenswert?

Warum eigentlich CA/BF DA/BF ?
Dabei ist schon klar, dass BF die Low Fuse ist ?

Außerdem löscht Du immer den EEPROM-Inhalt beim Flashen, keine Ahnung 
wie pingelig Netserver da ist, ob das EEPROM also wieder automatisch auf 
Defaults hergestellt wird.

CA geht auch nicht, da ist dann die CKOPT Fuse aus, der ATM32 braucht 
die aber für den Betrieb mit 16MHz Quarz.

Im Artikel hier steht ja richtig Low $BF High: $C2

http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin

In Firmware_1.3.hex ist die Firmware komplett mit Bootlader drin, wenn 
per ISP geflasht wird, ist alles (bis auf's EEPROM) wieder hergestellt.

Letzteres könnte man mal über "Save Config ..." versuchen wieder 
herzustellen.

Wenn dann der J11 noch richtig steht, damit er nicht mehr in den BL 
springt, sollte das doch wieder ok sein.

Und bringst Du dann noch den EEPROM-Inhalt per ISP drauf, sollte die 
Kommunikation bereits wieder über Ethernet klappen.
(Firma: Huddel und Brassel Ltd.) Persönliche Seite #2612773
Lesenswert?

Ja, widerliche Plagegeister.

Wenn du die firmware.hex aufspielst, kannst du den Rest auch ueber LAN 
machen. Der Haken, du musst meist vorher den Router kurz auf die 
standard IP des AVR-NET-IO stellen.
Koennte auch mit einem Crossover direkt am Rechner gehen, da bin ich mir 
jetzt nicht so sicher und ausprobieren mag ich nicht mehr. Das Ding ist 
schon wieder in den Tiefen der unerledigten Projekte gewandert.

Die RS232 brauchst du eh nie. Bei der Software die sich so im Web 
findet, stellt man die IP sowieso im Quelltext ein und dann geht das 
alles uebers LAN.
OP (Firma: JDCC) #2615452
Lesenswert?

Soderle, das kleine Webserverchen tut es jetzt mit der
Software von G. Menke.

Zur Hardware:

Lt. Manual muß man, damit der Ethernetport läuft, das ISP-Kabel
abstecken - die Leitungen werden intern verwendet. Da wäre es doch
eigentlich praktisch, könnte man den Programmer in so eine Art
"Offline Mode" schicken (zB alle Portpins auf 3-State). gibt es
so etwas ?

Die Ladezeiten sind hundserbärm\b\b\b\b ... 3,42 KB in 1,94 sec
ist ziemlich lahm (internes Netzwerk 1 GB). Könnte da noch etwas
faul sein oder ist das bei einer 16 MHz Maschine normal ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren