AVR Bootloader - Programm wird nicht ausgeführt

Gast #4187672
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
Gast #4187764
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.
Gast #4187800
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?
Gast #4191096
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
#4191352
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.