Arduino UNO (Atmega328) 기준
아두이노에는 총 3가지 종류의 메모리가 있음.
이름 |
용도 |
용량 |
설명 |
휘발여부 |
Flash Memory |
프로그램 공간 |
32k |
아두이노 스케치가 저장되는 곳 |
X |
SRAM |
정적 RAM |
2k |
아두이노 실행시 생성되는 변수 등이 저장되는 곳 |
O |
EEPROM |
비휘발성 기억 |
1k |
오래 보관할 비휘발성 데이터를 저장하는 공간 |
X |
Flash Memory의 write cycle은 100만회 정도.
SRAM이 2k 밖에 안되므로 사용에 각별히 주의해야 함.
- 아두이노는 최소한의 메모리를 사용하는 동작만 하고, 데이터 핸들링이나 계산 같은 건 가급적 아두이노에 연결되어 데이터를 받아 처리하는 메인 컴퓨터에서 하도록 할 것.
- lookup table이나 거대한 배열 등은 최대한 사용을 자제할 것. 일반 변수 사용시에도 값의 크기를 다룰 수 있는 최소한의 변수형을 사용할 것. 예를 들어, int는 2바이트, byte는 1바이트.
- 실행 중 값이 변하는 않는 상수는 SRAM 영역이 아닌 flash memory 영역을 사용할 것. PROGMEM을 사용하면 됨.
EEPROM은 1k 공간을 작은 하드디스크처럼 사용할 수 있음.
주의할 점은 EEPROM의 수명이 최대 10만 write/erase 이므로 너무 자주 쓰지말 것. (어이없이 반복문에서 썼다 지웠다 하는 경우를 피해야 할 듯)
참고로 Arduino UNO (Atmega328)의 CPU clock speed는 16MHz.
[참조]
https://www.arduino.cc/en/Tutorial/Memory
https://learn.adafruit.com/memories-of-an-arduino/optimizing-sram
'Arduino' 카테고리의 다른 글
[Arduino] 정렬 (qsort) (0) | 2018.01.23 |
---|