[ JJY ] RAMの節約。

余談。
今使ってるATmega88Pは、RAMの容量が1kByteと大きいのだけども
統計とかやりはじめるとRAMをたくさん喰うので
配列にRAMを喰われたくないのだ。

AVRは、どうやらconstで書いてもRAM上に展開されるコードになるようで
ちっともRAMの使用量が減ってくれない。

ググってみたら、どうやらPROGMEMというのを使うらしい。

★ PROGMEM使用 ————————————————

1
2
3
#include <avr/pgmspace.h>		// PROGMEM使用
unsigned int PROGMEM MonthDays[]
= { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

AVR Memory Usage
—————-
Device: atmega88p

Program:    4776 bytes (58.3% Full)
(.text + .data + .bootloader)

Data:        746 bytes (72.9% Full)
(.data + .bss + .noinit)

★PROGMEM不使用 ————————————————

1
2
const unsigned int MonthDays[]
= { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

AVR Memory Usage
—————-
Device: atmega88p

Program:    4768 bytes (58.2% Full)
(.text + .data + .bootloader)

Data:        772 bytes (75.4% Full)
(.data + .bss + .noinit)

—————————————————————-
うん、まぁ、こんな感じ。
結構減るよね。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)