Forum: Compiler & IDEs ATmega8 mit chip45bootloader läuft nicht (Fusebits?)


von Christian (Gast)


Lesenswert?

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

von kosmonaut pirx (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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

von kosmonaut_pirx (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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

von kosmonaut_pirx (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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

von kosmonaut_pirx (Gast)


Lesenswert?

hallo,
nein, wirst dich wohl ein bischen mit dem source auseinander setzen 
müssen. ist ja nicht soo viel, hab grad mal reingeschaut :)
bye kosmo

von Klaus G. (ktg)


Lesenswert?

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

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.