Pami?? RAM w armgcc

Mar 30, 2011 4 Replies

Witam, jak sprawdzić ile pamięci w procku zużyją mi moje zmienne i system - Freertos. Kompilator codesourcery.


W dniu 2011-03-30 18:26, Mario pisze:

arm-none-eabi-size

pzdr mk

W dniu 2011-03-30 18:33, mk pisze:

Dzięki. Znalazłem w makefile, że te polecenie ( w postaci ELFSIZE) jest wywoływane w:

sizeafter: @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ 2>/dev/null; echo; fi

dając na koniec kompilacji:

Size after: text data bss dec hex filename 30732 308 32074 63114 f68a MD1768_Main.elf

Z tego co się zorientowałem segmenty data i bss stanowią obszar ram (data zainicjowane a bss niezainicjowane zmienne)

No i pojawia mi się problem bo gdy dodam odrobinkę zmiennych to wywala mi się kompilacja z powodu nie mieszczenia się sekcji bss w regionie 'ram'. Zdziwiło mnie to trochę bo lpc1768 ma 64kb ram a wygląda, że nie można użyć więcej niż 32k.

W pliku LPC17xx_Linker_Script.ld znalazłem wpis: MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 512K ram (rwx) : ORIGIN = 0x10000000, LENGTH = 32K }

To jest plik wzięty z przykładem FREERTOSa z ich strony. No i albo dali plik jakiegoś z innego cortexa mającego 32k ram albo ja czegos nie wiem i drugie 32k idzie na coś innego :( Oczywiście zaraz zmienię ten wpis ale nie jestem, pewien jak ustawić stos. w oryginale jest _StackTop = (0x10000000 + 0x8000) - 16; chyba zmienię 0x8000 na 0xf000

W dniu 30.03.2011 23:51, Mario pisze:

Hint - 20 strona dokumentacji.

W dniu 2011-03-31 00:57, Michoo pisze:

No tak, już znalazłem. dwa 16kb bloki pamięci AHB dedykowane -jedna do Eth, druga do USB adresy 0x2007C000 i 0x20080000. Może lpcusb nie korzysta z tego bloku od usb i jakoś go wykorzystam.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required