MCU의 Memory Map에 대해서

워너비임베·2024년 12월 15일

STM32

목록 보기
1/4

ARM Cortex M4 CPU에는 다양한 bus interface가 존재한다.
이 프로세서(CPU)에는 width가 32bit인 시스템 버스가 존재한다.
이러한 버스를 통해 32bit 단위(=4byte)로 플래시 메모리, 주변장치(Peripheral)들과 데이터를 처리하고 전달할 수 있다.
따라서 프로세서는 32bit시스템 버스를 통해 4GB의 다른 메모리 주소를 생성할 수 있다.(표현 가능한 주소의 개수가 2322^{32})
따라서 그 범위는 0x0000_0000 ~ 0xffff_ffff로 구성되어지고
MCU 제조사가 이 메모리 범위안에서 다양한 Peripheral장치를 부착시키는 것이다.


0x0000_0000 ~ 0xffff_ffff의 범위를 가짐

GPIOA Peripheral은 0x4002_0000 ~ 0x4002_03FF 영역을 가진다.


ARM 프로세서의 입장에선 ROM이나 RAM이나 Peripheral장치들이나 주소를 통해 값을 읽고 쓰므로 그 차이를 알 수 없고 그냥 다 할당된 주소값을 가진 메모리처럼 보인다.
📔즉, CPU입장에서 봤을때, 주변장치들을 메모리처럼 보고 접근하는 것이다
여기서 Memory Mapped I/O라는 용어가 나오는데 IO장치를 Memory처럼 동작한다고 해서 이런 이름이 명명 되었다.
주소를 알면, 레고 붙이듯이 장치를 연결할 수 있는 점이 Memory Mapped I/O의 장점이다.
그 반대의 개념으로는 Port Mapped I/O 방식이 있다.

0개의 댓글