Ich habe ein Problem mit dem Flash Downloader in Verbindung mit einem Mega128L. Kurz gesagt, das EEProm wird geflashed, das Flash aber nicht, obwohl in Define Fuses ProgFlash = true; ProgEEprom = true; gesetzt ist.
Ich habe ein Testprogram sehr ähnlich zu dem Demo AVR Selfprog geschrieben, in dem eine Startmeldung und dann beim Empfang eines Zeichens über die serielle Schnittstelle Variablen im EEProm ausgegeben werden, und beim Empfang von 'd' auf den Flashdownloader umgeschaltet wird. Die erste Version des Programms wird (einwandfrei) über SPI im Mega geflashed. Dann ändere ich die Startmeldung auf einen anderen Text und ändere die Reihenfolge der Variablen im EEProm und erzeuge ein pac-File.
Mit 'd' wird auf den Bootloader umgeschaltet, das V24-Terminal disconnected und das E_Lab Flash Downloader Programm mit dem pac-file gestartet. Es erkennt den Mega und der Programmiervorgang von Flash und EEProm wird durch den Progress-balken angezeigt und als erfolgreich gemeldet.
Ein V24-Monitor in der seriellen Leitung zeigt den korrekten Ablauf von 'A'adress, CR, E, CR, D<128byte>, Checksum,'P' an, und dann den Ablauf für das EEProm.
Beim Neustart kommt die alte Startmeldung, aber falsche EEProm-Variablen. Auslesen des EEProms bestätigt, dass der Inhalt des EEProms der neuen Version entspricht, nicht aber der des Flash. D.h. 'E' (page löschen) und 'P' (transfer aus dem temporären Buffer an die page der Adresse), werden aufgerufen (und im *.lst sieht man z.B. RJMP SYSTEM.WriteSPM_1), aber nicht ausgeführt.
Auslesen der Fuses zeigt alle Lockbits unprogrammiert. Das Verhalten zeigt sich auf allen getesteten Mega128L.
Was ist hier falsch? Bin für jeden Tip dankbar
BerndK
Ich habe ein Testprogram sehr ähnlich zu dem Demo AVR Selfprog geschrieben, in dem eine Startmeldung und dann beim Empfang eines Zeichens über die serielle Schnittstelle Variablen im EEProm ausgegeben werden, und beim Empfang von 'd' auf den Flashdownloader umgeschaltet wird. Die erste Version des Programms wird (einwandfrei) über SPI im Mega geflashed. Dann ändere ich die Startmeldung auf einen anderen Text und ändere die Reihenfolge der Variablen im EEProm und erzeuge ein pac-File.
Mit 'd' wird auf den Bootloader umgeschaltet, das V24-Terminal disconnected und das E_Lab Flash Downloader Programm mit dem pac-file gestartet. Es erkennt den Mega und der Programmiervorgang von Flash und EEProm wird durch den Progress-balken angezeigt und als erfolgreich gemeldet.
Ein V24-Monitor in der seriellen Leitung zeigt den korrekten Ablauf von 'A'adress, CR, E, CR, D<128byte>, Checksum,'P' an, und dann den Ablauf für das EEProm.
Beim Neustart kommt die alte Startmeldung, aber falsche EEProm-Variablen. Auslesen des EEProms bestätigt, dass der Inhalt des EEProms der neuen Version entspricht, nicht aber der des Flash. D.h. 'E' (page löschen) und 'P' (transfer aus dem temporären Buffer an die page der Adresse), werden aufgerufen (und im *.lst sieht man z.B. RJMP SYSTEM.WriteSPM_1), aber nicht ausgeführt.
Auslesen der Fuses zeigt alle Lockbits unprogrammiert. Das Verhalten zeigt sich auf allen getesteten Mega128L.
Was ist hier falsch? Bin für jeden Tip dankbar
BerndK
Attachments
Filename: | TestFlash.zip |
Filesize: | 53.38 KB |
Title: | TestFlash |
Download counter: | 23 |