Forum: Mikrocontroller und Digitale Elektronik linkerError "region text is full"


von Re T. (toobatch)


Lesenswert?

so tag leute,   weiß nun (vermute), dass das Programm einfach zur zu 
groß ist, oder ? (bezieht sich alles auf unten

dann meine frage was bedeuten die Linker-optionen ... hab mal hier : 
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Link-Options.html#Link-Options

bissl gelesen find aber realtiv wenig z.B.  die ganzen "--*" optionen 
nicht.

hab das makefile nicht komponiert - benutze es nur gerade aus dem Proj. 
an welchem ich herumbastele, und bevor ich die optionen lösche oder so 
wüsst ich gern was sie bedeuten .


" UNTEN "

Hi,
i use borland make on windows.

after compiling the linker starts and prints   " region text is full 
(a.out section .text)"

I dont  know if  this is the cause for the errors later ( see below  ) 
with "undefined reference to"

here some more print details :
====================================================================
link to ..\image\ATMegaEmpty
   C:\Progrg\WinAVR\bin\avr-gcc.exe ..\image\MN_Main.o 
..\image\PR_2561.o   ..\image\AH_Actn.o   ..\image\TI_Timer.o 
..\image\UA_Intrn.o   ..\image\UA1_Aufs.o   ..\image\UA2_Aufs.o 
..\image\ETH_Net.o   ..\image\ARP_Net.o   ..\image\IP_Net.o

c:\progrg\winavr\bin\..\lib\gcc\avr\4.1.1\..\..\..\..\avr\bin\ld.exe: 
region text is full (a.out section .text)

..\image\ETH_Net.o: In function `ETH_IRQReadPacketFromNicToQueue':
W:\build/..\src\ETH_Net.c:1344: undefined reference to 
`CM_GetDownloadPort'
====================================================================

there are many more entries with   xxx undefined reference to  yyy



____
the linker-options-line  looks like that:

==================
-mmcu=$(MCU)                            \
       -nodefaultlibs                  \
       -Wl,--start-group               \
       -lc                             \
       -lgcc                           \
       -Wl,--end-group                 \
       --cref                          \
       --defsym                        \
       --stack=0x10FF                  \
       -o $(IMG)\$(PROJECT).ELF
==================
MCU is ATMega2561

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Re To wrote:
> so tag leute,   weiß nun (vermute), dass das Programm einfach zur zu
> groß ist, oder ?

Ja.

von Re T. (toobatch)


Lesenswert?

danke Jörg , und zu den linkerOpt. ... hab das was gefunden ...

was ist denn  eine "cross reference table" ?? (--cref)

und wie kann ich sehen wie groß das programm ist? ... also gibts da ne 
möglichkeit ??

von Christian R. (supachris)


Lesenswert?

Re To wrote:

> und wie kann ich sehen wie groß das programm ist? ... also gibts da ne
> möglichkeit ??

avr-size.exe ist dein Freund.

von Re T. (toobatch)


Lesenswert?

jo ..danke,

kann dadurch (dass das Prog. zu groß ist)  kein hex-file erzeugen ...

wie ist es möglich das der linker die MCU-FlashSize ignoriert und 
einfach das hexfile anlegt obwohl es eig. zu groß ist ?

von Christian R. (supachris)


Lesenswert?

Wozu sollte der Unsinn gut sein? Zu groß ist zu groß, da hilft alles 
nix.

von Johnny (Gast)


Lesenswert?

Manchmal hilft es noch die Codeoptimierung ein- bzw. höher zu schalten.
Allerdings kann es bei schlechtem Programmierstil dann sein, dass gar 
nix mehr funktioniert wie es sollte.

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.