SD/MMC mit ATmega8

Gast #2355187
Lesenswert?
• ▲
▼
Hallo,

ich habe gerade ein Problem beim Compilieren/Linken eines Programms für 
einen Atmega8:
1
Linking: main.elf
2
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 main.o ff.o diskio.o   --output main.elf -Wl,-Map=main.map,--cref -lm
3
/usr/lib/gcc/avr/4.3.5/../../../avr/bin/ld: main.elf section `.text' will not fit in region `text'
4
/usr/lib/gcc/avr/4.3.5/../../../avr/bin/ld: region `text' overflowed by 12146 bytes

Wenn ich das richtig verstehe wird hier eine Größengrenze überschritten.
Was sagt mir diese und wie ändere ich das?
Gast #2355189
Lesenswert?
• ▲
▼
Ergänzung:

wenn ich das Gleiche für einen Atmega32 übersetze ergibt sich folgende 
Größe:
1
Size after:
2
main.elf  :
3
section     size      addr
4
.text      20822         0
5
.data        110   8388704
6
.bss         830   8388814
7
.stab      28992         0
8
.stabstr    7227         0
9
Total      57981

meine main.hex ist dann 57kb groß :O
Gast #2355304
Lesenswert?
• ▲
▼
Alex44 schrieb:
> Wenn ich das richtig verstehe wird hier eine Größengrenze überschritten.

Ja, Segment .text wird "gesprengt".

> Was sagt mir diese und wie ändere ich das?

Du hast 8kB im Mega8. Dein Programm braucht ca. 20000 Byte im Segment 
.text wie du im 2. Posting siehst.

Wie du das änderst? Ist schwer zu sagen aus der Ferne. Du brauchst 
soviel Platz mehr als der Mega8 zur Verfügung stellst, dass das kaum zu 
retten ist.
Wenn du soviel unnötigen Code hast, dann entferne diesen.

Oder du hast elendig viele Daten (Arrays, Texte) im Flash mit 
angesiedelt.
Diese rausschmeißen wenn es geht. Ins Ram verschieben geht nicht, da ist 
noch weniger Platz.

Die beste Lösung: Mega32 verwenden.
Gast #2356256
Lesenswert?
• ▲
▼
>Was bedeuten die Sektoren?

Welche Sektoren?

>Und warum ist die .hex 57kB groß?

Das kann nur der Linker wissen;)

>Wie kann diese Datei in den ATmega32 rein passen, wenn er doch nur 32kB
>Flash speicher hat?

Von der HEX Datei gehen nur ungefähr 1/3 in den ATMega32 rein.
Das liegt am Dateiformat (das ich dir jetzt nicht aufdröseln werden).

Nimm einen ATMega328. Passt dann schon.

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.