최신 ESP32, Linux를 실행하며 Raspberry Pi에 가까워지고 있음
요약
ESP32와 같은 MCU 기반 보드가 Linux 실행 능력을 갖추면서 Raspberry Pi에 근접하고 있습니다. 이는 네트워크 스택, 드라이버 지원 등 소프트웨어 이식성과 편리한 개발 환경을 제공하는 장점이 큽니다. 다만, 순수 처리 성능과 저수준 제어가 필요한 경우 단일 목적의 RTOS 기반 펌웨어가 여전히 효율적입니다.
핵심 포인트
- MCU에서 Linux 실행은 네트워크/USB 호스트 등 드라이버 지원이 핵심 이점이다.
- 단일 목적 펌웨어는 리소스 사용 측면에서 가장 효율적이며 지터가 없다.
- Linux의 장점은 소프트웨어 이식성과 추상화 계층 활용에 있다.
- RISC-V XIP(Execute In Place) 기능은 RAM 제한 기기에서 필수적이므로 재도입이 필요하다.
ESP32라는 이름을 쓰는 보드 간 성능 격차가 점점 커지고 있음. “ESP32에서 실행할 수 있음”이라는 말만으로는 어느 정도의 하드웨어 투자가 필요한지 파악하기 어려워짐.
최근 관련 분야를 조금 접해 봤지만, 정작 ESP32가 무엇인지는 아직도 이해하기 어려움.
ESP32-P4로 기타 페달 펌웨어를 개발 중인데, 플래시 이미지 크기는 여전히 1MB 미만이고 PSRAM은 전혀 쓰지 않음. 여러 음향 필터, ADC·DAC 제어, USB 장치 두어 개, SDIO, LittleFS에 더해 세부 설정과 성능 모니터링을 위한 직렬 터미널 TUI까지 들어 있음.
성능도 좋지만, 특히 오디오 프레임 처리에 드는 프로세서 사이클 수에 지터가 전혀 없다는 점이 놀라움. 커널이 자기 일을 하려고 선점하지 않는다는 뜻임.
Linux 같은 다중 사용자 운영체제가 한 가지 일만 하는 펌웨어만큼 효율적일 수는 없다고 봄. 틀렸다면 알려 주길 바라지만, FreeRTOS를 실행하는 PSRAM 16MB MCU로 Linux를 실행하는 RAM 512MB SBC와 비슷한 수준의 일을 할 수 있다고 이해하고 있음. 내 용도로는 FreeRTOS를 실행하는 512MB SBC가 최적이겠지만, 아직 그런 물건을 찾지 못함.
MCU로 분류되던 하드웨어에서 Linux를 실행하는 이점은 최고 수준의 네트워크·Bluetooth·Wi-Fi 스택, USB 호스트 같은 훌륭한 장치 드라이버, 충분히 검증된 기존 소프트웨어를 얻는 데 있음. 순수 처리 성능과 저수준 제어가 필요한 용도라면 지금 구성이 맞지만, 네트워크가 핵심인 IoT 기기는 대개 저수준까지 내려갈 필요가 없음. ESP32도 Wi-Fi 처리에 Linux에서 이식한 wpa_supplicant를 사용함. RAM 8MB로도 다중 사용자 Linux를 실행할 수 있음. Linux가 지원하는 여러 프로그래밍 언어를 일반 컴퓨터처럼 함께 쓰고, 검증된 이식성 높은 추상화와 메모리 보호 모델, 편리한 디버깅을 활용할 수 있음.
FreeRTOS와 Linux를 동시에 실행하는 방법도 있음. 전용 코어에서 Linux를 FreeRTOS 작업으로 실행하는 포트가 여럿 있지만, Espressif의 포트도 이 방식인지는 확인하지 못함.
단일 목적 펌웨어가 더 효율적인 건 당연함. Linux의 장점은 소프트웨어 이식의 용이성과 원하는 기능을 구현하는 데 필요한 작업량에 있음.
커널이 사용하지 않는 코어를 실시간 프로세스 전용으로 할당할 수 있음.
P4는 MIPI CSI가 있지만 카메라 용도로는 처리 속도가 부족하고, S31은 속도가 충분하지만 CSI가 없음. 하나를 주면 하나를 가져가는 셈임.
카메라 용도로 P4의 처리 속도 중 정확히 어떤 부분이 S31보다 부족한지 궁금함.
Linux가 7.1부터 RISC-V의 제자리 실행(XIP) 지원을 제거한 건 아쉬움. XIP는 커널과 애플리케이션을 먼저 RAM에 복사하지 않고 NOR 플래시에서 직접 실행하게 해 줌. 누군가 다시 도입해 주면 좋겠음.
Espressif의 포트가 6.18을 사용하는 이유도 바로 이것임. 7.1 기반의 다른 포트도 있지만 XIP를 지원하는지는 모르겠음. https://www.phoronix.com/news/RISC-V-XIP-Being-Removed RAM이 적은 기기에서는 XIP가 사실상 필수임. 이를 활용하면 RAM 8MB로도 실용적인 기능을 갖춘 Linux를 실행할 수 있음.
Linux는 점점 특수 용도나 자원이 극도로 제한된 기기에 맞지 않게 되는 듯함. 유지보수 부담을 더하는 사용 빈도 낮은 코드, 특히 관리할 자원자가 없는 부분을 줄이려는 건 이해할 만함. MCU에서는 RTOS가 점차 Linux를 대체하고 있음. 완전한 운영체제가 필요하다면 무엇이 최선의 대안인지는 모르겠지만, 아마 NetBSD가 후보일 듯함.
기사가 MCU와 그 MCU를 탑재한 정체불명의 SBC를 혼동하는 듯함. 제목부터 이미 그렇게 쓰고 있음.
그래서 xda-developers의 뉴스는 읽지 않음. 사이트의 명성과 달리 기자들이 기초적인 기술 오류를 자주 범하는 듯함.
포럼도 기술 토론에 아주 좋은 곳은 아님. 2020년대에도 표준적인 소프트웨어 공학 관행 대신 포럼 게시물로 버그를 추적하고 릴리스를 공지하는 건 이해하기 어려움.
임베디드 프로젝트의 구체적인 요구사항 없이 나열된 기능에는 별 관심이 없음. 오히려 인상적인 건 제공하는 선택지의 엄청난 다양성이며, MCU와 SBC를 엄격히 양분하려는 시도를 무색하게 만듦. 용도에 집중해야 함. 실제 차이는 MCU냐 SBC냐보다는 데스크톱 같은 범용 컴퓨팅과 손목·드론·기계에 넣고 싶은 컴퓨팅을 어떻게 구상하느냐에 있다고 봄.
S31과 모듈의 최종 소매·대량 구매 가격은 아직 모르지만, NOR 플래시 16MB와 PSRAM 8MB를 갖춘 S3 모듈은 500개 이상 구매 시 3.5달러, 최종 PCB의 부품원가도 약 4달러임. Espressif 웹사이트의 S31 샘플 모듈 기준 가격은 플래시 16MB·RAM 16MB 구성 한 개에 6.2달러임.
S31의 대량 구매 가격이 S3보다 크게 높지 않다면, 플래시·RAM·무선 기능을 작은 크기에 통합한 매우 저렴하고 기능도 충분한 Linux 플랫폼으로 크게 성공할 가능성이 있음.
Wi-Fi를 통합한 Linux SoC부터 손에 꼽을 정도인데, RAM과 플래시까지 통합하고 저렴한 가격에 대량 공급되며 소프트웨어·기술 지원도 괜찮은 제품은 더 드묾. Espressif가 여러 경쟁 제품을 압도할 수 있음. 게다가 ESP 모듈은 말 그대로 3.3V 전원과 커패시터 두 개 정도만 있으면 작동함.
저전력·고대역폭 가정용 네트워크 서버에 최적화된 하드웨어를 보고 싶음. 고속 저장장치용 M.2 NVMe 슬롯 1~2개, 확장용 RAM 소켓 2개가 있으면 좋겠음. 메모리는 DDR5가 필요한지 DDR4로 충분할지 모르겠지만 SO-DIMM도 괜찮음. 2.5Gbps 이상 이더넷은 한 포트보다 두 포트가 좋고, 대역폭을 충분히 활용할 만큼 코어가 여러 개인 CPU에 NPU도 내장되면 좋겠음. 전원은 USB-PD로 공급하고, USB 메모리·필요시 Wi-Fi·프린터 연결용 USB 포트 몇 개는 선택 사항이면 됨. HDMI나 DP 같은 디스플레이 출력은 필요 없음.
영상·음성 출력까지 갖췄으니 구형 기기 소프트웨어 에뮬레이션에 아주 좋은 플랫폼이 될 수 있음. GPIO도 충분해서 40MHz 코어가 이를 제어하는 동안 나머지 두 코어는 더 고차원적인 작업을 맡을 수 있음.
Home Assistant와 Bermuda로 집 안에서 누가 어디 있는지 파악하려고 방마다 ESP32를 설치해 둠. 처음으로 헤더를 납땜해 봤는데 이제는 맞춤형 PCB까지 만들고 있음. 핼러윈 장식에 안개 발생기도 추가하며 즐겁게 놀고 있음.
훨씬 강력한 ESP32라면 지금 쓰는 열두 개가량을 대체하고, 콘센트 전원과 배터리 사이를 전환할 수 있을 것 같음.
Bermuda는 Bluetooth 기기를 추적해 Home Assistant에서 그 기기가 집 안 어디에 있는지 알려 주는 것을 목표로 함.
방마다 ESP32를 두고 Home Assistant와 Bermuda로 누가 있는지 추적한다는 게 정확히 무슨 뜻인지 궁금함.
ESP32용 범용 운영체제 중에서는 SolarOS를 특히 좋아함. 사용자 애플리케이션 개발용 Python·Lua 런타임을 제공하며 API와 내장 애플리케이션도 빠르게 늘어나고 있음. LilyGO T-Deck에 설치해 고전적인 PDA처럼 사용 중임. ANT BMS를 사용하는 여러 기기의 배터리 상태를 읽는 Python 프로그램을 돌리는데, 형편없는 ANT 공식 모바일 앱보다 훨씬 빠름. https://github.com/nilseuropa/solar_os
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기