logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVR - wpis w makefile i wyświetlanie zajętości RAMu

maly_elektronik 20 Sty 2011 19:33 1519 3
REKLAMA
  • #1 9033458
    maly_elektronik
    Poziom 23  
    Witam
    Czy wie ktoś może co wpisać(i gdzie) w pliku makefile abym podczas kompilacji otrzymywał komunikat o zajętości pamięci RAM:?:
  • REKLAMA
  • #2 9033567
    hotdog
    Poziom 26  
    komenda:
    avr-size --format=avr --mcu=atmega16 program.elf


    Dostaniesz taki wynik:
    AVR Memory Usage
    ----------------
    Device: atmega16
    
    Program:    2208 bytes (13.5% Full)
    (.text + .data + .bootloader)
    
    Data:         42 bytes (4.1% Full)
    (.data + .bss + .noinit)
    
    EEPROM:       19 bytes (3.7% Full)
    (.eeprom)


    Data to zajętość RAM'u

    A gdzie to wpisać, no to zależy stwórz cel
    
    size: program.elf
    	@echo 'Invoking: Print Size'
    	avr-size --format=avr --mcu=atmega16 program.elf


    i wpisz sobie go w celu all:
    all: program.elf size


    Nie bierz tego tak co do literki, bo może gdzieś się palnąłem.
  • REKLAMA
  • #3 9033684
    maly_elektronik
    Poziom 23  
    Coś mi to nie wychodzi :(
    Czy mógłbyś dodać to do mojego makefila :?:
    Zmieniłem rozszerzenie na txt bo nie mogłem załadować na serwer elektrody bez rozszerzenia :(
  • Pomocny post
    #4 9033718
    LordBlick
    VIP Zasłużony dla elektroda
    Oto przykładowy Makefile:
    ###############################################################################
    # Makefile for the project ATMega32_test2
    ###############################################################################
    
    F_CPU=11059200
    ## General Flags
    PROJECT = ATMega32_test2
    MCU = atmega32
    TARGET = $(PROJECT).elf
    CC = avr-gcc
    
    ## Options common to compile, link and assembly rules
    COMMON = -mmcu=$(MCU)
    
    ## Compile options common for all C compilation units.
    CFLAGS = $(COMMON)
    CFLAGS += -Wall -gdwarf-2 -std=gnu99
    CFLAGS += -DF_CPU=$(F_CPU)UL
    CFLAGS += -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
    CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 
    
    ## Assembly specific flags
    ASMFLAGS = $(COMMON)
    ASMFLAGS += $(CFLAGS)
    ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
    
    ## Linker flags
    LDFLAGS = $(COMMON)
    LDFLAGS +=  -Wl,-Map=$(PROJECT).map
    
    
    ## Intel Hex file production flags
    HEX_FLASH_FLAGS = -R .eeprom
    
    HEX_EEPROM_FLAGS = -j .eeprom
    HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
    HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
    
    
    ## Include Directories
    INCLUDES = -I"." 
    
    ## Objects that must be built in order to link
    OBJECTS = $(PROJECT).o 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = 
    
    ## Build
    all: $(TARGET) $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss size
    
    ## Compile
    $(PROJECT).o: $(PROJECT).c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    ##Link
    $(TARGET): $(OBJECTS)
    	 $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
    
    %.hex: $(TARGET)
    	avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@
    
    %.eep: $(TARGET)
    	-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
    
    %.lss: $(TARGET)
    	avr-objdump -h -S $< > $@
    
    size: ${TARGET}
    	@echo
    	@avr-size -C --mcu=${MCU} ${TARGET}
    
    ## Clean target
    .PHONY: clean
    clean:
    	-rm -rf $(OBJECTS) $(PROJECT).elf dep $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss $(PROJECT).map *~
    
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
REKLAMA