자신만의 애플리케이션을 STM32MP1 MPU가 탑재된 개발 보드로 개발하는 'STM32MP1 완전 정복 퀘스트 챌린지' 대회가 성황리에 끝이 났다. 최종 순위에 이름을 올린 김정수, 배상구 엔지니어에게 대회를 통해 얻을 수 있었던 것들에 관해 물었다.
실내외 공기질 측정 및 표시하는 시스템
개발 보드 기능으로 구현한 주파수 분석기
STM32MP1 완전 정복 퀘스트 챌린지서 수상
전기·전자 시스템 설계에 관심만 있다면 누구라도 참여가 가능한 STM32MP1 퀘스트 챌린지가 지난 6월 22일, 막을 내렸다.
ST마이크로일렉트로닉스 코리아가 주최하고 e4ds 메이크(Make)가 주관한 'STM32MP1 완전 정복 퀘스트 챌린지'는 4월 13일부터 6월 14일까지 두 달간 진행됐다.
STM32MP1 보드가 탑재된 'STM32MP157C-DK2 디스커버리 키트'를 이용하여 독자적인 애플리케이션을 개발하는 이번 대회는 매주 1개씩 총 7개의 퀘스트가 진행됐다. 가장 어려운 마지막 애플리케이션 완성 퀘스트는 특성상 2주 동안 진행됐다.
직전 퀘스트를 통과해야만 다음 퀘스트에 도전할 수 있었으며, 파이널 퀘스트까지 모두 마친 참가자는 ST 코리아에서 선정한 순위에 따라 갤럭시 S20, 갤럭시 워치, 갤럭시 버즈 등을 경품으로 받을 수 있었다.
총 238명의 엔지니어가 이번 챌린지에 도전했으며, 14명만이 모든 퀘스트를 끝마칠 수 있었다. 그리고 챌린지가 끝나고 일주일가량 후, 최종 순위가 발표되며 갤럭시 워치를 가져갈 4명의 엔지니어가 확정됐다.
e4ds 뉴스는 김정수, 배상구 엔지니어에게 대회에 입상한 소감과 겪었던 과제들, 그리고 엔지니어로서 얻을 수 있었던 경험에 관해서 물었다.
▲ 실내외 공기질 정보 제공 시스템 [사진=김정수]
김정수 엔지니어의 실내외 공기질 정보 제공 시스템은 각종 센서가 획득한 공기질 정보를 STM32MP1에 탑재된 Arm Cortex-M4 코어로 취합하여 IPCC(Inter-Processor Communication Controller)로 Arm Cortex-A7 코어로 전달하여 실내 공기질을 디스플레이에 표시하는 시스템이다. 또한, OpenAPI를 사용하여 한국환경공단에서 얻은 동네 대기 환경 데이터를 실외 공기질 화면에 표시한다.
Q1. STM23MP1 완전 정복 퀘스트 챌린지에 입상하신 걸 축하드립니다. 간단한 자기소개 부탁드리겠습니다.
A. 안녕하세요. 제 이름은 김정수라고 합니다. 나이는 40대로, 판교에 있는 의료기기업체에서 소프트웨어 개발자로 일하고 있습니다.
Q2. 이번 대회는 어떤 경로로 알게 됐습니까? 평소 전자 회로 설계에 관심이 많으셨는지?
A. 대회가 열린다는 것은 e4ds 홈페이지를 통해 알게 됐습니다. 평소 취미로 라즈베리 파이 등 임베디드 시스템을 활용하여 여러 가지를 만들어 보고 있습니다.
Q3. 개발하신 과제에 대한 설명 부탁드립니다.
A. 날로 심각해지는 환경 오염 등으로 건강에 대한 염려가 커지고 있습니다. 그래서 제가 사는 공간 및 지역의 공기 질을 모니터링하는 기기가 있었으면 하는 바람으로 과제를 기획했습니다. 과제를 완성하기 위해 온도, 습도, 기압, 가스, 먼지 센서 모듈을 추가로 활용했습니다.
Q4. 개발 과정 중에 특히 생각나는 어려움이 있다면?
A. STM32MP1 보드와 BitBake, Qt 등 모두 처음 접해보는 것이라서 어느 정도의 공부가 필요했습니다. 그리고 개발 관련 국내 커뮤니티가 활성화되어 있지 않아 과제를 수행하면서 막히는 부분은 구글링을 통해 외국 커뮤니티 사이트의 Q&A 자료를 주로 참고했습니다. 또한, 같이 퀘스트를 수행했던 다른 참가자분들이 게시판에 올려주신 내용도 참고가 많이 되었습니다.
Q5. STM23MP1 보드와 Qt를 사용한 소감은 어떻습니까? 어렵거나 힘들진 않았습니까?
A. STM32MP1 보드는 ST-Link를 기본으로 지원해서 Arm A7 및 M4 코어를 위한 소프트웨어와 펌웨어를 내려받거나 디버깅하기 쉬웠습니다. 다만 Qt는 관련 서적이 좀 많이 나왔으면 하는 바람입니다. STM32MP1 보드와 Qt는 IoT 제품 설계 시 유용하게 사용할 수 있는 플랫폼으로서 좋은 선택지가 될 수 있다고 생각합니다.
Q6. 이번 퀘스트 챌린지와 같은 대회가 다시 열린다면 참여하실 생각입니까?
A. 새로운 것을 배우는 것에 대한 즐거움을 느낄 기회가 다시 주어진다면, 참여할 생각입니다.
Q7. 대회 진행에 있어 개선되었으면 하는 부분이 있다면?
A. 게시판에 특정 단어가 들어가면 글 등록 시 에러가 나는 경우가 많았습니다. 게시판 기능을 보강하면 참가자들 간의 소통이 더욱 원활해질 수 있을 것 같습니다.
▲ 주파수 분석기 [사진=배상구]
배상구 엔지니어의 주파수 분석기는 STM32MP1에 내장된 ADC 모듈과 FPU 및 DSP를 지원하는 M4 코어를 활용하여 제작됐다. 또한, 참가자 전원에 지급된 STM32MP157C-DK2 개발 보드에 탑재된 LCD에 Qt를 이용해 제작한 애플리케이션 GUI가 표시되도록 했다.
Q1. STM23MP1 완전 정복 퀘스트 챌린지에 입상하신 걸 축하드립니다. 간단한 자기소개 부탁드리겠습니다.
A. 저는 RF 계측 장비 제조회사에서 장비 애플리케이션을 개발하는 배상구(37)라고 합니다.
Q2. 이번 대회는 어떤 경로로 알게 되신 겁니까? 평소 전자 회로 설계에 관심이 많으셨는지?
A. 지인 추천으로 참가하게 됐습니다. 저는 로봇 만드는 것이 좋아 대학에서 관련 전공을 선택했고, 이후 임베디드 시스템 개발사에서 하드웨어나 소프트웨어 등을 개발했습니다. 현재는 소프트웨어 개발을 주로 하고 있지만, 취미 생활로 로봇을 만들고 있습니다. 주로 ST의 STM32 MCU를 사용하고 있습니다.
Q3. 개발하신 과제에 대한 설명 부탁드립니다.
A. 챌린지를 진행하면서 저만의 목적은 STM32MP1 개발환경을 구축하고 새로운 기능을 테스트하는 것이었습니다. 퀘스트 내용 또한, 저의 목적과 같았습니다.
퀘스트 4~6을 진행하면서 아직 공개되지 않은 퀘스트 7에 대하여 생각했습니다. 그간 진행된 각 퀘스트 내용으로 미루어 볼 때, Qt GUI 기반의 리눅스 애플리케이션 제작, 혹은 IPCC와 M4 코어를 활용한 하드웨어 제어 구현을 요구하지 않을까 예상했습니다.
하지만 제 예상과 달리 퀘스트 7은 자율 과제였습니다. 2주 안에 구현 가능한 과제를 생각하던 중 기존에 예상한 것들을 활용키로 했습니다. 저는 업무상 주파수 분석기(Spectrum Analyzer)를 많이 다룹니다. 그래서 STM32MP1의 기능들로 간단한 주파수 분석기를 구현할 수 있을 거라 판단하고 과제로 진행했습니다.
먼저 M4 코어에서 ADC, 타이머, DMA를 이용하여 아날로그 신호를 캡처했습니다. 그리고 ST에서 제공하는 DSP 라이브러리인 CMSIS를 이용하여 FFT를 하였습니다. 그리고 FFT 된 데이터를 RPMsg를 이용하여 M4에서 A7 코어로 전송했습니다. A7 코어에서는 리눅스 OS가 동작 중이므로 Qt를 이용하여 리눅스 애플리케이션을 제작하고, M4 코어로부터 FFT 된 데이터를 수신하면, 이를 디스플레이로 업데이트하도록 설계했습니다.
퀘스트 7은 끝났지만, 앞으로 ADC 샘플링 속도도 높이고, 오실로스코프 기능도 추가해 볼까 합니다.
Q4. 개발 과정 중에 특히 생각나는 어려움이 있다면?
A. 새로운 시스템을 개발할 때마다 느끼는 건데, 개발환경을 구축하는 것이 가장 어렵다고 생각합니다. 그래서 이번 대회를 통해 STM32MP1 개발환경 구축 관련 정보를 다른 개발자들과 공유하고 싶었습니다. 최대한 깔끔하고 자세히 정리하려고 했는데 아쉬운 마음이 듭니다.
10여 년 전, 임베디드 시스템 개발사에서 윈도 CE, 리눅스 등의 OS를 포팅하는 업무를 했었습니다. 이번 챌린지를 통해 욕토 프로젝트(Yocto Project)에 대해 알 수 있었던 부분은 좋았습니다.
두 번째로 생각나는 어려움은 IPC(Inter-Processor Communication) 기능입니다. STM32MP1 MPU, STM32H7x5 MCU 등에 듀얼 코어가 적용되었지만, 챌린지 전까지는 처음 접해보는 구조와 개념이었고, 자료도 많지 않아 접근하기 쉽지 않았습니다. 현재 STM32H745를 사용하고 있는데 이번 챌린지가 해당 MCU를 활용하는 데 많은 도움이 됐습니다.
Q5. STM23MP1 보드와 Qt를 사용한 소감은 어떻습니까? 어렵거나 힘들진 않았습니까?
A. Qt는 예전부터 쓰고 있습니다. 여러 OS에서 정형적으로 사용할 수 있어 굳이 GUI 개발이 아니더라도 많이 사용하고 있습니다. 이번 챌린지를 통해 처음으로 QML을 접하게 됐고, 네이티브 C++ (위젯) 방식과는 달라 공부가 되었습니다. 다만 QML 관련 학습이 부족하여 마지막 과제는 위젯을 이용하여 개발했습니다. 앞으로 QML에 대해 더 배우고, 베어메탈(BareMetal)에서 Qt를 이용한 GUI 구현에 시도해볼 계획입니다.
Q6. 이번 퀘스트 챌린지와 같은 대회가 다시 열린다면 참여하실 생각입니까?
A. 퇴근 이후 시간에 챌린지를 진행하다 보니 다소 긴박하게 두 달 정도의 시간이 금방 지나갔습니다. 혼자 진행했으면 더 오래 걸렸을 텐데 다른 참가자분들이 자료를 많이 공유해 주셔서 도움이 많이 됐습니다. 이런 대회가 또 열린다면 정보 공유를 위해서라도 다시 참가하고 싶습니다.
Q7. 대회 진행에 있어 개선되었으면 하는 부분이 있다면?
A. 퀘스트를 진행하면서 이전 퀘스트에서 명확하지 않았던 부분이 다음 퀘스트에서 해결되는 일이 많았습니다. 따라서 퀘스트 결과를 제출하는 퀘스트 수행 기록 게시판에 (심사에 방해되지 않은 선에서) 글 수정이나 추가 글 작성 기능이 추가되면 참가자끼리의 정보 공유가 더욱 활발해질 수 있으리라 생각합니다.