www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD Bootloader kompiliert, schreibt sich in den Speicher aber tut NIX, Atmega32, C, AVRStudio


Autor: HeGr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gemeinde!
Ich brauche mal wieder Hilfe. Ich fertige ein Update nach dem anderen 
für meine Anwendung und die soll auf 12 verschiedenen Megas laufen. Nur 
2 davon haben einen Programmieradapter in Reichweite. Da eine SD-Karte 
angeschlossen ist lag es nahe an den Bootloader von Stefan zu denken.
Ich kompiliere den Bootloader und spiele das .hex-file auf. Danach lese 
ich testweise aus und erhalte ein hex-file was ca. so aussieht:

...
1077B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:1077C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
:1077D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:1077E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
:1077F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:107800000C942A3C0C94473C0C94473C0C94473C09
:107810000C94473C0C94473C0C94473C0C94473CDC
:107820000C94473C0C94473C0C94473C0C94473CCC
...

Für mich heisst das, das die Anwendung wie gewollt ab 0x7800 in den Mega 
geschrieben wurde. Fuses im Anhang.

Leider macht er nichts. Ich habe Testweise mal gleich zu Beginn der main 
einen Pin high gesetzt. Er kommt nicht einmal da an.

Hat jemand eine Idee, wo der Fehler liegen könnte?

Ich danke Euch!

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nun einmal testweise eine funktionierende Anwendung ab 0 
geschrieben. Die wird nicht gestartet. Der Mega sucht also im Bootsektor 
wie er soll. Der Bootloader ab 0 geschrieben startet (natürlich ohne 
bootrst) auch nicht. Das Problem scheint also das Kompilat des 
Bootloaders zu sein.
Hier habe ich nur die empfohlenen Dinge im Makefile geändert:

MCU = atmega32
F_CPU =  4000000
FORMAT = ihex
DEVID = 0x12345678
TARGET = bootloader
BOOTLOADERSTARTADR = 0x7800 (bzw. derzeit testweise 0x0000)
BOOTLDRSIZE = 0x800

und dann mit make all kompiliert (keine Warnings,Errors oÄ). Das 
hex-file habe ich dann aus AVR Studio gebrannt. (USBProg mit AVRISP mk 
II clone).

Was kann da falsch gelaufen sein?

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich bin jetzt weiter. Der Bootloader startet. Nun habe ich ein neues 
Problem. Mein Programm das aus AVR Studio kompiliert 22k braucht 
benötigt nun wenn ich das hex mit hex2bin bearbeite über 30k und passt 
darum nicht mehr. Gibt es ein brauchbareres Tool dafür oder muss ich von 
Hand aus kompilieren. Ein Makefile für mein doch recht umfassendes 
Projekt zu erstellen scheint mir sehr aufwändig...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hellseher haben alle unbegrenzten Urlaub genommen.
So in den nächsten 10 Jahren kommt der erste wieder.

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok. Danke, cool. Man braucht also nen Hellseher um zu erfahren ob 
jemand ein Tool kennt das aus hex-files .bins in anständiger Größe 
macht. Oder hast Du einfach nur die ersten paar Zeilen gelesen und Dir 
gedacht: "mann, da muss ich jetzt aber unbedingt austeilen. ich fühl 
mich heute wieder so klein"?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Oder hast Du einfach nur die ersten paar Zeilen gelesen und Dir
>gedacht: "mann, da muss ich jetzt aber unbedingt austeilen. ich fühl
>mich heute wieder so klein"?

Nein. Möglicherweise benutzt du sogar mein hex2bin ;)
Ich hab jetzt aber keinen Bock mehr dir zu antworten.

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich verstehen ;)

Autor: HeGr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs mal mit Deinem Probiert. Kann mir jemand die Differenz der 
angegebenen Bytes zu der Dateigröße erklären?
Grüße!

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer lesen kann ist klar im Vorteil: Fillbytes. Hmm... sollte ich die aus 
dem Hex einfach entfernen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HeGr wrote:
> Mein Programm das aus AVR Studio kompiliert 22k braucht
> benötigt nun wenn ich das hex mit hex2bin bearbeite über 30k und passt
> darum nicht mehr.

Da hilft kein Tool, zu groß bleibt zu groß.
Vermutlich hast Du den Bootloader mit reingemanscht.

Der Bootloader darf nie in die Applikation mit rein !!!

Entweder verweigert er dann das Programmieren oder er zerstört sich 
selber.


Peter

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ HeGr

>Wer lesen kann ist klar im Vorteil: Fillbytes. Hmm... sollte ich die aus
>dem Hex einfach entfernen?

Nein das geht nicht. Die Bin Datei muß so groß sein (30720 Bytes).
Ich frag mich nur was bei dir da jetzt nicht passt?
Die höchste eingelesene Adresse ist 0x77FF und passt damit
bis aufs Byte genau vor den Bootloader.

Autor: HeGr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich suche den Fehler noch ein bisschen. Ich habe halt einfach mal eine 
Funktion geschrieben die 5 mal einen Pin toggled und ne LED 
angeschlossen.
Den Aufruf habe ich vor den return bei checkfilesize geschrieben. Die 
Led blinkt also und es passiert weiter nichts.
Ich habe das Hex (kompiliert mit dem wie in dem howto manipulierten 
Makefile) mal selbst aufgespielt und leider einige Probleme. Die 
Anwendung läuft zwar aber nicht wie gewohnt. Worans da hapert weiss ich 
absolut nicht aber auf einmal wird nur noch die Hälfte dargestellt oder 
bestimmte Funktionsaufrufe führen auf einmal zum Reset. Ich wünschte, es 
gäbe einen deutlich simpleren Bootloader. Alles was mit der Manipulation 
des Hauptprogramms zu tun hat ist für mich nämlich völlig unnötig. Ich 
bräuchte was, was überprüft ob es eine Datei bestimmten Namens auf der 
SD-Karte gibt und diese dann einspielt. Existiert die Datei nicht, 
startet er an 0x0000. Versioning etc. sind für mich gar nicht wirklich 
wichtig...
Leider bin ich zu unbedarft um das selbst zu realisieren. Ich melde mich 
wenn ich auf der fehlersuche weiterkomme.
Danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.