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
Posted by bloodguy
,