Hacker News

The newest ESP32 can run Linux and it's getting close to a Raspberry Pi

최신 ESP32에서 리눅스 실행 — 라즈베리 파이에 가까워진 주변장치 구성

Espressif ESP32-S31은 기가비트 이더넷과 USB 호스트, 카메라·디스플레이 인터페이스를 갖추고 Sv32 MMU로 Linux를 실행합니다. 다만 PSRAM은 최대 64MB이고 GPU와 DRAM 컨트롤러가 없어, 일반적인 싱글보드 컴퓨터(SBC)라기보다 저전력 마이크로컨트롤러와 SBC 사이에 놓인 칩입니다.

AI 요약

Espressif의 ESP32-S31은 마이크로컨트롤러(MCU) 제품군에 Linux 실행을 염두에 둔 기능을 더한 칩입니다. 기가비트 이더넷과 USB 2.0 High-Speed 호스트, SD 카드 슬롯 두 개, 카메라 입력을 갖췄습니다. 이런 주변장치 구성은 싱글보드 컴퓨터(SBC)에 가깝지만, 메모리와 처리 성능에는 MCU의 제약이 남아 있습니다.

SBC를 닮은 주변장치

이더넷 MAC은 최대 1Gbps를 지원합니다. ESP32-P4의 100Mbps에서 크게 늘어난 수치입니다. RGMII 인터페이스를 사용해 기가비트 PHY와 연결하며, USB 2.0 High-Speed OTG 컨트롤러는 호스트 모드에서 500mA를 공급합니다. SDIO 호스트에는 슬롯 두 개를 연결할 수 있습니다.

주변장치에는 8~16비트 DVP 카메라 인터페이스, 최대 24비트 RGB와 I8080·MOTO6800 패널을 지원하는 병렬 LCD 컨트롤러도 포함됩니다. I2S 컨트롤러 두 개는 Bluetooth 오디오 동기화를 하드웨어로 지원합니다. 정전식 터치 채널 14개, CAN FD 컨트롤러, MCPWM 유닛 네 개도 갖췄습니다.

Linux 실행을 뒷받침하는 MMU

CPU는 최대 320MHz로 동작하는 32비트 RISC-V 코어 두 개와 40MHz 저전력 코어 하나입니다. 주 코어 두 개에는 각각 부동소수점 연산 장치가 있고, 한 코어는 128비트 SIMD 데이터 경로를 지원합니다. 각 코어에 L1 명령어 캐시 32KB가 있으며, 데이터 캐시 64KB를 공유합니다. 메모리 인터페이스는 250MHz 8비트 DDR 방식의 PSRAM 최대 64MB와 플래시 최대 256MB를 지원합니다.

ESP32-S31의 큰 차이는 Sv32 2단계 페이지 테이블 주소 변환과 Machine·Supervisor·User 권한 모드를 지원한다는 점입니다. 기존 ESP32 제품군에서 ‘MMU’라 부르던 기능은 외부 플래시와 PSRAM을 주소 공간에 매핑하는 데 가까웠습니다. S31은 실제 RISC-V 페이징을 지원해 Linux 커널이 Supervisor 모드에서 동작하고 펌웨어가 Machine 모드에 놓이는 구조를 갖춥니다.

Espressif는 Buildroot와 U-Boot를 기반으로 커널, 디바이스 트리, 루트 파일 시스템을 포함한 Linux BSP를 공개했습니다. 다만 생산 환경에 권장하지 않는다고 밝혔습니다. 커뮤니티에서는 Linux 6.18을 Supervisor 모드로 실행하고 여러 하드웨어 드라이버를 지원하는 포트가 나왔습니다. 다른 Linux 7.1 포트는 연결한 800×480 LCD에 콘솔을 표시합니다.

메모리와 성능의 제약

칩 안의 SRAM은 512KB이며, 제품은 패키지 PSRAM 16MB 또는 32MB 모델로 나옵니다. 외부 메모리까지 포함한 최대 메모리는 64MB입니다. DRAM 컨트롤러와 GPU, NPU는 없습니다. 따라서 Linux를 실행해도 데스크톱 환경을 구동할 수준은 아닙니다. 커뮤니티 빌드는 귀한 PSRAM을 아끼려고 플래시에서 커널을 실행합니다. JPEG 코덱, 2D 픽셀 처리 가속기, 2D DMA는 있지만 화면 전체를 그리는 GPU를 대신하지는 못합니다.

기가비트 이더넷 처리량도 실사용 검증이 필요합니다. 320MHz CPU는 최대 크기 이더넷 프레임 하나당 약 3,900사이클을, 최소 크기 프레임에는 약 215사이클을 씁니다. PSRAM 대역폭은 이론상 최대 500MB/s라 대용량 전송에서는 기가비트 속도에 가까워질 가능성이 있지만, 작은 패킷이 많은 상황에서 회선을 채울지는 불확실합니다.

무선 기능으로는 2.4GHz Wi-Fi 6, Bluetooth 5.4 LE와 Classic BR/EDR, Thread와 Zigbee용 802.15.4를 지원합니다. Matter는 Wi-Fi와 Thread로 사용할 수 있습니다. 소비 전력은 Wi-Fi 수신 시 모드에 따라 110~117mA, 802.11b 15dBm 송신 시 최대 265mA입니다. 주변장치 클록을 끈 상태에서 두 코어가 320MHz로 모뎀 절전 모드에 있으면 91mA, 클록을 켜면 147mA를 소비합니다.

이름과 제품 성숙도

‘S31’이라는 이름은 ESP32-S3의 후속 제품처럼 보이지만, S31은 RISC-V 코어를 사용합니다. Espressif의 기술 마케팅 매니저 Jeroen Domburg는 Hackaday 댓글에서 CPU 아키텍처를 제품명에 반영할 의도는 없었다고 설명했습니다. 코어는 P4에서 파생됐으며 S3보다 거의 두 배 빠르다는 설명도 덧붙였습니다.

데이터시트는 아직 0.5판이며 ‘PRELIMINARY’ 표시가 붙어 있습니다. 문서에는 PSRAM 최대 클록이 80MHz로 적혀 있지만 Espressif가 공개한 속도는 250MHz입니다. Linux 지원도 초기 단계입니다. 따라서 ESP32-S31은 SBC를 대체하기보다 저전력과 풍부한 I/O를 활용해 Linux 터미널이나 임베디드 장치를 실험하는 플랫폼에 가깝습니다.

Hacker News 반응

  • @sidewndr46 — 최신 버전에는 실제 MMU에 가까운 기능이 들어간 것 같습니다. 그러면 가능한 일이 많아지겠네요.
    • @Rohansi — ‘실제 MMU에 가깝다’는 말은 Sv32를 지원하는 완전한 32비트 RISC-V MMU라는 뜻입니다.
  • @rbanffy — 기능과 영상·음성 출력을 보면 구형 기기를 소프트웨어로 에뮬레이션하기 좋은 플랫폼이 될 수도 있겠습니다. 다른 두 코어가 더 중요한 일을 하는 동안 40MHz 코어가 GPIO를 충분히 제어할 수 있습니다.
    • @iamnothere — 가격을 생각하면 이런 용도에 아주 좋은 플랫폼입니다. 이미 여러 ESP 기반 에뮬레이터가 나왔습니다. 콘솔 여러 종류와 ZX Spectrum, 386 에뮬레이터도 있습니다. 이 칩처럼 새 제품은 더 강력할 테니 486도 머지않아 가능할 겁니다. 주변장치 에뮬레이션과 컨트롤러 여러 개를 다루는 일이 어려웠는데 USB와 나머지 코어가 도움이 되겠습니다.
  • @mstaoru — 주는 분이 있으면 가져가는 분도 있네요. P4는 카메라 처리에 필요한 원시 성능이 부족했지만 MIPI CSI가 있었고, S31은 충분한 성능이 있지만 CSI가 없습니다.
    • @lopper4 — S31과 비교할 때 P4의 카메라 처리 성능에서 부족한 점이 무엇인가요?
    • @mstaoru — 제가 틀렸습니다. S31 코어 클록은 P4보다 낮습니다. PSRAM이 250MHz 16비트 DDR이라고 생각했는데 8비트뿐이네요. 비압축 영상 스트림을 CSI로 받으면 버퍼링할 곳이 없습니다.
  • @poisonborz — 상투적인 ‘당연히 AI가 쓴 기사’ 이야기라 죄송하지만, 제품은 흥미롭고 XDA-Developers도 알려진 매체입니다. 그런데 ‘주변장치만 봐도 다른 모습’ 같은 장 제목을 읽고 나면 어이가 없습니다. AI로 글을 부풀렸더라도 문장이 말이 되는지, 제목이 말이 되는지는 교정해야 합니다.
  • @hwh — 이 기사는 MCU와 공개되지 않은 어떤 SBC를 혼동하는 것 같습니다. 제목부터 그러기 시작합니다.
  • @jameshart — ESP32라는 이름을 단 보드의 기능 차이가 점점 커집니다. 누군가 ‘이걸 ESP32에서 실행할 수 있다’고 할 때 어느 정도 하드웨어가 필요한지 파악하기 어려워집니다.
    • @ckocagil — ESP32는 단일 보드 컴퓨터가 아니라 마이크로컨트롤러입니다. 아니, 이 새 칩이 나오기 전까지는 그랬습니다.
    • @serf — 단일 보드 컴퓨터와의 의미 있는 구분은 뭔가요? 이제 모든 게 SoC인 것도 아니고 S3에는 손이 많이 가긴 했지만 Linux를 실행할 MMU도 있었습니다. 남은 차이는 수치뿐인데, ‘SBC보다 RAM이 적은 것’으로 MCU를 정의하고 싶지는 않습니다.
    • @the__alchemist — SBC는 전원과 입출력 포트, 때로는 센서 같은 부품을 기판에 포함한 제품입니다. ESP32는 MCU입니다. ESP32를 기판에 올리면 SBC라고 부를 수 있습니다. 다만 SBC는 보통 범용 운영체제를 실행하는 제품을 뜻하니, 의미가 달라지는 중일 수도 있습니다.
  • @ruvie8812 — 아직도 2.4GHz Wi-Fi뿐이네요.
    • @tonymet — 작은 배터리를 쓰는 작은 보드라면 라디오와 안테나 하나가 더 낫습니다.

원문: XDA Developers / 번역·요약: Trawling