Forum: Mikrocontroller und Digitale Elektronik Atmega88 region text overflowed by 156 bytes


von Rico (Gast)


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

von Vlad T. (vlad_tepesch)


Lesenswert?

tja, dein flash ist voll.
entweder du nimmst einen Mega168 oder du schaust wo du was einsparen 
kannst.

Rico schrieb:
> muss ich irgendwelche Variablen umdeklarieren???

nö, hier geht es um den Programmcode oder Konstanten, Strings, 
intialisierte (!=0) Variablen

Poste doch mal deinen Code, vielleicht kann man dir Tips geben

von Rico (Gast)


Angehängte Dateien:

Lesenswert?

Hallo vlad

Mein Code findst du im Anhang, wäre echt nett, du wirst bestimmt was 
finden bei meinen Anfängerkentnisse:-)

Danke im Voraus

von Falk B. (falk)


Lesenswert?

Kann mal leicht verbesser. Festkommaarithmetik anstatt Fließkomma.

MfG
Falk

von Thomas E. (thomase)


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.

von Falk B. (falk)


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. ;-)

von Rico (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Thomas
ichhab das kleine Teil vom Programm, was das Problemverursacht 
entfernet.Das komplete Programm ist im Anhang, wenn du nun versuchst zu 
compilieren wird dann nicht gehen.
Ich habe mit Festkommaarithmetik davor versucht hat aber leider nicht 
viel gebracht
Danke

von Falk B. (falk)


Lesenswert?

@  Rico (Gast)

>ichhab das kleine Teil vom Programm, was das Problemverursacht
>entfernet.

Sehr sinnvoll!! Augenroll

>Das komplete Programm ist im Anhang, wenn du nun versuchst zu
>compilieren wird dann nicht gehen.

U.a. weil die Funktion RiSchwellwert fehlt.

MFG
Falk

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.