Home / Community / Blog

W dystrybucji Mandriva 2010.2 program avr-size z paczki cross-avr-binutils-2.20.51.0.4 nie potrafił pokazać procentowej zajętości pamięci (dla danego procesora) - nie obsługiwał przełącznika -C.

Obszedłem problem ściągając binutils 2.20.1 który rozpakowałem

wget http://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2
tar -xjf binutils-2.20.1.tar.bz2
cd binutils-2.20.1

i na który nałożyłem łatkę (zapisałem ją sobie jako avr-size.patch):

patch -p0 < avr-size.patch

niestety część rzeczy musiałem łatać sam, bo łatka nie była dokładna (nic poważnego tylko białe znaki się nie zgadzały) a następnie skompilowałem

./configure --target=avr
make

czy się udało mogłem sprawdzić poleceniem binutils/size --help które pokazało miedzy innymi:

 The options are:
  -A|-B|-C  --format={sysv|berkeley|avr}
            --mcu=<avrmcu>     MCU name for AVR format only

Kolejnym krokiem było skopiowanie pliku do miejsca w którym nowy plik będzie miał "pierwszeństwo" przed oryginalnym. Ja wybrałem /usr/local/bin, więc polecenie (uruchomione jako root) wyglądało tak:

cp binutils/size /usr/local/bin/avr-size

W konsoli nawet zadziałało. ale okazało się, że Eclipse ma własne ustawienia więc musiałem zmienić we właściwościach projektu w C/C++ Build > Settings > Tool Settings > Print Size dwie rzeczy: zawartość pola Command z

-avr-size

na pełną ścieżkę

-/usr/local/bin/avr-size

oraz Expert settings > Command line pattern z

${COMMAND} ${FLAGS} ${INPUTS}

na

${COMMAND} ${FLAGS} -C ${INPUTS} --mcu=${AVRTARGETMCU}

(AVRTARGETMCU jest "magiczną" zmienną dostępną w Eclipse z dodatkiem AVR Eclipse Plugin) i w końcu po wciśnięciu Build zobaczyłem:

AVR Memory Usage
----------------
Device: atmega88

Program:    5456 bytes (66.6% Full)
(.text + .data + .bootloader)

Data:        744 bytes (72.7% Full)
(.data + .bss + .noinit)

Just my blog...

Mon Tue Wed Thu Fri Sat Sun
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29