Page 206 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 206
-하버드 구조에서는 MCU가 적합하고, 범용성이 목적인 컴퓨터는 폰 노이만이 적합하다.
-코드 메모리 버스: 물리적으로 2개의 버스로 구성( I CODE, D CODE)
-시스템 버스 : SRAM과 주변장치로 접근하기 위해서 사용
-전용 주변장치 버스 로 구성
B. 3 State Pipeline 구조로 명령어 처리
- FETCH -> DECODE -> EXECUTE
C. 중첩 벡터 인터럽트 컨트롤을 지원
- NVIC (Nested Vectored Interrupt Controller)는 중첩 벡터 인터럽트 컨트롤러이다.
- NVIC는 MPU, SYSTICK Timer, 디버깅 제어를 위한 제어 레지스터와, 인터럽트 처리를
위한 레지스터의 제어로직이 있다.
D. Debug access port는 Debug을 위한 Port
E. Bus Matrix는 M3의 내부 블록간의 인터페이스를 담당
- 하버드 아키텍쳐를 갖기 때문에 명령어 버스와 데이터 버스가 별도로 존재한다.
- 그렇기 때문에 동시에 접근이 가능하므로 빠른 처리가 가능하다.
2. 미리 정의된 메모리 맵
인터럽트 컨트롤러 및 peripheral 장치들이 메모리 접근 명령어에 의해 접근 할 수 있도록 하
여 C프로그램 코드 안에서도 접근이 가능하다. 외부 인터럽트 컨트롤러나 디버그 컴포넌트는
Vendor Specific memory에 할당 되어있고, 전용 주변장치에 대한 제어도 Private Peripheral
bus의 메모리 영역에 할당 되어있다. 출력OUT파일에 대한 Memory Map을 제공하여 Memory
Map을 통해 최적화를 할 수 있다.
3. CODE영역과 Data영역
Code 영역은 코드 자체를 구성하는 메모리 영역으로 HEX나 BIN파일에 저장되고 Data 영
역은 전역 변수나 정적 변수, 구조체 등이 저장된다. 초기화 된 데이터는 data영역에 저장되
고, 초기화 되지 않은 영역은 BSS(Block Stated Symbol)에 저장된다.
4. R0~R12는 데이터 동작을 위한 범용 레지스터 (R0-R3은 로컬변수처럼 자유롭게 사용)
A. R0~R7은 Low Register라고 한다.
B. R0~R7은 16Bit Thumb-2 명령어의 일부 접근할 수 있다.
C. R13은 Stack Pointer로 2개의 스택포인터로 메인 스택 포인터와 프로세스 스택 포인터
이다. 메인 스택 포인터는 익셉션 핸들러(Interrupt 포함)에 의해 사용(인터럽트가 중첩
하여 들어왔을 때 처리하는 스택포인터)하고 프로세스 스택 포인터는 사용자 어플리케
이션 코드에 의해 사용된다. Special Register의 Control Register에 따라서 어떤
Stack Pointer를 사용할지 결정된다.
5. 간단한 APP는 MSP만 사용한다.
- 199 -