Hallo, ich arbeite gerade mit dem chip45boot Bootloader am ATmega168 ( http://www.chip45.com/chip45boot ). Das Funktioniert auch soweit ganz gut. Das Problem ist, dass das EEPROM immer mir 0 beschrieben wird, auch wenn ich nur das Flash programmiere und das EEPORM eigentlich stehen bleiben sollte. Die Fuse EESAVE ist so gesetzt, dass das EEPROM eigentlich bleiben sollte. Habt Ihr einen Tip wo ich die Fehlersuche beginnen könnte ? MfG
Du könntest im Quellcode anfangen ;-) Ich habe auch schon mit diesem Bootloader gearbeitet. Allerdings mit dem Crumb128 Hatte damals gute Erfahrung mit dem bootloader gemacht. Da er STK500V1 spricht habe ich mit avrdude gearbeitet. Mit welchem Progeramm programmierst du?
Hallo, ich schicke das srec im Moment noch mit Hyperterminal. Werd dann aber später ein kleines VisualBasic-Programm schreiben. Bin immer noch ratlos an welcher Stelle genau er das EEPROM beschreibt. Wenn ich erst dan Bootloader mit AVR-Studio programmiere. Dann das Hauptprogramm über den Bootloader programmiere und danach das EEPROM beschreibe und dann wieder mit dem AVR-Studio den Bootloader flashe bleibt das Hauptprogramm und das EEPROM drin. Es ist also definitiv der Bootloader selbst der das EEPROM beschreibt.
Um das Problem weiter zu verdeutlichen: Im EEPROM sind verschiedene Kalibrierwerte für das jeweilige Gerät drin und die sollen erhalten bleiben, auch wenn die Firmware ein Update über den Bootloader bekommt.
Hab jetzt alle Funktionen aus dem Bootloader gelöscht die auf das EEPROM zugreifen könnten. Hat leider nicht geholfen, das EEPROM wird immer noch mit Null beschrieben :(
Die einzigen Funktionen die ich jetzt noch benutze um das Flash zu schreiben sind:
1 | boot_page_erase(writeBaseAddress); // do a page erase |
2 | boot_spm_busy_wait(); // wait for page erase done |
3 | |
4 | boot_page_write(writeBaseAddress); // do a page write |
5 | boot_spm_busy_wait(); // wait for write completed |
6 | |
7 | boot_rww_enable(); // reenable rww section again |
Hallo, es gibt einen neuen Bootloader von chip45: chip45boot2. Er ist komplett überarbeitet und liest nun direkt Intel Hex Files über einen UART ein (kein SREC Erzeugen mehr notwendig) und stellt seine Baudrate automatisch ein! Es gibt viele vorkompilierte Hexfiles, die nur vom Controllertyp und vom UART abhängig sind, ansonsten aber unabhängig von jeglicher Clock Einstellung laufen! www.chip45.com/chip45boot2 Viele Grüße, ER!K
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.