Hallo, ich programmiere gerade für ein AVR einen Bootloader. Jetzt gibt es halt das Problem mit den ersten starten nach der Programmierung, wo halt noch kein Programm da ist. Ich würde jetzt gerne Testen ob ein Programm bei der Adresse 0000 vorhanden ist oder nicht. Dazu habe ich mir gedacht ich lese ein Paar Bytes ab der Adresse 0x0000, und prüfe ob diese alle 0xFF sind. Wenn alle FF sind, dann ist kein Programm da. Meine Frage dazu ist, wie lese ich ein Paar Bytes aus dem Flash ab der Adreese 0x000?
Wer liest hier? Du, mittels Auslesens z.B. via ISP? Oder der Bootloader?
@Amateur Im Bootloader zur Laufzeit. Da der AVR beim Starten via Spannung aus/an immer erst im Bootloader startet. Benötige ich das um zu bestimmen, ob sofort zum eigendlichen Programm gesprungen werden soll oder ob im Bootloader Modus verblieben werden soll. Ich hatte auch noch vergessen zu schreiben ich Programmiere in C. Und ich habe mich bei meinem Bootloader an folgenden Artikel Orientiert http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
Du willst also, wenn es ein Programm gibt, direkt dorthinspringen. Und wann willst du flashen? Also wenn schon ein prog drauf ist.
Zepp schrieb: > Meine Frage dazu ist, wie lese ich ein Paar Bytes aus dem Flash ab der > Adreese 0x000? pgm_read_byte funktioniert nicht? AVR-GCC-Tutorial (Abschnitt 14.2)
@nga Ich habe zusätzlich noch im EEPROM ein Flag, welches angibt ob im Bootloder Modus verblieben werden soll. Dieses wird im normalen Programm gesetzt. Nur beim ersten Programmieren ist halt noch nichts im EEPROM drin. Ich habe also Folgende Bedinnung um im Bootloader Modus zu verbleinen Wenn kein Programm bei der Adresse 0000 vorhanden ist oder das Bootloader Flag (EEPROM) gesetzt ist
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.