본문 바로가기
언어/C, C++

[C++] PROGEM

by minhyeok.lee 2024. 10. 26.
반응형

PROGMEM이란?

PROGMEM은 AVR 마이크로컨트롤러(예: Arduino)에서 RAM이 아닌 플래시 메모리에 상수 데이터를 저장하기 위해 사용되는 키워드이다.


예시

const uint8_t myArray[4] PROGMEM = {1, 2, 3, 4};

 


장점

1. RAM 절약

- PROGMEM을 사용하면 상수 데이터를 플래시 메모리에 저장하므로, RAM 사용량을 크게 줄일 수 있다.

- 이는 RAM이 제한적인 임베디드 환경에서 매우 유리하다.

 

2. 큰 데이터 구조 저장 가능

- 큰 배열이나 문자열과 같은 데이터 구조를 플래시 메모리에 저장할 수 있어, 메모리 자원을 효율적으로 사용할 수 있다.


단점

1. 읽기 복잡성

-  PROGMEM으로 저장된 값은 직접 읽을 수 없으며, pgm_read_* 함수를 사용해야 하므로 코드가 복잡해질 수 있다.

 

2. 접근 속도 저하

- 플래시 메모리에서 값을 읽는 것은 RAM에서 읽는 것보다 느리다.

- 따라서 성능이 중요한 부분에서는 사용하기에 적합하지 않을 수 있다.

 

3. 타입과 범위 제한

- PROGMEM으로 저장할 수 있는 타입은 제한적이며, 전역 변수처럼 정의해야 하므로 스코프 관리가 어려울 수 있다.

반응형

'언어 > C, C++' 카테고리의 다른 글

[C++] #define, constexpr, PROGEM 비교  (0) 2024.10.27
[C++] constexpr  (0) 2024.10.25
[C++] #define  (0) 2024.10.24
[C, C++] 모든 타입 정리  (0) 2024.04.24
[C++] constexpr이란? const와 constexpr의 차이 ( const vs constexpr )  (0) 2024.01.08

댓글