Forum: Compiler & IDEs Chip45boot Bootloader


von Frank H. (avrnooby)


Lesenswert?

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

von Ulrich (Gast)


Lesenswert?

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?

von Frank H. (avrnooby)


Lesenswert?

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.

von Frank H. (avrnooby)


Lesenswert?

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.

von Frank H. (avrnooby)


Lesenswert?

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 :(

von Frank H. (avrnooby)


Lesenswert?

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

von Frank H. (avrnooby)


Lesenswert?

Hat niemand einen Tip ?

von Erik Lins (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.