Forum: Mikrocontroller und Digitale Elektronik AVR Bootloader - Programm wird nicht ausgeführt


von Elektron (Gast)


Lesenswert?

Hallo,

ich möchte einen Atmega 328p mit einem Bootloader austatten, damit ich 
ihn zukünftig per Bluetooth flashen kann. Dazu habe ich mir erstmal den 
Bootloader aus dem Wiki 
(http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung) 
angesehen.
Nach dem Setzen der entsprechenden Fuses und der Anpassung der 
Sprungadressen funktioniert auch alles soweit. Der Bootloader wurde per 
ISP geflasht, anschließend wurde das angepasste HEX der 
Beispielapplikation über Putty an den Controller geschickt. Ebenfalls 
kein Problem.

Ich habe jetzt allerdings eine deutlich größere Anwendung, die ich 
bisher per ISP geflasht habe und problemlos lief. Versuche ich dieses 
HEX nun per Bootloader auf den Mikrocontroller zu flashen funktioniert 
dies auch, allerdings bleibt der Bootloader dann beim Reset hängen und 
mein Programm wird nicht ausgeführt (weder Debug LED leuchtet, noch wird 
ein Text auf dem UART ausgegeben). Nach dem Flashen habe ich mir den 
Speicherinhalt wieder in ein HEX file heruntergeladen. Offenbar wird 
mein Programm irgendwann abgeschnitten. Die UART Übertragung habe ich 
nochmals überprüft, dort wird die komplette HEX Datei übermittelt.

Ich brauche jetzt einen Ansatz wo ich anfangen kann nach dem Problem zu 
suchen. Muss ich bei meinem Code irgendetwas beachten, damit er 
"Bootloaderfähig" wird?

Danke im Voraus
Elektron

von Hubert G. (hubertg)


Lesenswert?

Die Größe des Programms wirst du ja berücksichtigt haben.

von Klaus (Gast)


Lesenswert?

Elektron schrieb:
> Hallo,
>
> ... eine deutlich größere Anwendung, ...

> mein Programm irgendwann abgeschnitten. Die UART Übertragung habe ich

> Ich brauche jetzt einen Ansatz wo ich anfangen kann ...

Gerne. Wenn Dir solche Worte wie "irgendwann" oder "größere" aus der 
Tastatur flutschen, sollte das Deine Aufmerksamkeit erregen.

In der Technik gibt es zwar einiges was nicht gemessen werden kann, aber 
man sollte immer schauen ob das in einem konkreten Fall auch zutrifft. 
Insbesondere in der Datenverarbeitung ist das eher selten.

Also, wie groß ist die Anwendung? Wann genau scheint die Anwendung 
"abgeschnitten" zu werden?

Und dann schaust Du mal, was in dem Artikel zu etwaigen Beschränkungen 
gesagt wird.

Dann bist Du schon mal einen Schritt weiter. In der Analyse.
Es kann gar nicht oft genug betont werden: Genaue Betrachtungen sind das 
A und O der Technik. Jede Oberflächlichkeit verhindert erfolgreiche 
Arbeit.

von Elektron (Gast)


Lesenswert?

> Und dann schaust Du mal, was in dem Artikel zu etwaigen Beschränkungen
gesagt wird.
Ich denke damit zielst du auf das 64KB Problem ab. Da so ein Atmega 328p 
aber nur 32KB hat wird das wohl kaum ein Problem sein

> Also, wie groß ist die Anwendung?
avr GCC gibt dazu folgendes aus:
[code]Device: atmega328p

Program:    5766 bytes (17.6% Full)
(.text + .data + .bootloader)

Data:       1153 bytes (56.3% Full)
(.data + .bss + .noinit)[code]
Das Programm sollte damit nach meinem Verständnis auch nicht zu groß 
sein

> Wann genau scheint die Anwendung "abgeschnitten" zu werden?
Tja, wie erkläre ich die Stelle am besten? Soll ich dafür nur einen 
Auszug hochladen oder die gesamten Hex files?

von Philipp K. (philipp_k59)


Lesenswert?

Wieso das rad neu erfinden?

Hab ich allerdings vor einigen Jahren das letzte mal benutzt.
http://sourceforge.net/projects/kavr/

von Elektron (Gast)


Lesenswert?

Tja, immer diese Konstruktiefe Hilfe hier im Forum. Stellt man die 
dümmsten Fragen ist das kein Problem, passt bei komplexeren Themen die 
Formulierung nicht, dann ist es schon vorbei.
Lustig, dass hier keiner mehr auf die ursprüngliche Frage geantwortet 
hat, nachdem ich die einfachen Lösungen ausgeschlossen habe.
Mir solls egal sein, ich habe meinen Bootloader fertig. Wer einen 
bluetooth bootloader braucht soll ihn sich selber schreiben. Ich werde 
mir nicht die mühe machen ihn hier hochzuladen

von Eric B. (beric)


Lesenswert?

Elektron schrieb:

> Program:    5766 bytes (17.6% Full)
> (.text + .data + .bootloader)
>
> Data:       1153 bytes (56.3% Full)
> (.data + .bss + .noinit)[code]
> Das Programm sollte damit nach meinem Verständnis auch nicht zu groß
> sein

Oh, gerade mal 6kB. Das ist viel kleiner als ich aus deine Aussage

>Ich habe jetzt allerdings eine deutlich größere Anwendung"

erwartet hatte. Dann wird ein 32k oder 64k Überlauf wohl nicht das 
Problem sein. Die Info von dir fehlte aber im OP.


>> Wann genau scheint die Anwendung "abgeschnitten" zu werden?
> Tja, wie erkläre ich die Stelle am besten? Soll ich dafür nur einen
> Auszug hochladen oder die gesamten Hex files?

Nein, eher so was wie "immer nach exact 2kB", oder "Hm, unterschiedlich. 
Mal bricht er nach 1432 bytes ab, manchmal erst kurz vorm Ende".


> Tja, immer diese Konstruktiefe Hilfe hier im Forum.

Ja, die Tiefe der Hilfe lässt manchmal ein wenig nach; aber oft auch die 
Bereitschaft der Frager selbst mal ein bisschen Hirnarbeit zu leisten.

Du hast einen Bootloader geschrieben womit du ein Problem hattest. Hast 
aber weder Infos zu dem Teil gegeben (z.B. Source Code!) noch Hinweise 
zu den Schritten die du selber schon unternommen hast um das Problem 
einzugrenzen. Dann kannst du hier auch keine bessere Hilfe erwarten als 
was schon geboten wurde.

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.