Atmega88 region text overflowed by 156 bytes

Gast #2179378
Lesenswert?

Hallo Frunde

habe ein Problem und zwar ich versuche mein Programm zu compilieren, 
leider kommt immer die folgende Fehlermeldung:

c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: 
hope.elf section .text will not fit in region text

c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: 
region text overflowed by 156 bytes

gibt es eine Möglichkeit irgendwie den Speicherbereich zu erhöhen, oder 
muss ich irgendwelche Variablen umdeklarieren???

wäre nett wenn jemand mir helfen kann
MfG
#2179426
Lesenswert?

Hab das gerade mal compiliert:

Build started 11.5.2011 at 16:47:12
In file included from ../test88.c:5:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: 
#warning "This header file is obsolete.  Use <avr/interrupt.h>."
../test88.c: In function 'Schwellwertvergleich':
../test88.c:514: warning: large integer implicitly truncated to unsigned 
type
../test88.c:505: warning: 'RkaFehler' may be used uninitialized in this 
function
../test88.c:505: warning: 'RkiFehler' may be used uninitialized in this 
function
avr-gcc -mmcu=atmega88 -Wl,-Map=test88.map test88.o     -o test88.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature 
test88.elf test88.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" 
--change-section-lma .eeprom=0 --no-change-warnings -O ihex test88.elf 
test88.eep || exit 0
avr-objdump -h -S test88.elf > test88.lss

AVR Memory Usage
----------------
Device: atmega88

Program:    7902 bytes (96.5% Full)
(.text + .data + .bootloader)

Data:        382 bytes (37.3% Full)
(.data + .bss + .noinit)


Build succeeded with 4 Warnings...


mfg.
#2179435
Lesenswert?

Naja, und den Rest kann/muss man auch ein wenig aufräumen. Z.B dein 
adc_capture. Du musst nicht immer die erste Messung wegwerfen. Das muss 
man nur einmal nach dem Einschalten der Referenzspannung. Siehe

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_interne_ADC_im_AVR

Leerzeilen sind wichtig zur übersichtlichen Formatierung, man kann es 
aber auch überteiben.

Das mit Nachladen des Times vergiss mal schnell wieder, das war "damals" 
OK als es keine bessere Möglichkeit gab. Heute nimmt man den CTC Modus. 
Da muss man auch keinen 16 Bit Timer verbraten.

Und auch wenn dein Interrupt nur alle 10s einmal klinget, so macht man 
dort möglichst keine umfangreichen Dinge. Siehe Interrupt. Hier im 
beispiel ist es egal, später vielleicht aber nicht mehr.

Ansonst versuch mal ein paar Tips umzusetzen: [[Strukturierte 
Programmierung auf Mikrocontrollern]]

MFG
Falk

P S Aber alles in allem haben wir hier schon deutlich schlechtere 
Anfängerprogramme gesehen. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren