통합 차량 관제 시스템 용어 사전
제어·구동DMA · eDMA

DMA

CPU 를 거치지 않고 주변장치와 메모리 사이에서 데이터를 옮기는 하드웨어.

Direct Memory Access. CPU 가 바이트를 하나씩 복사하는 대신 전용 컨트롤러가 알아서 옮긴다.

왜 필요한가

VSS 오디오가 대표적이다. 48 kHz 스테레오면 초당 96,000 샘플을 코덱에 넘겨야 하는데, 이걸 CPU 가 인터럽트로 하나씩 처리하면 CPU 가 그 일만 하다 끝난다.

DMA 를 쓰면 CPU 는 버퍼를 채워 두기만 하고, 실제 전송은 하드웨어가 한다. 그래서 오디오를 내면서 상태 종합 태스크도 돌 수 있다.

이 프로젝트에서 쓰이는 곳

오디오 출력    메모리 → I2S 코덱      끊기면 소리가 튄다(underrun)
ADC 스캔      ADC → 메모리           여러 채널을 CPU 개입 없이
CAN 수신      주변장치 → 링버퍼        프레임 손실 방지

주의 — 버퍼가 살아 있어야 한다

DMA 가 참조하는 버퍼를 스택에 잡고 함수가 반환하면, DMA 는 이미 사라진 메모리를 계속 읽는다. 정적 버퍼나 힙이어야 하고, 임베디드에서는 보통 정적으로 잡는다.

그리고 DMA 가 쓴 메모리를 CPU 가 읽을 때 캐시 일관성을 신경 써야 하는 칩도 있다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — Predictive Climate — Fan 소유권·Pre-conditioning·자동 환기