Hallo allemaal,
Normaal programmeer ik in avr studio, maar wilde eens eclipse uitproberen. Dit gaat heel gemakkelijk met winavr en de avr-eclipse plugin. Het probleem wat ik nu heb is dat hetzelfde programma in eclipse groter is dan in avr studio. Optimization staat zowel in avr studio als in eclipse op -Os en dit is de uitkomst:
avr studio:
Build started 7.2.2009 at 14:20:41
avr-gcc -mmcu=atmega168 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Voorbereiding_Accel_Magnet_2.o -MF dep/Voorbereiding_Accel_Magnet_2.o.d -c ../Voorbereiding_Accel_Ma
gnet_2.c
avr-gcc -mmcu=atmega168 -Wl,-Map=Voorbereiding_Accel_Magnet_2.map Voorbereiding_Accel_Magnet_2.o -lm -o Voorbereiding_Accel_Magnet_2.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature Voorbereiding_Accel_Magnet_2.elf Voorbereiding_Accel_Magnet_2.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex Voorbereiding_Accel_Magnet_2.elf Voorbereiding_Accel_Magnet_2.eep || exit 0
avr-objdump -h -S Voorbereiding_Accel_Magnet_2.elf > Voorbereiding_Accel_Magnet_2.lss
AVR Memory Usage
----------------
Device: atmega168
Program: 2688 bytes (16.4% Full)
(.text + .data + .bootloader)
Data: 18 bytes (1.8% Full)
(.data + .bss + .noinit)
Build succeeded with 0 Warnings...
eclipse:
make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=c99 -funsigned-char -funsigned-bitfields -mmcu=atmega168 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c"
Finished building: ../main.c
Building target: testing.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,testing.map -mmcu=atmega168 -o"testing.elf" ./main.o
Finished building target: testing.elf
Invoking: AVR Create Extended Listing
avr-objdump -h -S testing.elf >"testing.lss"
Finished building: testing.lss
Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex testing.elf "testing.hex"
Finished building: testing.hex
Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex testing.elf "testing.eep"
Finished building: testing.eep
Invoking: Print Size
avr-size --format=avr --mcu=atmega168 testing.elf
AVR Memory Usage
----------------
Device: atmega168
Program: 4518 bytes (27.6% Full)
(.text + .data + .bootloader)
Data: 282 bytes (27.5% Full)
(.data + .bss + .noinit)
Hoe kan ik eclipse instellen zodat het geheugen gebruik minder word?
Vast een verschil in compiler options. Zit er in AVR-gecompileerde-C nog debug info? Verder zou het een linker option kunnen zijn. Leg ze naast elkaar en vergelijk ze...
Het was inderdaad een linker option. Het is opgelost door een "m" toe te voegen aan "Libraries (-l)", te vinden onder Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> AVR C Linker -> Libraries. AVR Memory Usage levert nu onder Eclipse en AVR Studio precies hetzelfde op.