피드로 돌아가기
tinyboot v0.4.0 Released — The API is Stable
Dev.toDev.to
Infrastructure

1920 Bytes 제약 하에 구현한 Rust 기반 Minimal Bootloader 설계

tinyboot v0.4.0 Released — The API is Stable

Aaron Qian2026년 4월 23일5advanced

Context

$0.22 수준의 초저가 MCU 환경에서 시스템 플래시 메모리 극소량 사용을 통한 Application 영역 최대 확보 필요. 기존 qingke-rt 라이브러리의 과도한 크기로 인한 시스템 플래시 Overflow 문제 발생.

Technical Solution

  • 전용 minimal runtime(tinyboot-ch32-rt) 구축을 통한 라이브러리 오버헤드 제거 및 메모리 효율 극대화
  • V103 모델의 Split Flash 레이아웃을 활용해 UART Transport 모듈을 두 번째 영역으로 분리 배치한 공간 최적화
  • 32-bit 주소 체계를 24-bit로 축소하여 확보한 1바이트를 Command Flag로 활용하는 Wire Protocol 효율화
  • Rust Union Type 기반의 Zero-cost Abstraction을 적용해 기능 확장 시 바이너리 크기 증가 억제
  • Half-duplex RS-485 통신 안정성을 위한 TX_EN 라인 드라이빙 로직 및 Transport Flush 메커니즘 강제화
  • 개별 Crate 구조를 모듈 기반 단일 Crate로 통합하여 종속성 복잡도 제거 및 빌드 최적화

1. 하드웨어 제약 사항(Flash Map)에 따른 모듈별 물리적 배치 전략 검토

2. 프로토콜 설계 시 데이터 필드의 비트 단위 최적화를 통한 오버헤드 제거

3. Half-duplex 통신 설계 시 버퍼 Flush 시점과 전송 제어 라인(TX_EN)의 동기화 검증

4. Rust 사용 시 Zero-cost Abstraction을 활용한 런타임 비용 최소화

원문 읽기