Jak sprawdzić wykorzystywany RAM w avr-gcc?

May 10, 2008 6 Replies

Witam wszystkich Mam takie pytanie odnośnie programowania w C AVRów. Jak można sprawdzić ile już wykorzystałem SRAMu mikrokontrolera w programie? Mam dość złożony program i wykorzystuje w nim zmienne typu PROGMEM (zapisywane tylko w pamięci programu). Nie wykorzystuje zmiennych dynamicznych. Gdyby nie PROGMEM to chyba dało by się to odczytać z HEXa wygenerowanego przez kompilator (skok do początku programu), ale tu już tak prosto chyba nie będzie. Może któraś informacja z kompilatora informuje ile zużyłem ramu? section size addr .data 1394 8388864 .text 39616 0 .bss 918 8390258 .stab 2388 0 .stabstr 185 0 .debug_aranges 160 0 .debug_pubnames 11656 0 .debug_info 34262 0 .debug_abbrev 3324 0 .debug_line 21440 0 .debug_frame 1312 0 .debug_str 8771 0 .debug_loc 13441 0 .debug_ranges 1088 0 Total 139955



.text informuje o wielkości całego programu. Na oko to może .data odnosi się do RAM, ale gdybanie mnie nie bardzo uszczęśliwia. Jak Wy to sprawdzacie? Może jakimś programem/symulatorem AVR?



Pozdrawiam


Jedna sprawa - ile Ty wykorzystałeś na zmiene, a druga sprawa jak urośnie stos. O ile ta pierwsza jest znana, to stos już zależy silnie od rutime... Symulatorem można to badać, choć 100% pewnego wyniku może to nie dać. Były też inne sprawdzone metody - zapełnić RAM znaną wartością, i sprawdzać ile zostanie nadpisane podczas pracy programu w kostce AVR.

O stos mi nie chodzi. Wiem że to jest zmienne i tym się teraz nie martwię. Chodzi mi o to ile pamięci na stałe wykorzystałem. W programie unikam zmiennych lokalnych i wysyłania parametrów funkcji, dlatego stos nie urośnie zbyt duży. Jak bym wiedział że np. wykorzystałem 3500B z 4000B to spał bym spokojnie, bo na stos zostaje sporo miejsca.

Pozdrawiam

Ale jednak powinieneś...

.data

i więcej poczytasz na:

formatting link

nie oznacza to że kompiler nie użyje rejestrów kiedy będzie potrzebował. Patrzyłeś jak zostaje skompilowany kod? polecam naprawdę.

Przyjrzyj się dokładniej.

Michał pisze:

data + bss

pozdrawiam Elektrolot

Sat, 10 May 2008 15:25:17 +0200 Michał snipped-for-privacy@wp.pl napisał:

AVR Studio wyświetla to po kompilacji. Podaje nawet ile to procent dostępnego RAMu, to samo dla FLASHa. Np.: " Program: 5154 bytes (3.9% Full) (.text + .data + .bootloader)

Data: 1372 bytes (33.5% Full) (.data + .bss + .noinit) "

Oczywiście, jak już ktoś napisał, trzeba też wziąć pod uwagę stos.

Niestety ze względu na skromną pamięć RAM w AVRach, trzeba trzymać stałe stringi (np. komunikaty, polecenia dla różnych modułów) we flashu (wyłącznie) i ładować je w razie potrzeby funkcjami typu strcpy_P. Ech, gdyby tak architektura Von Neumanna...

__Maciek pisze:

Przełącz się na ARMa. Polecam.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required