embeded/AVR (ATmega/ATtiny)2013. 12. 19. 11:32
어떻게 보면.. const 키워드랑 비슷한데

폰노이만 방식이 아닌 하버드 아키텍쳐의 특성상 분리된 주소 공간을 가지는 상황에서
플래시 저장된 데이터를 이용함으로서 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
AVR-GCC Program space  (0) 2013.12.19
ATmega128 BOOTSZ  (0) 2013.12.19
AVROSP  (0) 2013.12.18
AVR soft reset  (0) 2013.12.18
Posted by 구차니

댓글을 달아 주세요