본문 바로가기
임베디드소프트웨어

AVR 마이크로프로세서의 메모리

by Go! Jake 2022. 3. 17.

AVR은 하버드 구조로 되어 있어 프로그램 메모리(In-System Reprogrammable Flash program memory)와 데이터 메모리(SRAM) 2개로 구성됩니다. 이러한 특성으로 메모리와의 대역폭이 증가하여 성능이 향상되는 장점이 있습니다. 프로그램 메모리와 데이터 메모리 항목에 대해서 알아보도록 하겠습니다.

 

프로그램 메모리

프로그램 메모리에는 명령어가 적재됩니다. ATmega32는 32K Byte의 프로그램 메모리를 내장하고 있습니다.

- AVR은 8bit 마이크로컨트롤러이지만 명령어는 16bit 또는 32bit 구조입니다.

- 프로그램 메모리의 각 번지도 16bit 구조로 되어 있습니다.

- 프로그램 메모리가 32K Byte이므로 16K*2Byte = 16K*16bit의 계산이 됩니다.

 

프로그램 메모리는 부트 프로그램 영역(Boot Program Section) 또는 부트 로더 영역(Boot Loader Section)과 응용 프로그램 영역(Application Program Section)으로 나뉩니다.

 

플래시 메모리 영역은 ISP(In-System Programming)을 이용하여 개발자가 다운로드하거나 읽거나 지울 수 있으며 그 횟수는 10,000번까지 가능합니다. 플래시 메모리 영역에 프로그램을 다운로드하는 것은 ISP 외 JTAG를 사용해도 됩니다.

 

데이터 메모리

데이터 메모리는 데이터가 적재됩니다. 두 가지로 나뉘는데, 하나는 내부 SRAM(Internal SRAM)이고 다른 하나는 내부 EEPROM(Internal EEPROM)입니다.

 

1) 내부 SRAM(Internal SRAM)

ATmega3의 데이터 메모리는 총 2144Byte(=32+64+2048)로, 3개의 영역으로 구현됩니다.

- 레지스터 파일 영역(General purpose working registers) : 32 Byte (=32개 x 8bit)

- I/O 레지스터 영역(I/O Registers) : 64Byte의 I/O 영역

- 내부 데이터 SRAM 영역(Internal data SRAM) : 2048Byte의 내부 영역

 

2) EEPROM 데이터 메모리

ATmega32에는 1KB의 EEPROM이 내장되어 있습니다. EEPROM은 100000번까지 데이터를 쓸 수 있고, EEPROM 메모리는 다른 데이터 메모리 어드레스 영역과는 별개의 영역에 위치합니다.

 

이 글은 당근이의 AVR 갖고 놀기를 참조하였습니다.

 

댓글