UNIT 07 Memory Map 로봇 SW 교육원 조용수
학습 목표 Memory Memory Map Port Map I/O Memory Map I/O IP Register MCU Programming
Memory CPU 동작에 필요한 데이터를 가져오기 위한 Device Address Bus와 Data Bus 를 사용 Data Bus의 사이즈에 의해서 한번에 전달되는 데이터의 용량이 결정 (예: 8bit, 16Bit, 32Bit)
Memory Map 프로그램에 의해 작성 된 코드를 실행파일로 만들어 실행할 때, 메모리에 각각의 데이터 영역을 분리하여 할당 된 지도 프로세스가 실행되기 위한 데이터 저장 할 변수 영역, 기계어 코드 영역 등의 분류 별로 나누어 저장하는 지도
Port Mapped I/O I/O Device 와 메모리 의 입출력 주소 공간을 분리 I/O Device를 Access 할 수 있는 명령어를 제공 메모리와 I/O 속도의 차이가 있으므로, 분리 시 속도와 효율을 기할 수 있음.
Memory-mapped I/O I/O Device 와 메모리의 주소공간을 분리하지 않고 하나의 메모리 공간으로 취급하여 배치 I/O Device 를 Access 할 때 메모리와 같은 Instruction Code 를 사용 할 수 있음.
Cortex-M0 Memory map Code SRAM Peripheral System Typically ROM or flash memory, WT 0x00000000 – 0x1FFFFFFF SRAM 0x20000000 – 0x3FFFFFFF Typically used for on-chip RAM, WBWA Peripheral 0x40000000 – 0x5FFFFFFF on-chip peripheral, XN 0x60000000 – 0x7FFFFFFF 0x80000000 – 0x9FFFFFFF 0xA0000000 – 0xBFFFFFFF 0xC0000000 – 0xDFFFFFFF System system segment including the PPB, XN 0xE0000000 – 0xFFFFFFFF Note 1 : Event entry points (vectors), system control, and configuration are defined at physical addresses Note 2 : A multi-word access which crosses a 0.5GB address boundary is UNPREDICTABLE
Cortex-M0 Memory Map(Memory)
IP Register MCU 에 포함된 각종 I/O Device 는 특정 Control Register 의 Read/Write 를 통해서 동작한다.
IP Register
IP Register
MCU Programming 목표 : LED On/Off
MCU Programming
MCU Programming
IP Register
IP Register
main void SystemInit() { } int main(void) { *((volatile unsigned int *)(0x50004000 + 0x88))=(0x00); while(1);
JTAG Debugger CPU ID View : 0x5000 0000 GPIO Port View : 0x5000 4000 Memory View Memory Modify
CMSIS Cortex Microcontroller Software Interface Standard 다양한 ARM Processor 제조사 Chip 을 지원하기 위한 표준적인 Library I/O 디바이스 지원을 위한 Source 및 API 지원
CMSIS Project 기존 StartUp Code 를 사용하지 않고, Library 사용 필요한 Sdk 를 포함 하여 Project 를 구성
CMSIS Project 생성 #include <stdio.h> #include <stdint.h> #include "M051Series.h" void SystemInit() { } int main() P2->DOUT = 0x55; while(1);