NVIC
Nested Vectored Interrupt Controller(중첩 벡터형 인터럽트 제어기)
즉, 우선순위에 따라서 모든 인터럽트를 처리 가능
- Cortex-M 프로세서의 내부에 위치
- 최대 256개의 서로 다른 우선 순위 설정 가능, 최대 240개 외부 인터럽트 지원 가능
- 프로세스 상태: 인터럽트 진입시 자동으로 저장(by HW), 인터럽트 종료 시 복원
- 인터럽트 테일 체인 지원
- Cortex-M의 벡터 테이블은 이전의 레거시 ARM 코어와 약간 다름
- 하드웨어 인터럽트 처리를 메인 인터럽트 벡터테이블에서 처리 → 응답시간 개선
- 레거시 ARM과 달리, 벡터 테이블에 명령어가 아닌 예외처리기 및 ISR의 주소가 포함

Exception Vector Table

총 n개의 인터럽트 처리를 위한 테이블
벡터 테이블은 인터럽트 발생 시, 그에 맞는 핸들러가 실행될 수 있도록 해주는 함수 테이블
여기서 IRQ0 ~ IRQn 은 외부 HW인터럽트 처리를 위함
Exception vector table을 확인해보자

.word EXTI0_IRQHandler는 EXTI0_Handler함수의 주소를 4바이트(word)크기로 저장
그래서 인터럽트가 발생하면 핸들러 함수로 점프
예를들어
- 버튼 클릭 → GPIO 핀 전기적 변화
- EXTI가 해당 핀 변화 감지
- NVIC으로 전달, 우선순위 검토
- Cortex로 전달
- 벡터테이블을 참조, 해당 인터럽트 핸들러 실행
- 복귀
'ARM arch > Cortex-M' 카테고리의 다른 글
| 테일 체이닝 (2) | 2025.09.01 |
|---|---|
| cortex-m3 AMBA와 메모리 맵 (0) | 2025.07.14 |
| 2025.07.09 - ARM assembly 프로그래밍2 (0) | 2025.07.09 |
| 2025.07.07 - ARM assembly 프로그래밍1 (0) | 2025.07.08 |
| 빅 엔디언, 리틀 엔디언 (0) | 2025.07.02 |