반응형
📦 DMA vs 인터럽트 수신 방식 비교 및 장단점, 상황별 사용 (STM32 기준)
🧩 기본 비교
구분 | 인터럽트 방식 | DMA 방식 |
CPU 개입 | 이벤트마다 직접 ISR처리 | 데이터 전송 전체를 DMA가 맡아 CPU는 최소 관여 |
반응 속도 | 개별 이벤트(단건 전송)마다 빠른 반응 | 전체 데이터 전송 완료 후 일괄 처리 |
CPU 부하 | 빈번한 인터럽트 발생 시 CPU 부하 ↑ | 데이터 전송 중 CPU는 자유롭게 다른 작업 가능 |
설정 복잡성 | 간단 (인터럽트 Enable만 하면 됨) | 복잡 (DMA 스트림/채널 설정, 전송 크기 관리) |
메모리 일관성 | 관리 간편 | (캐시가 있는 경우) 캐시 일관성 관리 필요 |
에러 핸들링 | 작은 데이터 단위에서 세밀한 핸들링 가능 | 전송 완료 후 일괄 핸들링 |
디버깅 난이도 | 쉬움 (인터럽트 발생 즉시 디버깅 가능) | 어려움 (DMA 완료 후 결과만 확인 가능) |
🏆 각 방식의 장단점
🔔 인터럽트 방식
- 장점
- 소량 데이터 처리에 빠름
- 코드 구조가 직관적이고 간단
- 즉시 반응 필요한 이벤트(버튼 입력, 센서 트리거)에 유리
- 디버깅이 쉬움 (단건 이벤트별 디버깅)
- 단점
- 전송량 많아지면 인터럽트 폭발 → CPU가 인터럽트 응답만 하다가 멈춤
- 실시간성 요구가 높을 때 CPU가 과부하될 위험 존재
2025.04.28 - [임베디드 관련/STM32] - [STM32] 인터럽트(Interrupt) 시스템
[STM32] 인터럽트(Interrupt) 시스템
🛡️ STM32에서의 인터럽트(Interrupt) 시스템📚 기본 개념인터럽트(Interrupt)란?CPU가 다른 작업을 수행 중이라고 가정외부 신호나 하드웨어 이벤트가 발생현재 작업을 일시 중단하고 긴급 처리를
kfdd6630.tistory.com
🚀 DMA 방식
- 장점
- 대용량 데이터 전송에서도 CPU 부하가 거의 없음
- CPU가 다른 작업과 병행 가능 → 효율적인 멀티태스킹
- 저전력 모드와 조합하여 에너지 효율 ↑
- 단점
- 설정이 복잡 (스트림/채널/전송 크기/완료 인터럽트 설정 필요)
- 버그 발생 시 디버깅 난이도 상승
- 주의사항 많음 (버스 충돌, 메모리 정렬, 캐시 일관성)
2025.04.28 - [임베디드 관련/STM32] - [STM32] DMA(Direct Memory Access)
[STM32] DMA(Direct Memory Access)
🚀 STM32에서의 DMA(Direct Memory Access)📚 기본 개념DMA란?CPU를 거치지 않음메모리 ↔ 주변장치, 또는 메모리 ↔ 메모리 간에 전송직접 데이터 전송을 수행하는 하드웨어 모듈CPU가 데이터 전송에 관
kfdd6630.tistory.com
🛠️ 어떤 상황에서 어떤 방식을 쓸까?
상황 | 추천 방식 | 이유 |
버튼 클릭, 간단한 상태 변화 감지 | 인터럽트 | 빠른 반응성 필요, 데이터 량 적음 |
단일 문자 UART 수신 | 인터럽트 | 1~2바이트 처리에 DMA는 오히려 오버헤드 |
센서 값 1개 읽기 | 인터럽트 | 데이터 작음, 단발성 이벤트 |
수십 ~ 수백 바이트 UART 수신 | DMA | 연속 데이터 수신 시 인터럽트 방식은 부하 심각 |
ADC, SPI, I2C 대량 샘플링 | DMA | 지속적 대량 데이터 수집에 CPU 개입 줄여야 함 |
LCD, 메모리 복사 작업 (Mem2Mem) | DMA | 빠른 대용량 메모리 작업 필요 |
FreeRTOS 등 RTOS 환경 | 주로 DMA | CPU는 Task 스케줄링에 집중, 데이터 전송은 하드웨어에 위임 |
🎯 결론 요약
- 소규모 데이터, 빠른 반응 → 인터럽트 방식이 간편하고 빠름
- 대규모 데이터, CPU 부하 분산 → DMA 방식이 압도적으로 유리
"인터럽트는 소통, DMA는 대량 수송" 으로 기억
반응형
'임베디드 관련 > STM32' 카테고리의 다른 글
[STM32] DMA + IDLE + 링버퍼 실전 (1) | 2025.05.02 |
---|---|
[STM32] DMA + 인터럽트 + 링버퍼 수신 방식의 개념 (0) | 2025.05.01 |
[STM32] DMA(Direct Memory Access) (0) | 2025.04.29 |
[STM32] 인터럽트(Interrupt) 시스템 (0) | 2025.04.28 |
[STM32] CHxN 채널을 사용해서 PWM 출력? (0) | 2025.04.27 |
댓글