Hallo,
ich habe einen Galep-4 zum programmieren. Da es aber auf Dauer nervt den
Controller immer aus dem Steckbrett zu holen, um ihn neu zu
programmieren möchte ich auf ihm einen Bootloader über RS232 laufen
lassen.
Ich habe von www.chip45.com mir den bootloader heruntergeladen und an
den ATmega8 für 8MHz angepasst. Der Bootloader lässt sich auch starten,
(er erwartet ein 'i' an der UART und gibt dann ein Prompt aus '>') lässt
sich dann aber nicht wie erwartet flashen!
Ich bin mir nicht sicher wo der Fehler steckt. Vielleicht in den
Fusebits?
Ich habe folgende gesetzt:
SPIEN
EESAVE
BOOTRST
BOOTSZ10: 01
SUT10: 01
mfg Christian
hallo,
bischen dürftig, dein input.
was benutzt du zur kommunikation mit dem controller? was erwartest du,
soll passieren, und was passiert statt dessen?
mehr input plz,
bye kosmo
Hallo Kosmo,
tschuldigung für den fehlenden input. Zur Kommunikation mit dem uC
benutze ich die RS232, die hab ich auch schon mit einem Testprogramm auf
dem uC mit TeraTermPro getestet. PC-seitig funktioniert die somit.
Den Bootloader hab ich für den ATmega8 mit nem Arbeitstakt 8Mhz
kompiliert und mit nem Galep4 auf den Controller geflasht. Der
Bootloader erwartet nach einem Reset ein 'i' und antwortet mit einem
Prompt '>'. Das funktioniert auch noch so weit.
Jetzt soll der neue Code z.B. mit TeraTermPro übertragen werden. Aber
wenn ich den File sende gibt es keine Reaktion. Eigentlich sollte der uC
mit '.' antworten, so dass man ein Reaktion sieht.
Tja, sieht irgendwie so aus, als ob der Bootloader gestartet werden
kann, dann aber nicht in der Lage ist das Programm in den Flash zu
speicher.
Meine Vermutung wären die Fuse-Bits?!
Highfuse: 0xd2
RSTDISB: 1
WDTON : 1
SPIEN : 0
CKOPT : 1
EESAVE : 0
BOOTSZ1: 0
BOOTSZ0: 1
BOOTRST: 0
Lowfuse : 0xd4
BODLEV : 1
BODEN : 1
SUT1 : 0
SUT0 : 1
CKSEL3 : 0
CKSEL2 : 1
CKSEL1 : 0
CKSEL0 : 0
mfg Christian
hallo,
die fusebits sehen für mich ganz ok aus. Deine takteinstellung ist nicht
so, wie es per default in dem makefile steht, sollte aber egal sein.
welchen von den loadern auf der chip45-seite hast du gezogen? und was
hast du in dem Makefile geändert? aber da sich der loader schon mal
meldet, ist zu vermuten, dass da alles korrekt ist.
bye kosmo
hi,
ich hab es zuerst mit dem auf der chip45.de Seite angebotenen Loader
versucht. Der ist schon kompiliert und kann dort so heruntergeladen
werden.
Aber auch mit TeraTermPro funktioniert es nicht. Beide zeigen aber an,
dass der Bootloader gestartet ist, nur mit dem Flashen funktioniert es
nicht.
mfg Christian
hallo,
kein plan, was "TeraTermPro" ist.
du schreibst, du hast den bootloader auf den atmega8 angepasst.
gleichzeitig nimmst du aber ein vorkompiliertes image. beide aussagen
zusammen sind nicht ganz stimmig.
bei crumb gibt es zwei bootloader.
hast du das hier?
>ATmegaBOOT_CRUMB8_F14745600_050815.hex
oder das?
>chip45boot_mega8_1k_14745600hz_pre.hex
die dateinamen von beiden legen für mich nahe, dass es sich um versionen
für 14,... MHz takt handelt. auch wenn man sich die dateinamen anderen
vorliegenden images anschaut.
bye kosmo
Hi,
ich benutze nicht den ATmegaBoot sondern den chip45boot. Den hab ich für
8MHz und den ATmega8 neu kompiliert.
1
"gleichzeitig nimmst du aber ein vorkompiliertes image."
Das vorkompilierte Image bezieht sich auf die Bootloader-Applikation für
den PC, mit der ich den hex-File in den Flash lade.
TeraTermPro ist ein RS232-Terminal für den PC, hab ich nur zur Kontrolle
genutzt, da es mit dem PC-Tool von chip45 nicht funktioniert hat.
Tja, hab noch ein bisschen rumprobiert, aber es läuft noch immer nicht.
:-(
(ich glaub ich werd mal lieber den Bootloader von Peter Dannegger
UART Bootloader ATtiny13 - ATmega644 ausprobieren.)
Noch ne Idee?
mfg Christian
Hallo Christian,
habe den Thread erst jetzt gelesen. Vielleicht hast Du inzwischen schon
die Lösung. Falls nicht:
Ich hatte exakt das gleiche Problem mit dem ATmega8. Liegt
offensichtlich daran, daß die Interrupt-Routine für den UART nicht
gescheit arbeitet, evtl. sogar den Stack korrumpiert - vielleicht eine
Eigenheit des Mega8. Das habe ich nicht im Detail untersucht. Ich habe
auch andere Bootloader angeschaut, aber der von chip45 hat mir am besten
gefallen, weil er, wenn er denn läuft, gut zu handhaben und zudem recht
kompakt ist.
Meine pragmatische Lösung bestand darin, die Zeichen nicht über den
Interrupt einzulesen, sondern die UART zu pollen, und schon läuft alles,
wie es soll. Achtung: Das im Programm angegebene Verfahren zur Erzeugung
eines srec aus dem Hex-File setzt als Endekennzeichen einen S5-Record.
Das ist im Programm so nicht berücksichtigt muß auch angepaßt werden,
sonst wird der nie fertig.
Wenn Du an meinem Workaround interessiert bist, Mail an kt(at)ktghome.de
. Ich schicke Dir dann das modifizierte Progrämmchen.
Gruß - Klaus