Jak sprawdzić wykorzystywany RAM w avr-gcc?

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

Reply to
Michał
Loading thread data ...

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.

Reply to
DJ

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

Reply to
Michał

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.

Reply to
DJ

Michał pisze:

data + bss

pozdrawiam Elektrolot

Reply to
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...

Reply to
__Maciek

__Maciek pisze:

Przełącz się na ARMa. Polecam.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.