Hallo, ich verwende einen ATMega88 und möchte beim Start des Programms eine Flash-Diagnose durchführen. Hierzu habe ich mir eine Routine geschrieben, welche mir den Speicherinhalt des Flashs von Adresse 0000-1FFD aufsummiert (arithmetische Summe, 2Byte). Der verwendete IAR-Linker erzeugt mir ebenfalls eine entsprechende Summe des obigen Speicherbereichs und legt diese am Ende des Flash (1FFE-1FFF) ab. Leider unterscheiden sich die beiden Summen. Klar, es kann sein, dass tatsächlich ein Defekt vorliegt, aber vielleicht habe ich auch einen Denkfehler gemacht. Meine Routine habe ich als Anhang beigefügt. Sieht hier jemand einen Fehler oder habe ich das Thema gar komplett versiebt. Danke für eure Bemühungen. Gruß Ralf
Ok, ich weiß jetzt, dass es mit den Breakpoints des AVRStudio zusammenhängt. Diese werden wohl beim Debugging im Flash abgelegt. Ich gehe mal davon aus, dass man dies nicht umgehen kann. Falls doch, wäre ich für eine Antwort dankbar. Gruß Ralf
Ändere die Zählschleife so ab das sie Word-basiert über den Code zusammenzählt. Nun kannst du vorher überprüfen ob der Opcode ein Breakpoint ist. Ich weis leider nicht was AVRStudio als Opcode dafür benutzt. Statt nun diesen Opcode aufzusummieren summierst du 0xFFFF oder 0x0000 auf, also den Code der im HEX als Filler genommen wird. Deine Zählschleife summiert also statt der Breakpoints den Wert für eine unbenutzte Speicherzelle zusammen. Gruß Hagen
Hallo Hagen, vielen Dank für deinen Tipp. Leider ist das Problem nicht so einfach zu lösen. Das AVRStudio fügt nicht einfach einen einzelnen Befehl für den Breakpoint ein, sondern modifiziert das Programm mit Sprungbefehlen und verschiebt sogar einige Programmteile. D.h. ein einfaches Überschreiben ist nicht möglich. Aber wenn das Programm keine Breakpoints enthält, funktioniert ja die Flash-Diagnose. Aber troztdem danke für die Antwort. Gruß Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.