"Asuro Flash Tool" V1.53 zeigt Page-Error am Ende
Hallo zusammen,
ich habe schon nach vergleichbaren Threads gesucht, aber keinen passenden zu meinem Problem gefunden:
Problem:
Das "Asuro Flash Tool V1.53" reagiert seltsam! In den allermeisten Fällen läuft es super. Aber unter ganz bestimmten Bedingungen, die nur vom Inhalt(!) des erstellten HEX-Files abhängen, bekomme ich bei nur ganz bestimmten Pages erhebliche Probleme (ChecksumError, Timeout).
Details:
Was geht: Sowohl RS232- als auch USB-Infrarot-Adapter laufen ganz hervorragend bei mir. Testprogramme aus der Asuro-Lib und von Henk lassen sich super flott flashen. Auch das extrem große 'sensoren.hex' Programm zum Kalibrieren der 'myasuro.h'-Werte lässt sich IMMER völlig ohne Retries oder Timeouts flashen. Deshalb gehe ich mal davon aus, dass sowohl der Infrarot-Adapter als auch das ATmega8-interne Flash in Ordnung sind.
ABER: Wenn ich eigene Testprogramme erstelle (z.B. auf Basis von Lib-Demos), erscheinen nur selten - dann aber sehr gut reproduzierbar - Flash-Fehler, und zwar bevorzugt bei den letzten benötigten Pages. Wenn ich dann einige Codezeilen entferne ODER hinzufüge, verschwindet das Problem wieder - uns zwar sicher repoduzierbar! ???
Das FlashTool arbeitet mit dieser 'AsuroFl.ini':
- 10 #Timeout Connect
5 #Timeout Flash ('t')
10 #MaxTry for flashing
Das Problem tritt übrigens sowohl bei voll geladene 900 mAh Akkus als auch bei nagelneuen 1,5V AAA Batterien auf. Die alte Version "Asuro Flash Tool V1.51" hat übrigens unter gleichen Bedingungen noch mehr Probleme.
Wie kann das nur sein? Ich habe keine Vorstellung davon, wie der Inhalt des HEX-Files Einfluss haben kann auf den Erfolg beim Übertragen/Flashen des Programms.
Fragen:
- Hat jemand ähnliche Erfahrungen?
- Hat jemand eine Idee, was die Ursache sein könnte?
- Wie könnte man das beheben?
Vielen Dank für eure Hilfe!
Ralf
Liste der Anhänge anzeigen (Anzahl: 1)
Habe da mal eine Bitte, um auszuschließen, das es am "Flash Tool" liegt:
Kann mal jemand bitte das u.a. HEX-File auf seinen Asuro-Flashen? Es ist harmlos, kein Motor startet, nur Tasten/Sensoren und die Status-LED aktiviert, die Serielle Schnittstelle gibt was aus.
Wenn es bei euch erfolgreich geflashed wurde, kann es nicht mehr am Tool liegen, dann ist wahrscheinlich der interne Flash in meinem Asuro defekt.
Danke!
Ralf
Liste der Anhänge anzeigen (Anzahl: 1)
bestätigung
Hi,
ich weiss nicht ob es Euch noch hilft, aber auch bei mir ist bei p85 Ende...
(serieller Adapter, macht sonst nicht die geringsten Probleme)
Was ist in dem hex drin? (source?)
lg,
Martin
Liste der Anhänge anzeigen (Anzahl: 4)
Vielen Dank, dass ihr euch die Mühe macht, das auch zu testen. Und gut zu wissen, dass das Problem offensichtlich auch bei anderen zu reproduzieren ist.
Ich habe in der Zwischenzeit an meinem Projekt (Farberkennung) etwas weitergearbeitet - soweit es ging. Wie gesagt taucht das Flash-Problem immer wieder auf - und verschwindet wieder. Und es betrifft immer nur eine der letzten drei Pages. Jetzt habe ich es auf eine einzige Zeile Code (die an sich unschädlich ist) eingrenzen können!
Anbei findet ihr drei ZIP-Files:
- Farberkennung_ok.zip - nur Build-Results, Version, die sich bei mir Flashen lässt
Farberkennung_PagerError.zip - nur Build-Results, Version die sich bei mir nicht Flashen lassen
Farberkennung_AVRStudio_Projekt.zip - das gesamte AVRStudio-Projekt
Beide Versionen (PageError/ok) compilieren/linken natürlich fehlerfrei, sie unterscheiden sich nur im Aufruf eines einzigen "SerPrint()".
In den Build-Results sind auch avr-dump Ergebnisse beider Versionen (PageError/ok) enhalten. Ich bin allerdings nicht in der Lage, daraus etwas zu erkennen.
Ich denke, der Vergleich der HEX-Files ist evtl. interessanter - hier muss ja irgendwie die Ursache liegen, soweit ich das verstanden habe. Wer kennt sich denn mit dem "Flash Tool" aus und könnte was dazu sagen?
Danke für eure Hilfe!
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank, Osser und Mic, dass ihr euch des Problems annehmt.
Ich habe jetzt auch mal "Asuro Flash" ('Eierlegendewollmilchsau' V1.8.13.110) getestet: Ein beliebiges Programm damit kompiliert und die entstandene 'text.hex' gegen die o.a. Version 'Farberkennung_PageError.hex' ausgetauscht. Das Ergebnis seht ihr unten: Error!
Das interessante dabei: Ossers "Asuro Flash" erkennt im gleichen HEX File nur 77 Pages, wo das reine FlashTool "Asuro Flash Tool V1.53" (die Namen sind wirklich unglücklich) 79 Pages erkennt - und bei 77 scheitert (bei mir).
Das kann doch schon mal garnicht sein, dass zwei verschiedene Tools im gleichen HEX File eine unterschiedliche Anzahl zu flashender Pages erkennen, oder?
Und das Kuriose dabei: Das HEX-File ist nicht irgendwie manipuliert - es ist ganz einfach aus dem gcc-Make-Prozess (Projekt: siehe oben) entstanden.
Derartige Probleme sehe ich sonst nirgendwo im Forum. Bin ich denn wirklich der einzige mit diesem 'Fenomen'????
Ich bin für jede Hilfe dankbar!
Ralf
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Osser, danke, dass du dich darum kümmerst!
Hier noch etwas Background zum Phänomen: Ich habe beide Asuro-InfraRot-Adapter: die reine COM-Port-Version und die USB-Version (beide ca. 2 Jahre alt). Die reine COM-Port-Version geht über eine PCI-Erweiterungskarte (2xCOM+1xLPT) auf COM4 des PC. Die USB-Version kann ich direkt an einen USB-Anschluss des Motherboards (also ohne internen/externen Hub) anschließen. BEIDE IR-Adapter funktionieren in der Regel einwandfrei. Auch der Asuro lässt sich i.d.R. einwandfrei und komplett flashen. Nur manchmal - je nach dem welche Sourcecodeänderungen ich gerade vorgenommen habe - klappt es nicht, gerade jetzt habe ich den Fall wieder.
Interessanterweise lässt sich meine aktuelle Version (Hex-File, siehe unten) über den COM-Adapter reproduzierbar super gut flashen, über den USB-Adapter aber zuverlässig garnicht (wieder PageError bei vorletzter Page, Page 99). Mit bestimmten Hex-Files schafft es aber auch der COM-IR-Adapter zuverlässig nicht!
Und noch etwas: Oft - leider nicht immer - bekomme ich den PageError weg, in dem ich einfach statisches ROM reserviere mit folgender Anweisung:
Code:
// -----------------------------------------------------
// DUMMY ARRAY FÜR FLASH PROBLEM
const uint8_t aucDummy[10] __attribute__ ((section (".text")));
Manchmal reicht es, die ArraySize von 16 auf 32 (und anders herum) zu ändern, dann geht es wieder.
Rätsel über Rätsel..... :-k