1P by GN⁺ 9시간전 | ★ favorite | 댓글 1개
  • ESP32-S3 마이크로컨트롤러를 즉시 부팅 가능한 소형 PC로 전환해 셸, 편집기, 컴파일러, 앱 설치기를 제공하는 데모 프로젝트
  • BreezyBox는 ESP-IDF용 미니 셸 컴포넌트로, UNIX 유사 명령과 vterm, VFS 기능을 포함
  • Waveshare ESP32-S3-Touch-LCD-7B 보드에서 동작하며, 다른 보드에도 쉽게 적용 가능
  • 포크 후 자신의 보드에서 실행하거나, USB 콘솔을 통해 표준 ANSI 코드 출력을 활용 가능
  • MIT 라이선스로 공개되어 생태계 확장을 목표로 함

BreezyBox 개요

  • ESP32-S3를 리눅스 없이도 PC처럼 사용하는 데모 프로젝트로, 셸·편집기·컴파일러·앱 설치 기능을 제공
    • Raspberry Pi와 유사한 사용성을 지향하지만, 서버/데스크톱급 OS의 오버헤드가 없음
    • BreezyBox는 ESP-IDF 기반의 미니 셸 컴포넌트로, 간단한 명령 실행 환경을 구성
  • ESP32-S3는 DOS 시대 PC와 유사한 자원 구조를 가지며, 무선 통신 기능을 포함
    • 프로젝트는 이 칩의 잠재력을 “작고 우아한 기술” 로 표현하며, 코드 부피를 최소화

BreezyBox의 구성

  • BreezyBox는 vterm, VFS, CWD 추적, UNIX 유사 명령, 앱 설치기를 포함
    • ELF 로더와 동적 링크 기능은 ESP-IDF 컴포넌트에 이미 포함되어 있음
  • 이름은 BusyBox에서 착안했으며, FreeRTOS 위에서 동작하는 사용자 영역 계층 형태
    • ESP-IDF 프로젝트에 한 줄로 추가 가능하며, 기본 입출력만 있어도 작동

데모 리포지토리 특징

  • 이 리포지토리는 BreezyBox의 예시 구현으로, 특정 보드(Waveshare ESP32-S3-Touch-LCD-7B)에 맞춰 구성
    • BreezyBox는 디스플레이 및 보드 설정을 사용자 펌웨어에 위임
    • 사용자는 코드를 참고해 자신의 보드나 디스플레이에 맞게 수정 가능
  • LVGL 텍스트 라벨 컨트롤을 사용하면 LCD 출력 구현이 간단하며, USB 콘솔에서도 실행 가능

사용 방법

  • 리포지토리를 포크 후 클론하여 자신의 보드에서 실행 가능
    • 약 40유로의 보드에서 테스트되었으며, 저가형 LCD S3 보드에서도 사용 가능
    • USB 콘솔을 이용하면 VSCode의 IDF Monitor나 Tabby에서 ANSI 코드 출력 확인 가능
  • 폰트 렌더러는 직접 작성했으나, 이는 30FPS 이상 성능 확보를 위한 선택적 구현

기여 및 확장

  • 프로젝트는 MIT 라이선스로 공개되어 자유롭게 수정 및 배포 가능
  • 기여 요청 항목
    • ELF 앱 추가: breezyapps 리포지토리의 예시를 참고해 새로운 앱 제작 가능
    • 다양한 보드용 펌웨어 예시: C/C++ 기반, GUI 포함, 레트로 게임 포팅 등 다양한 형태 제안
  • 목표는 더 많은 사용자가 BreezyBox를 활용하고, 즉시 복제 가능한 예제 생태계를 확장하는 것
Hacker News 의견들
  • 정말 멋진 프로젝트임. 직접 시도해볼 예정임
    관련된 다른 프로젝트도 두 가지 봤음

    1. reddit 커뮤니티 r/xteinkereader에서 esp32-s3 기반의 중국산 전자책 리더용 OS 스타일 앱을 개발 중임
    2. esp32-s3용 Linux 포트 프로젝트도 있음. S3에는 MMU가 있지만, 이 프로젝트에서는 사용되지 않은 듯함
      Boot-Linux-ESP32S3-Playground
    • XTEink은 ESP32-S3이 아니라 C3를 사용함. OP의 S3 보드는 8MB PSRAM이 있지만, C3는 384kB RAM만 있어서 임베디드 OS를 빌드할 때 큰 차이를 만듦
  • 부팅이 즉시 되는 점이 정말 멋짐. 이런 프로젝트나 Adafruit의 Fruit Jam 같은 걸 보면, “불필요한 복잡함을 제거하면 얻는 게 많다”는 걸 보여줌
    이런 걸 아이의 첫 컴퓨터로 주고 싶음

    • 이걸 기반으로 $20짜리 노트북이 AliExpress에 나오면 좋겠음
  • 다음 주말에 뭘 할지 정해졌음. 원래 다른 프로젝트용으로 esp32-s3를 살 예정이었는데, 이제 두 개 사야겠음

  • 이 보드들의 가성비가 미쳤다고 생각함. 나는 이걸 KVM 대체용으로 쓸 계획임
    ESP32-Bus-Pirate를 플래싱해서 원격으로 제어할 장치에 연결해두면 매우 편리함. 전력 소모도 거의 없어서 Wi-Fi에 항상 연결해둠

    • 디스플레이 공유는 어떻게 처리하는지 궁금함. 리퍼 서버 여러 대를 관리 중인데, 예산이 부족해서 정식 KVM은 어렵고 이걸로 대체하고 싶음
  • rp2350에서도 실행되게 포팅할 수 있을지 궁금함

    • 일부는 가능할 듯함. 셸은 단순히 linenoise에 약간의 glue 코드만 있음. rp2350의 ELF 로딩 상태는 모르겠지만, ESP-IDF에서는 표준 컴포넌트라 가능성 있음
    • rp2350은 FreeRTOS를 지원하므로 비슷한 포트는 꽤 간단할 것 같음. Pico의 I/O DMA 코드가 특이하지만, 꽤 강력한 칩임
  • 오, 당신이 xcc700 만든 사람인가! MCU를 범용 컴퓨팅에 쓰는 데 관심이 많음. 얼마나 밀어붙일 수 있을지 궁금함

    • 맞음. xcc700 데모에서 사용된 셸에 대한 요청이 많아서 공개했음. ESP32-S3는 아직 잠재력의 극히 일부만 보여준 상태임
      예전에 FabGL이 게임과 DOS 에뮬레이션 데모를 돌렸던 걸 기억할지도 모르겠음. 하지만 최신 ESP-IDF에서는 업데이트가 어려움
      그래서 더 모듈형 구조로 새로 만들고 있음. 오래 유지될 수 있도록. 누군가는 MacOS 구버전을 시뮬레이션으로 돌리기도 했음
  • 정말 멋짐! 이걸 M5Stack Cardputer에 바로 올려야 함

  • 평면 메모리 모델이 없으면 일반 OS 구현이 어렵지 않나? Amiga1000도 MMU는 없었지만 평면 메모리 모델이었음. 이걸 우회하려면 복잡한 작업이 필요했을 듯함

    • 메모리 모델은 충분히 평면적임. 문제는 전통적인 RAM이 약 200kB뿐이라는 점임. 대신 8MB PSRAM이 있지만, 4바이트 정렬이 필요하고 속도가 느림
      이 플랫폼에서 일반 OS가 어려운 이유는 메모리 보호 기능 부재 때문임. 하지만 나는 단순히 셸과 앱 설치기를 만들고 싶었을 뿐이라 그 정도는 해결했음
    • SoC에서 일반 OS가 어려운 이유는 보통 MMU 부재 때문임. 자바나 JS처럼 포인터 접근이 없는 언어라면 상관없지만, C로 작성된 데스크톱 앱은 항상 일관된 가상 주소를 필요로 함
    • MCU에 익숙하지 않아서 그런데, 이 문제를 좀 더 설명해줄 수 있을지 궁금함
  • 이번에 처음으로 BreezyBox를 접했는데 정말 흥미로움. Wi-Fi 설정이나 업데이트 같은 걸 신경 쓰기 싫고, 그냥 내 앱만 작성하고 싶었음
    왜 이런 걸 대신 처리해주는 간단한 마이크로컨트롤러 OS가 없었는지 이해가 안 됐음. 이건 그 기반이 될 수도 있을 듯함
    헤드리스 배포용 설정 플로우(플래싱 시 Wi-Fi 설정, 원격 셸/웹 UI 배포 등)가 있는지 궁금함

    • BreezyBox는 아직 초기 개발 단계임. 데모에서 본 게 거의 전부임. 더 많은 개발자가 앱과 기능을 추가해야 확산될 수 있음
      원격 설정용 웹 접근은 구현 가능할 듯함. 이미 웹 서버가 있으니, 서버 사이드 코드를 실행하도록 확장하면 됨
  • 초보적인 질문인데, 이게 S3 전용인가 아니면 C3에서도 실행 가능할까?

    • 대부분은 C3, C6, P4에서도 컴파일 가능함. 다만 xcc700은 Xtensa CPU 전용이라 포팅이 더 어려움
      eget으로 설치하는 ELF 바이너리도 RISC-V용으로 다시 컴파일해야 함. 플랫폼별 ELF를 구분하기 위해 manifest 지원을 추가하는 게 좋을 듯함
      또한 PSRAM 용량이 얼마나 있는지도 고려해야 함