본문 바로가기
임베디드 관련/STM32

[STM32] DMA vs 인터럽트

by minhyeok.lee 2025. 4. 30.
반응형

📦 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는 대량 수송" 으로 기억

반응형

댓글