본문 바로가기

트렌드 한눈에 보기/산업 트렌드

STM32 보드 Direct Memory Access (DMA) 튜토리얼 및 해설

"STM Cube IDE는 자동으로 코드를 만들어주니까, 이전에 프로그래밍하던 사람들은 어처구니가 없는거지. 이걸 어떻게 믿고 써" 라고 직장에서 STM 교육을 받던 중 개발자님이 말씀하셨더랬다. 그때만 해도 "하긴 밑도 끝도 없이 자동화 툴이라고 하면 신빙성이 떨어지지" 라는 생각과 "잘 되기만 하면 초보자가 쓰기엔 정말 좋겠다" 하는 생각이 공존했더랬다. 하지만, 보다 본격적으로 튜토리얼을 듣고 (관련 글) 내용을 되새김질 하는 시간을 가져보니 자동화 때문에 공부가 여간 어려워진게 아니다. 그래도 공부한 내용을 최대한 정리해봤다.

 

STM 교육 후기 - 강남 YBM Biz 교육 센터 10:00~16:00

ST에서 주최하여, INSEM이라고 하는 대리점에서 진행한 STM 중급자 (Advanced Course) 교육을 듣고 왔다. 사실 중급 코스를 들어도 되는지는 의문이다. STM에 대해 제대로 아는 것은 거의 없고, 기초적인

mech-literacy.tistory.com


내가 진행했던 튜토리얼은 DMA, Direct Memory Access다. 아직 완벽히 이해한 내용은 아니지만, CPU라는 중앙처리장치를 거치지 않고서도 메모리에서 메모리로, 메모리에서 주변장치 (Peripheral Device)로, 주변장치에서 메모리로 데이터 이동이 가능하다고 한다. 이렇게 될 경우 CPM 가동으로 인한 전력 소모를 최소화 하면서도 정보처리가 가능한 것이다. 웨어러블 기기처럼 작은 배터리가 필수적인 상황에서 DMA도 꼭 필요한 기술이 아닐 수가 없다.

튜토리얼의 내용은, STM 보드의 내장 LED (PA5 핀)을 DMA를 통해 제어하는 것이었다. 문제는 여기서부터 시작한다. 데이터를 이동하는것이 DMA라면 LED를 제어하는 것에 어떤 데이터가 어디서 어디로 이동한다는 거지? 

위 튜토리얼 자료대로, LED 제어용 DMA는 메모리에서 Peripheral (주변장치)로 이동한다. 게다가 DMA 설정을 Timer2에서 하고 있으니, Timer가 메모리고, LED가 Peripheral인 것일까? Timer가 Peripheral이고 메모리는 따로 있는 것일까? STM의 구조에 대해서 익히기도 전에 이런 튜토리얼을 진행하고 나니, 나 스스로 개발할 자신이 없다. 그리고, 구조에 대해 익히기도 전에 이런 튜토리얼을 진행할 수 있는 것은, 자동화가 잘 되어 있기 때문이다. 아이러니하게도, 자동화가 되어 있어서 수동으로 개발하지 못하는 상황이랄까. 완벽한 자동화가 아닌 자동화는 눈속임일 뿐이다. 튜토리얼 자료가 간소화된 탓에 공부하기만 힘들어졌다.

 

숱한 정보의 홍수 속에서, 길 잃은 내 질문에 명확한 답을 제시해주는 것은 아이러니하게도 chatGPT였다. TIMER는 peripheral이고, 메모리는 LED 밝기를 저장하는 Array였던 것이다. 결과적으로 아래 도식을 다음과 같이 이해할 수 있다. SRAM (메모리겠지?)에서 밝기 정보를 Stream에 태워서 Timer (Peripheral이다!) 로 보내면 Timer에 부착된 LED가 밝기 정보에 따라서 빛을 반짝인다는 것이다. Timer에 LED 핀이 붙는다는 사실도 겨우 깨우쳤다.

 

 

결국 코딩 작업은 아래 표와 같이 간단하지만, 실질적인 세팅은 STM Cube MX에서 전부 해줘야 한다. 실질적인 세팅이라 함은, Timer와 LED를 연결하고, 채널을 설정하며 (채널은 무슨 일을 하는 걸까?), 주파수를 설정하는 활동이다. 강물에 우아하게 떠 있는 악어가, 수면 밑에서는 짧은 팔다리로 버둥거리고 있음을 보는 형국이다. 이런 것들은 휘리릭 넘어가면서 "자동화"? 어림도 없는 소리다.


이 지경에 다다르고 나니, "굳이 STM을 써야하나?" 하는 생각이 스멀스멀 피어오른다. 프로토타입이 필요하다면 30배는 간단한 아두이노로 개발할 수 있고, feasibility를 확인한 후에 STM으로 전력 최적화를 이뤄내도 되는 것 아닌가? 물론 feasibility를 보는 것이 목적이 아니라 성능 구현을 목적으로 한다면 이야기는 달라지겠지만...