Forum: Mikrocontroller und Digitale Elektronik Applicationprog. und Bootloader überschreiben sich gegenseitig


von Andree S. (amshh)


Lesenswert?

Hallo,
mache soeben meine ersten Schritte mit Bootloader und finde 
offensichtlich einen bestimmten Schalter nicht. (Oder es gibt ihn nicht)

AVR Studio 4.18:
Minimal Test-Bootloader gebaut, der auf dem Display nur ausgibt, dass es 
ihn gibt, nach 5 Sek. Sprung zum Application Prog.

Mit Studio übersetzt und dann (über Dragon) mit dem grünen Pfeil (Start 
Debugging) in den AVR1284P geschoben. Hex zurückgelesen um mal zu 
schauen, ob er da gelandet ist, wo er soll. Ist er.
Aber oh Schreck. Das Application Programm ab $0000 ist weg.

Und umgekehrt verhält es sich genau so. Application Programm geflasht 
>>> Bootloader weg.

Schlussfolgerung:
Auf diesem Weg passiert immer ein Chip Erase vorweg.

Probiert:
- Bootloader programmiert
- Fuses "LPM und SPM prohibited in Boot Section" gesetzt
- Application Programm geflasht >>> Bootloader weg. (Warum ?)
(Ja ich weiß, Lock Bits werden danach immer zurückgesetzt. Aber 
wenigstens einmal wirken dürften sie doch)

In AVR-Studio unter Program>Flash nach dem Application Programm Flash 
den Bootloader direkt durch Angabe des Hexfile programmiert. >>> das 
klappt.
Beide Teile bleiben erhalten.
Nach Reset kommt Bootloader, zeigt sich 5 Sekunden und dann Sprung zum 
Applikation Prog., wie es sein soll.


Frage 1:
Gibt es in AVR-Studi einen Schalter den ich nicht finden kann, um das 
Chip Erase zu verhindern ?

Frage 2:
Sollte "LPM und SPM prohibited in Boot Section" nicht mindestens einmal 
vor über-flashen schützen ?

Frage 3:
Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus 
Versehen den jeweils anderen Teil zu löschen ?


Danke+Gruß
Andree

von Thomas E. (thomase)


Angehängte Dateien:

Lesenswert?

Andree S, schrieb:
> Frage 1:
> Gibt es in AVR-Studi einen Schalter den ich nicht finden kann, um das
> Chip Erase zu verhindern ?
Eine kleine Tomate hast du schon auf den Augen, oder?

> Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus
> Versehen den jeweils anderen Teil zu löschen ?
Mach erstmal deinen Bootloader fertig. Und mit dem brennst du dann die 
Applikation. Dann hat sich das unerwünschte Überschreiben von selbst 
erledigt. Das ist doch Sinn eines Bootloaders. So, wie du jetzt davor 
bist, kannst du ja nur das Umschalten vom Bootloader zur Applikation 
testen.

mfg.

von Stefan F. (sfrings)


Lesenswert?

Das Anwendungsprogramm beginnt immer an Adresse 0, der Bootloader liegt 
am Ende des Flash Speichers. Wo genau, stellst Du mit Fuse Bits ein.

Beim Compilieren des Bootloaders musst Du dem Linker seine Startadresse 
mitteilen, damit das Hex File an der richtigen Adresse beginnt. ( 
-Ttext=0x....). Hast Du das vergessen?

von Andree S. (amshh)


Lesenswert?

Thomas Eckmann schrieb:
>
> Eine kleine Tomate hast du schon auf den Augen, oder?
>
Genau damit rechne ich. Dass es etwas ist, wo man 10x draufschaut und es 
trotzdem nicht erkennt. Leider aber ist dieser Haken bei mir nicht 
gesetzt. (Und das hätte ich vermutlich auch nicht übersehen....)

>> Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus
>> Versehen den jeweils anderen Teil zu löschen ?
> Mach erstmal deinen Bootloader fertig. Und mit dem brennst du dann die
> Applikation. Dann hat sich das unerwünschte Überschreiben von selbst
> erledigt. Das ist doch Sinn eines Bootloaders. So, wie du jetzt davor
> bist, kannst du ja nur das Umschalten vom Bootloader zur Applikation
> testen.
>
Klappt hier nicht. Im Endausbau soll der BL aus dem HP angesprungen 
werden, indem ich den Watchdog zubeißen lasse und so bewusst einen Reset 
auslöse.


@Stefan Frings:
Alles korrekt eingestellt. Das wollte ich eigentlich mit
>"das klappt.
>Beide Teile bleiben erhalten.
>Nach Reset kommt Bootloader, zeigt sich 5 Sekunden und dann Sprung zum
>Applikation Prog., wie es sein soll."
ausdrücken.

Danke soweit.
Hat noch jemand einen Hinweis ?





Gruß
A.

von holger (Gast)


Lesenswert?

>(Ja ich weiß, Lock Bits werden danach immer zurückgesetzt. Aber
>wenigstens einmal wirken dürften sie doch)

Wenn man Lockbits löscht wird auch das Flash komplett
gelöscht. Also setze sie besser erstmal nicht.

von Thomas E. (thomase)


Lesenswert?

Andree S, schrieb:
> Klappt hier nicht. Im Endausbau soll der BL aus dem HP angesprungen
> werden, indem ich den Watchdog zubeißen lasse und so bewusst einen Reset
> auslöse.
Ja und?
Deswegen must du den Bootloader trotzdem erstmal komplett fertig machen.
Der Bootloader wird auch nicht aus dem Hauptprogramm "angesprungen".
Das Hauptprogramm macht nichts anderes als einen Reset per Watchdog 
auszulösen. Das nach einem Reset als erstes der Bootloader kommt, hat 
die Applikation gar nicht zu interessieren. Genauso wenig, wie es den 
Bootloader interessiert, wodurch der Reset ausgelöst wurde.

Bootloader und Applikation sind zwei völlig verschiedene Programme, die 
nichts voneinander wissen und sich nicht füreinander interessieren.

mfg.

von Andree S. (amshh)


Lesenswert?

Thomas Eckmann schrieb:
> Andree S, schrieb:
> Ja und?
> Deswegen must du den Bootloader trotzdem erstmal komplett fertig machen.
> Der Bootloader wird auch nicht aus dem Hauptprogramm "angesprungen".
> Das Hauptprogramm macht nichts anderes als einen Reset per Watchdog
> auszulösen. Das nach einem Reset als erstes der Bootloader kommt, hat
> die Applikation gar nicht zu interessieren. Genauso wenig, wie es den
> Bootloader interessiert, wodurch der Reset ausgelöst wurde.
>
> Bootloader und Applikation sind zwei völlig verschiedene Programme, die
> nichts voneinander wissen und sich nicht füreinander interessieren.
>
> mfg.

Das ist alles bekannt durch vielfaches suchen, lesen und 
Datenblatt-Studium. Nur dass es sich hier bei dieser Anwendung nicht um 
einen BL handeln wird, der stumpf nach jedem Reset auf irgend ein 
UART-Empfang oder Pin-Level achtet und dann lädt. Der Hinweis "mach 
deinen BL fertig und lade anschließend dein HP gefälligst darüber, dann 
hast du die Probleme auch nicht" zieht hier nicht. Weil er (der BL) 
genau das NICHT machen soll.

Und außerdem löst es das grundsätzliche Problem nicht.
Ich suche lediglich nach einem Hinweis, warum jeweils offensichtlich ein 
Chip Erase ausgelöst wird. Oder aber ob das nunmal so ist und damit 
normal. Dann ist es auch gut - ich habe ja einen Weg, wie es geht, auch 
wenn er umständlich ist.
G.
A.

von Thomas E. (thomase)


Lesenswert?

Andree S, schrieb:
> Weil er (der BL) genau das NICHT machen soll.
Dann ist das auch kein Bootloader.

mfg.

von Weingut P. (weinbauer)


Lesenswert?

Hab schon verschiedene AVRs mit Bootloadern geflasht, ein Chip Erase war 
da noch nie im Gange. Muss n Programmfehler vom BL sein.

Wenn Bootloader und Applikation in einem Rutsch geflasht werden soll, 
dann geh doch einfach hin und verheirate die Hexfiles miteinander.

Der komplizierteste Weg ist den BL flashen, dann den Hex auslesen und 
dann die Hex der Aplikation in die zurückgelesene einkopieren.
Geht einfach per MS-Editor.

von Alexander V. (avogra)


Lesenswert?

Zu den Lockbits: die von dir gesetzten verhindern nur, dass der uC 
seinen Flash schreibt oder ausliest, das hat aber mit dem Programmieren 
über ISP nichts zu tun.
Gruß, Alex

von Andree S. (amshh)


Lesenswert?

Alexander v. Grafenstein schrieb:
> ... über ISP nichts zu tun.

Hallo Alexander,
was vermutlich genauso für das Programmieren über die JTAG Schnittstelle 
gilt. Ist zumindest dann dafür eine Erklärung.
Danke
A.

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.