Forum: Mikrocontroller und Digitale Elektronik *.HEX Datei zu groß?


von Volker (Gast)


Lesenswert?

Hallo zusammen,

erstmal vielen Dank für die Website. Das Forum und die Artikel haben
mir schon bei unzähligen Problemen geholfen. Aber gerade hilft mir die
Suchfunktion nicht weiter.
Mein Problem: Sobald mein Programm etwas größer ist bekomme ich meinen
avr nicht mehr Programmiert.
Hier mal ein paar Eckdaten:
MCU: atmega128
Compiler: AVR-GCC
Programmer: Ponyprog 2000

Mit avr-size bekomme ich folgende Information:

Dieses Programm kann ich noch ohne Probleme programmieren:
avr-size -C --mcu=atmega128 main.elf
AVR Memory Usage
----------------
Device: atmega128

Program:   18236 bytes (13.9% Full)
(.text + .data + .bootloader)

Data:       2307 bytes (56.3% Full)
(.data + .bss + .noinit)

Wenn ich bei dem Programm jetzt noch eine Zeile mehr aufs Display
schreibe kann ich nicht mehr programmieren (PonyProg Fehler: -44).
avr-size gibt folgendes aus:
avr-size -C --mcu=atmega128 main.elf
AVR Memory Usage
----------------
Device: atmega128

Program:   18248 bytes (13.9% Full)
(.text + .data + .bootloader)

Data:       2307 bytes (56.3% Full)
(.data + .bss + .noinit)

Es reicht auch schon wenn ich mit Hilfe eines Array ein paar Daten zu
viel in das Flash schreibe. Ich kann es mir nicht erklären, aber für
mich sieht es aus als ob es tatsächlich an der Größe der Hex Datei
liegt.

Wo liegt mein Fehler? Platz habe ich ja noch genug.

Viele Grüße
Volker

von Sebastian Eckert (Gast)


Lesenswert?

Komisch. Ist in PonyProg der richtige Chiptyp eingestellt? Läuft der
Code ansonsten? Nicht, daß die Hex-Datei versehentlich als Binärdatei
interpretiert wird...

von Volker (Gast)


Lesenswert?

Eigentlich nicht. Das Programm läuft ohne Probleme. Dann schreibe ich
etwas mehr in den Flashspeicher und es geht nicht mehr. Sonst ändere
ich nix. Ich habe jetzt noch etwas gespielt, aber es ist immer
dasselbe. Sobald die Hex Datei zu groß wird kann ich nicht mehr
programmieren. Wenn ich dann einen völlig anderen Programmteil raus
nehme geht es wieder.

von Volker (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

ich habe leider immer noch keine Lösung für mein Problem gefunden.
Unter der Woche habe nicht so viel Zeit zum spielen, aber folgende
Erkenntnisse habe ich gewonnen:

Wenn ich nur Programmiere (kein verify) kommt kein Fehler und das
Programm startet. Wenn ich allerdings Programmiere und verify mache
bekomme ich den Fehler -44.

Einfach das verify weg lassen finde ich nicht besonders schön. Wer sagt
mir, dass alles richtig übertragen wurde und mein Programm richtig
läuft?

Ich habe mal ein Beispielprogramm angehängt. Das Programm macht nichts
ausser eine Variable hoch zählen. Um das Programm groß zumachen
schreibe ich einen Array in den Flash Speicher.
Wenn ich ein Byte aus dem Array lösche kann ich den Controller
zuverlässig Programmieren. Aber ein Byte mehr und es geht (mit verify)
kein einziges mal!

Ich bin langsam echt verzweifelt. Wo ist mein Fehler, oder kann die
Hardware eine Macke haben?

von Volker (Gast)


Lesenswert?

solved !!!

Mit einem neuen mega128 rennt das Ding wie immer.

von Sebastian Eckert (Gast)


Lesenswert?

War also ein Defekt im internen Flash-Speicher. Gut zu wissen,
vielleicht nützt das ja auch anderen Forumnutzern mal.

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.