Forum: Mikrocontroller und Digitale Elektronik Bootloader Problem: Funktioniert nur ein Mal


von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich brauche Eure Hilfe für folgendes Problem:

Auf meinen Atmega8 habe ich den Bootloader Fastboot V2.1 von Peter 
Dannegger aufgespielt. Bin dabei so vorgegenagen, wie in der 
beiliegenden ReadMe-Datei erklärt (Makefile angepasst, HEX-File erzeugt 
und hochgeladen, Fuses eingestellt). Zur Ansteuerung des Bootloaders 
habe ich das im Artikel über den Bootloader
http://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger
erwähnte Python-Programm verwendet.
http://www.kreatives-chaos.com/artikel/fastboot17-frontend-python

Das ganze funktionierte auf Anhieb, aber nur genau ein Mal. Wenn ich 
nach Aufspielen meines HEX-Files Änderungen auf den µC laden will, 
versucht sich das Programm mit dem Bootloader zu verbinden und hängt 
fest.

Ich gehe folgendermaßen vor: Python-Programm mit erforderlichen 
Parametern starten --> Reset des µC, damit der Bootloader geladen wird

Was mache ich falsch? Habe die Fuse/Lock-Bit-Einstellungen und die 
Ausgabe des Python-Prog auf der DOS-Konsole als Bild angehängt.

Danke sehr
Rob

von Oliver J. (skriptkiddy)


Lesenswert?

512 Words ~= 512 Bytes

Stell mal auf 256 Words.

von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Skript Kiddy schrieb:
> Stell mal auf 256 Words

Hab ich getan, hat aber leider nix geändert. Es geht nach wie vor genau 
ein mal.

von Peter D. (peda)


Lesenswert?

Robert schrieb:
> Hab ich getan, hat aber leider nix geändert. Es geht nach wie vor genau
> ein mal.

Das PC-Programm muß laufen, bevor der AVR aus dem Reset rauskommt.
Der Bootloader wartet nur 0,3s auf das Paßwort vom PC.


Peter

von weinbauer (Gast)


Lesenswert?

Habe gerade ein ähnliches Problem, nur ne andere Toolchain und M128.

Wenn ich den Loader per STK500.exe flashe geht er genau ein mal. Wenn 
ich ihn per AVR-Studio flashe gehts einwandfrei. Warum, das weiß Atmel 
alleine.

von Robert (Gast)


Lesenswert?

Hallo Peter,

leider tut sich nix. Ich habe den Atmega8 auf einem STK500 und kann 
machen was ich will:

1) Python-Frontend starten und dann entweder:
2) Reset-Button drücken
3) oder Ein-Ausschalten
4) oder Reset-Pin auf GND ziehen

aber das Programm verbindet sich nicht mit Deinem Bootloader

Gruß
Rob

von Peter D. (peda)


Lesenswert?

Wenns nur einmal geht, kann ich mir nur vorstellen, daß die BOOTRST-Fuse 
nicht gesetzt ist.


Peter

von Robert (Gast)


Lesenswert?

Peter Dannegger schrieb:
> daß die BOOTRST-Fuse
>
> nicht gesetzt ist.

Ist Sie (siehe Bild oben im Anhang).

Habe jetzt mal ein bisschen ausprobiert und es geht unter folgenden 
Bedingungen:

Wenn ich das Python-Programm starte und innerhalb von wenigen 
Sekundenbruchteilen entweder einschalte oder Reset drücke, dann geht's. 
Warte ich auch nur einen kleinen Moment zu lang, dann geht nix.

Wenn das Programm mal länger läuft, dann geht weder Reset noch 
Aus-Einschalten.

von Robert (Gast)


Lesenswert?

Es lag am Python-Programm. Da war ein

time.sleep(0.1)

in der Hauptschleife. Nach dem Auskommentieren geht es jetzt 
einwandfrei.


Danke für die Hilfe und herzlichen Dank an Peter Dannegger für die 
Arbeit, die in diesem Bootloader steckt!


Gruß
Rob

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.