Hallo,
ich habe das Problem, dass der Linker mir mitteilt, dass die Region Text
voll ist.
1 | /usr/lib/gcc/avr/4.8.2/../../../avr/bin/ld: main.elf section `.text' will not fit in region `text'
|
2 | /usr/lib/gcc/avr/4.8.2/../../../avr/bin/ld: region `text' overflowed by 16 bytes
|
3 | collect2: error: ld returned 1 exit status
|
Nun ist der Speicher des AVR aber längst noch nicht voll, wie diese
Ausgabe beim kompillieren kurz vor der Änderung belegt:
1 | AVR Memory Usage
|
2 | ----------------
|
3 | Device: atmega328p
|
4 |
|
5 | Program: 9488 bytes (29.0% Full)
|
6 | (.text + .data + .bootloader)
|
7 |
|
8 | Data: 1675 bytes (81.8% Full)
|
9 | (.data + .bss + .noinit)
|
Nun gibt es den Thread "AVR-GCC section .text verringern"
(www.mikrocontroller.net/topic/262532) und ich frage mich, ob ich die
section auch einfach vergrößern kann.
Also wollte ich das versuchen und das entsprechende Linker Script (wie
im Beitrag Beitrag "Re: AVR-GCC section .text verringern")
auslesen.
Für den Atmega328p (avr5) erhalte ich unter Linux Mint allerdings nur
die Meldung:
1 | avr-ld -m avr5
|
2 | avr-ld: cannot open linker script file ldscripts/avr5.xn: No such file or directory
|
In einem englischen Forum habe ich dazu einen Hinweis gefunden, dass ein
Symlink erzeugt werden soll, auf das entsprechende ld script. Ich finde
allerdings die ld scripts überhaupt nicht.
Gibt es ein Vorgehen, mit dem ich sie schnell lokalisieren kann oder
eventuell andere Möglichkeiten die Textgröße zu verändern?
Das Problem tritt auf, seitdem ich ein recht großes Array im Flash
erzeugen möchte:
1 | const unsigned char name[100] PROGMEM = {};
|
Die installierte AVR-GCC Version ist 4.8.2