어떻게 보면.. const 키워드랑 비슷한데
폰노이만 방식이 아닌 하버드 아키텍쳐의 특성상 분리된 주소 공간을 가지는 상황에서
플래시 저장된 데이터를 이용함으로서 SRAM의 공간을 확보하는 방법이다.
그런 이유로.. gcc implement 상으로는
const 형으로 데이터를 저장하고
읽을때는 LPM(Load Program Memory) 어셈명령을 이용하여 읽게 된다.
폰노이만 방식이 아닌 하버드 아키텍쳐의 특성상 분리된 주소 공간을 가지는 상황에서
플래시 저장된 데이터를 이용함으로서 SRAM의 공간을 확보하는 방법이다.
The AVR is a Harvard architecture processor, where Flash is used for the program, RAM is used for data, and they each have separate address spaces. It is a challenge to get constant data to be stored in the Program Space, and to retrieve that data to use it in the AVR application. [링크 : http://www.nongnu.org/avr-libc/user-manual/pgmspace.html] |
그런 이유로.. gcc implement 상으로는
const 형으로 데이터를 저장하고
읽을때는 LPM(Load Program Memory) 어셈명령을 이용하여 읽게 된다.
#define PGM_P const char *
#define pgm_read_byte_near ( address_short ) __LPM((uint16_t)(address_short))
[링크 : http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html] |
'embeded > AVR (ATmega,ATtiny)' 카테고리의 다른 글
Atmega8 으앙 쥬금!!! ㅠㅠ (0) | 2013.12.20 |
---|---|
avr pud(pull up disable) (0) | 2013.12.19 |
ATmega128 BOOTSZ (0) | 2013.12.19 |
AVROSP (0) | 2013.12.18 |
AVR soft reset (0) | 2013.12.18 |