임베디드-3

기타튀김·2025년 5월 14일

임베디드

목록 보기
3/8


📘 Lecture 03 — ARM Cortex-M4 Processor 정리


✅ 1. Cortex-M4는 어떤 프로세서인가?

● ARM Cortex-M 시리즈 중에서도 M4는 고성능 신호 처리 기능까지 포함된 MCU용 프로세서이다.

  • 2010년 출시
  • 저전력 기반의 32-bit RISC 아키텍처
  • DSP 연산, FPU (Floating Point Unit, 선택), SIMD 연산, 단일 사이클 MAC 연산 지원
  • 전형적인 용도: 자동차, 산업 제어, IoT 기기, 의료기기 등

🔎 핵심 철학: 성능은 높이고, 전력 소모는 줄이며, 정해진 시간 안에 예측 가능하게 처리할 수 있도록 설계됨.


✅ 2. Cortex-M4의 주요 특징

항목내용
구조32-bit RISC, Harvard 구조
명령어 집합Thumb-1 (16비트), Thumb-2 (16/32비트 혼합)
파이프라인3단계 (Fetch – Decode – Execute) + 분기 예측
인터럽트 수최대 240개 (Nested 지원)
성능지표1.25~1.95 DMIPS/MHz
전력 효율µW/MHz 단위의 소비전력 (180ULL 공정 기준: 151µW/MHz)

※ DMIPS는 Dhrystone MIPS로, 임베디드 성능 벤치마크 단위이다.


✅ 3. 프로세서 내부 구조: 블록 다이어그램 중심 이해

🔹 주요 구성 요소

  • 코어: ALU, 레지스터 뱅크, 제어 유닛 포함
  • 파이프라인: 3-stage 구조로 빠른 명령 실행 지원
  • NVIC (Nested Vectored Interrupt Controller): 최대 240개의 인터럽트를 우선순위 기반으로 관리
  • WIC (Wake-up Interrupt Controller): Deep Sleep 중에도 특정 인터럽트로 깨우는 역할
  • MPU (Memory Protection Unit): 영역별 메모리 접근 제한 설정 가능
  • 버스 인터커넥트: 여러 버스(AHB/APB 등)를 연결해 데이터 전송 경로 제공
  • 디버그 시스템: JTAG/SWD를 통한 브레이크포인트, 워치포인트 설정 가능

✅ 4. Cortex-M4의 레지스터 구조

이름설명
R0~R12범용 레지스터
R13Stack Pointer (SP) – Main Stack / Process Stack
R14Link Register (LR) – 함수 리턴 주소 저장
R15Program Counter (PC) – 다음 명령 주소
xPSRProgram Status Register – 조건 플래그 포함 (N, Z, C, V, Q 등)

⚠️ Thumb 상태에서 실행되므로 EPSR의 T bit는 항상 1이다.

또한, PRIMASK, FAULTMASK, BASEPRI 등의 인터럽트 마스크 레지스터를 통해 예외 처리와 임계 구간 보호가 가능하다.


✅ 5. 메모리 맵 구조 (Memory Map)

● 총 4GB (0x00000000 ~ 0xFFFFFFFF) 공간을 아래와 같이 분할함

주소 영역용도
0x00000000 ~ 0x1FFFFFFF코드 영역 (On-chip Flash, 벡터 테이블 등)
0x20000000 ~ 0x3FFFFFFFSRAM 영역 (스택, 데이터 등)
0x40000000 ~ 0x5FFFFFFFPeripheral 영역 (AHB/APB 장치)
0x60000000 ~ 0x9FFFFFFF외부 RAM 영역 (SDRAM 등)
0xA0000000 ~ 0xDFFFFFFF외부 장치 영역 (LCD, SD카드 등)
0xE0000000 ~ 0xFFFFFFFF시스템 제어 영역 (NVIC, SCB 등)

✅ 6. Bit-band 연산: 단일 비트 조작의 효율성

● 일반적인 메모리 조작 (Read-Modify-Write 방식)의 문제점

  • 다중 태스크 환경에서는 인터럽트 발생 시 비트 값이 유실될 수 있음

● 해결책: Bit-band alias 영역 활용

  • 단일 비트를 직접 수정할 수 있는 특수 주소를 제공
  • SRAM 및 Peripheral의 일부 영역은 각각 bit-band alias 영역과 연결됨

예: 0x20000000의 bit[3]을 1로 설정 → 0x2200000C1 저장


✅ 7. 저전력 동작 모드 및 Sleep 기능

기능설명
Sleep Mode기본 절전 상태 (코어만 정지)
Deep Sleep거의 모든 시스템 정지, WIC로만 깨울 수 있음
WFI / WFEWait for Interrupt / Wait for Event 명령어 사용
Sleep-on-exit인터럽트 종료 시 바로 Sleep 진입

이런 기능을 통해 배터리 기반 IoT 기기에서 장시간 동작이 가능하게 한다.


✅ 8. 디버깅 및 추적 기능

  • JTAG / SWD 포트: 표준 디버깅 인터페이스
  • Breakpoint / Watchpoint: 최대 8개 / 4개 설정 가능
  • Data Tracing, Program Trace 지원: 실시간 디버깅 가능
  • AHB-Lite 인터페이스를 통해 외부 메모리 연결에도 유연함

🧾 정리 요약

항목요약 설명
Cortex-M4ARM의 MCU용 고성능 저전력 프로세서, Thumb-2 명령 기반
파이프라인3단계 (Fetch–Decode–Execute), 분기 예측 포함
인터럽트최대 240개, 우선순위 및 Nesting 지원
레지스터16개 (SP, PC, LR 포함) + 상태 레지스터(xPSR 등)
메모리 맵4GB 구조, 코드/데이터/외부장치/시스템 제어 영역 구분
Bit-band단일 비트 조작을 위한 주소 매핑 지원
저전력WFI/WFE, Sleep-on-exit, Deep Sleep 등 다수의 절전 기능
디버깅Breakpoint, Watchpoint, SWD, Program Trace 지원

profile
부산대 정보컴퓨터공학부

0개의 댓글