Memory Mapped IO란?

주기억장치들의 일부 주소를 입출력장치에 할당하는 방법으로,

해당 방식은 별도의 하드웨어 신호핀을 두지않고 Address line에 따라 분기하여 하드웨어에 접근하는 방식이다.

특징으로는 

  • 메모리 일부 공간을 I/O 포트에 할당
  • 메모리와 입출력 번지 사이의 구별이 없음
  • 메모리 명령으로 사용 가능
  • 기억장치 이용 효율이 낮고 (I/O 포트가 주소영역을 공유하기 때문에)  H/W가 간단

상대되는 방식으로는 I/O Mapped I/O가 있다

 

 

STM32F103RB 기준으로 확인하기

임베디드 프로그래밍에 사용되는 ARM  프로세서는 memory mapped I/O 방식을 사용한다.

SSAFY 수업에서 사용했던 STM32F103RB 기준으로 설명해보겠다.

 

STM32F103RB 

datasheet에서 Memory mapping 부분을 확인하면 메모리가 어떻게 사용되는지 확인할 수 있다.

주소가 낮은 곳에 시스템과 기억장치가 맵핑되어 있고,

주소가 높은 곳에 입출력관리 및 peripherals(주변장치)가 메모리에 맵핑되어 있는 것을 확인할 수 있다.

 

많은 임베디드 시스템에 사용되는 memory mapped i/o 방식은 메모리에 맵핑된 해당 장치의 레지스터 직접 접근하여 제어한다. 

제어 방법은 referenece manual을 참고하여 해당 레지스터에 값을 입력하는 방식으로 제어할 수 있다.

 

만약 port A의 GPIO를 제어하고 싶으면 referenece manual의 3.3장 Memory map에서 base address를 찾고

원하는 설정 값에 따라서 base address + offset 주소에 설정 값을 넣어주면 제어할 수 있다!

'Computer Science > 임베디드' 카테고리의 다른 글

임베디드 개발 영역  (1) 2024.12.13
유선 통신 기초  (0) 2024.08.19

+ Recent posts