tinyboot
Part of the tinyboot project — see the main README to get started.
Host-side CLI for flashing firmware to tinyboot devices over UART/RS-485.
Install
Or from source:
Usage
tinyboot info
Query device info (capacity, erase size, versions, mode).
tinyboot flash
Flash firmware to device. Accepts ELF or raw binary files.
tinyboot erase
Erase the entire app region.
tinyboot reset
Reset the device. Use --bootloader to reboot into the bootloader instead of the app.
tinyboot bin
Convert an ELF to a flat binary (same extraction logic as flash).
Auto-detection
If --port is omitted, the CLI probes USB serial ports (usbmodem, ttyACM, ttyUSB) by sending an Info command with a 100ms timeout. Non-USB serial ports are skipped. Both the bootloader and apps running poll() respond to Info, so auto-detection works in either mode.
ELF handling
When given an ELF file, the CLI extracts ALLOC sections using physical addresses (LMA) from PT_LOAD segments. Sections named .uninit* are skipped. LMAs below 0x0800_0000 are adjusted by adding the CH32 flash base offset.
Raw binary files (no ELF magic) are used as-is.
Logging
Use -v (debug) or -vv (trace) for protocol-level diagnostics:
Or set RUST_LOG directly:
RUST_LOG=debug