본문 바로가기
반응형

DMA5

[STM32] 인터럽트를 DMA로 바꾸어야 하는 경우 Interrupt to DMA1. 반복적으로 고정된 크기의 패킷을 받을 경우라면 DMA 방식이 압도적으로 유리2. 아래에서 구체적으로 차이를 요약🎯 핵심 차이 요약항목 인터럽트 방식 (RXNE, if문으로 길이 확인) DMA 방식 (지정 크기 수신 후 자동 콜백)항목인터럽트 방식 (RXNE, if문으로 길이 확인)DMA 방식 (지정 크기 수신 후 자동 콜백)수신 처리 방식바이트마다 인터럽트 발생 → if() 조건으로 수동 처리지정된 패킷 길이만큼 수신 후 콜백 한 번 발생코드 구조루프 및 상태 머신 필요 (state, index, length 등)버퍼에 자동 수신 → 콜백 함수에서 한 번에 처리CPU 부하바이트마다 인터럽트 발생 → 매우 빈번한 ISR 진입데이터 다 들어오면 한 번 콜백 → ISR 진입.. 2025. 5. 17.
여러 UART, DMA 기반 센서 수신 구조로 문제 해결 여러 UART 수신 문제 해결: Interrupt에서 DMA 기반 센서 수신 구조로 변경📌 문제 개요3개의 센서에서 각기 다른 UART 포트를 통해 거리 데이터를 수신각 센서에서 전송되는 데이터는 고정 크기이며, 패킷 단위로 수신 필요초기에는 UART 인터럽트 기반 수신을 구현했지만, 다음과 같은 문제 발생UART 인터럽트 방식으로는 3개 패킷이 모두 수신되지 않거나,1~2개만 수신되는 경우가 빈번함패킷 수신 시점과 구조체 조립 간의 타이밍 오차, 인터럽트 지연 문제✅ 개선 방식: DMA 기반 UART 수신 전환각 UART 포트에 대해 HAL_UART_Receive_DMA()를 사용해 지정된 크기만큼 패킷 단위 수신 설정DMA 수신 완료 시 HAL_UART_RxCpltCallback()에서 각 패킷을 .. 2025. 5. 16.
[STM32] DMA + 인터럽트 + 링버퍼 수신 방식의 개념 DMA, 인터럽트, 링버퍼 수신 방식의 개념 정리 📌 HAL_UART_Receive_DMA + IDLE 인터럽트 조합 링버퍼 방식🧩 왜 중요한가?UART는 기본적으로 데이터를 한 바이트씩 순차적으로 받음DMA는 UART 수신을 CPU 개입 없이 버퍼에 넣어줄 수 있음하지만 "DMA가 언제 수신을 끝내는지" 를 알기가 어려움이걸 해결하는 게 바로 IDLE 인터럽트UART 라인이 일정 시간 동안 변화가 없으면 "IDLE" 발생즉, "수신이 끊겼다"고 알 수 있음DMA + IDLE 조합은CPU 부하를 줄일 수 있음수신 완료 시점을 정확하게 인식할 수 있음 📌 "빠른 연속 데이터 수신"에도, "비정기적 데이터 수신"에도 매우 효과적🚀 장점CPU 부하 최소화→ DMA가 수신, CPU는 IDLE 때만 개입.. 2025. 5. 1.
[STM32] DMA(Direct Memory Access) STM32에서의 DMA(Direct Memory Access)📚 기본 개념DMA란?CPU를 거치지 않음메모리 ↔ 주변장치, 또는 메모리 ↔ 메모리 간에 전송직접 데이터 전송을 수행하는 하드웨어 모듈CPU가 데이터 전송에 관여하지 않기 때문에 아래 가능CPU는 다른 작업에 집중 가능 → 성능 최적화⚙️ STM32 DMA 구조STM32 MCU는 DMA 컨트롤러를 내장하고 있음보통 여러 개의 Stream/Channel 지원각각 Source Address → Destination Address 전송 지원데이터 전송이 끝나거나, 에러 발생 시 인터럽트 발생 가능 STM32F7 기준DMA1, DMA2 컨트롤러각각 다수의 Stream 제공 (ex: DMA2_Stream0)🛠️ DMA 기본 전송 흐름DMA 컨트롤러.. 2025. 4. 29.
AES-DMA 엔진 AES-DMA 엔진이란? 1. AES-DMA 엔진은 AES(Advanced Encryption Standard) 암호화와 DMA(Direct Memory Access) 기능을 결합한 하드웨어 모듈 또는 엔진을 의미한다.2. 이 두 가지 기술의 조합은 데이터를 효율적으로 암호화하거나 복호화하면서도 시스템 자원의 사용을 최적화하는 데 중요한 역할을 한다.3. 이 엔진은 임베디드 시스템, 네트워크 장비, 스토리지 장치 등에서 널리 사용된다.4. AES-DMA 엔진을 사용하면, 데이터 전송 중에 암호화 작업을 수행할 때의 오버헤드를 줄이고 전체 시스템의 성능을 극대화할 수 있다.각각의 구성 요소1. AES (Advanced Encryption Standard)AES는 대칭 키 블록 암호화 알고리즘으로, 데이터를.. 2024. 8. 19.
반응형