Hallo, ich hab bei den ersten Programmen mit GCC (ARM) und Eclipse einige Probleme, wie zum Beispiel dieses hier Wenn ich mein Projekt mit "make all" durchlaufen lassen kommt ab und zu, bei Linken nur Müll raus( nehme ich an!?!). Make Ausgabe bei Linken: <- sieht eigentlich ok aus Linking: main-test.elf arm-elf-gcc -mthumb -mcpu=arm7tdmi -mthumb-interwork -I. -gdwarf-2 -DROM_RUN -DVECTORS_IN_ROM -D__WinARM__ -D__WINARMSUBMDL_AT91SAM7S64__ -Os -ffunction-sections -fdata-sections -Wall -Wcast-align -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=StartUp/Cstartup.lst -I./StartUp -I./Include -IO:\Programme\amontec\sdk4arm\gat\garm\arm-elf\include -MD -MP -MF .dep/main-test.elf.d StartUp/Cstartup.o main-test.o StartUp/Cstartup_SAM7.o --output main-test.elf -nostartfiles -Wl,-Map=main-test.map,--cref,--gc-sections -lc -lm -lc -lgcc -L./StartUp -L./Include -LO:\Programme\amontec\sdk4arm\gat\garm\arm-elf\include -T./Include/AT91SAM7S64-ROM.ld und zum Schluss dies hier: Size after: main-test.elf : section size addr .text 0 1048576 .glue_7t 80 1048576 .ctors 0 1048656 .dtors 0 1048656 .data 0 2097152 .bss 0 2097152 .comment 270 0 .debug_aranges 912 0 .debug_pubnames 1128 0 .debug_info 17681 0 .debug_abbrev 4360 0 .debug_line 6284 0 .debug_frame 1324 0 .debug_str 4669 0 .debug_loc 10086 0 .internal_ram_top 0 0 .reset 0 0 .debug_ranges 656 0 Total 47450 Jetzt meine Frage: WIESO ist meine ".text" Section leer??? In dem alten Projekt mit WinARM und PN sah die Ausgabe ganz anders aus: Size after: main-test.elf : section size addr .text 15448 0 .rodata 552 15448 .rodata.str1.4 194 16000 .data 1028 2097152 .bss 80 2098180 .int_data 0 2113536 .stab 11340 0 .stabstr 32027 0 .comment 432 0 .debug_aranges 96 0 .debug_info 345 0 .debug_abbrev 60 0 .debug_line 1228 0 .reset 0 0 Total 62830 und das Projekt läuft auf dem Controller auch!!! :) Für jeden Tip wär ich sehr dankbar.
> --gc-sections
Meine Vermutung wäre, dass dir diese Option sämtlichen Code als
vermeintlich ungenutzt rauskegelt.
Sieht so aus, als würden Teile aus einem meiner WinARM Beispiele genutzt aber irgenwie noch weiteres beigemischt (amontec..). Mit dem kurzen Happen Information kann zumindest ich nicht wirklich weiterhelfen, vermute aber die Ursache wie Jörg in einer fehlerhaften Verwendung des "unused code removal" von gcc 4.x. Dazu beachtenswert: - Alle c Sourcen mit -ffunction-sections -fdata-sections compilieren. Dies ist nicht aus dem Beitrag ersichtlich, da nur der Linker-Aufruf gezeigt wird - Passendes Linkerscript verwenden. Unter anderem nicht nur *(.text) sondern auch *(.text.*), aber auch weiteres. AT91SAM7S64-ROM.ld dahingehende prüfen. Das default linker-script (arm-elf-ld --verbose) und einige meiner WinARM-Beispiele können als Vorlage dienen. - -gc-sections an den Linker übergeben (ist wohl "gemacht") Martin Thomas
Um rauszufinden, ob's das ist, müsste er doch auch einfach das --gc-sections und das -ffunction-sections weglassen können, oder?
Jörg Wunsch wrote: > Um rauszufinden, ob's das ist, müsste er doch auch einfach das > --gc-sections und das -ffunction-sections weglassen können, oder? Zusätzlich auch das -fdata-sections entfernen. Aber stimmt, damit kann man das Problem eingrenzen.
Hallo, danke für die Antworten. also ich wollte ein altes Programm von mir das auf M. Thomas Beispielen von 2005 beruht, jetzt neu mit neuem StartFile und neuen MakeFile von 2007 (vom gleichen Projekt "Gamma") verwenden, was aber der maßen in die Hose gegangen ist, das ich es seinlassen werde! :-( PS: Die von euch beschriebenen Optionen habe ich abgeschaltet und meine ".text"-Section besaß nun wieder ein Programm freu. Aber wie gesagt, der gewünschte Erfolg(laufendes Programm) blieb aus. Ist halt doch etwas komplizierter als, die MC die ich vorher benutzt hatte. Danke für eure Hilfe. mfg Stephan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.