Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## [0.3.0] - 2026-04-15

### Added

- **CH32V103 support** — full bootloader and app support for CH32V103 (Qingke V3A core), including system-flash and user-flash modes with GPIO-controlled boot mode selection
- **Decoupled protocol frame size from flash page size** — ring buffer accumulates writes and flushes full pages, with new Flush command and fast write support
- **CLI retry on CRC mismatch** — automatic retry from page boundary on corrupted response frames

### Changed

- **Breaking:** reorganized into multi-workspace structure (lib/, ch32/, cli/, examples/)
- **Breaking:** `tinyboot` crate renamed to `tinyboot-core`; CLI crate renamed from `tinyboot-cli` to `tinyboot`
- **Breaking:** boot metadata moved from option bytes to last page of user flash
- Switched to OpenServoCore fork of qingke/qingke-rt — fixes mtvec, adds V3A support; removed `fix_mtvec!()` workaround
- Removed defmt and `tinyboot-macros` from bootloader
- Multi-chip CI coverage for all CH32V003 and CH32V103 variants

### Fixed

- Protocol write alignment check only on first write
- UB in boot metadata reads

## [0.2.1] - 2026-03-25

### Fixed
Expand Down
6 changes: 3 additions & 3 deletions ch32/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ license = "MIT OR Apache-2.0"

[workspace.dependencies]
# Cross-workspace deps (from lib/)
tinyboot = { package = "tinyboot-core", version = "0.2.1", path = "../lib/core", default-features = false }
tinyboot-protocol = { version = "0.2.1", path = "../lib/protocol" }
tinyboot = { package = "tinyboot-core", version = "0.3.0", path = "../lib/core", default-features = false }
tinyboot-protocol = { version = "0.3.0", path = "../lib/protocol" }

# Internal deps
tinyboot-ch32-hal = { version = "0.2.1", path = "hal", default-features = false }
tinyboot-ch32-hal = { version = "0.3.0", path = "hal", default-features = false }

# External deps
embedded-hal = "1"
Expand Down
2 changes: 1 addition & 1 deletion ch32/app/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot-ch32-app"
description = "App-side library for tinyboot on CH32 microcontrollers"
version = "0.2.1"
version = "0.3.0"
edition.workspace = true
repository.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion ch32/boot/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot-ch32-boot"
description = "Bootloader library for tinyboot on CH32 microcontrollers"
version = "0.2.1"
version = "0.3.0"
edition.workspace = true
repository.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion ch32/hal/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot-ch32-hal"
description = "Hardware abstraction layer for tinyboot on CH32 microcontrollers"
version = "0.2.1"
version = "0.3.0"
edition.workspace = true
repository.workspace = true
license.workspace = true
Expand Down
4 changes: 2 additions & 2 deletions cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot"
description = "CLI firmware flasher for tinyboot bootloader"
version = "0.2.1"
version = "0.3.0"
edition = "2024"
repository = "https://github.com/OpenServoCore/tinyboot"
license = "MIT OR Apache-2.0"
Expand All @@ -14,7 +14,7 @@ name = "tinyboot"
path = "src/main.rs"

[dependencies]
tinyboot-protocol = { version = "0.2.1", path = "../lib/protocol" }
tinyboot-protocol = { version = "0.3.0", path = "../lib/protocol" }
embedded-io = "0.7"
serialport = "4"
clap = { version = "4", features = ["derive"] }
Expand Down
10 changes: 5 additions & 5 deletions examples/ch32/v003/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions examples/ch32/v103/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repository = "https://github.com/OpenServoCore/tinyboot"
license = "MIT OR Apache-2.0"

[workspace.dependencies]
tinyboot-protocol = { version = "0.2.1", path = "protocol" }
tinyboot-protocol = { version = "0.3.0", path = "protocol" }
embedded-io = "0.7"
embedded-io-async = "0.7"
embedded-storage = "0.3"
Expand Down
2 changes: 1 addition & 1 deletion lib/core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot-core"
description = "Core bootloader library for tinyboot"
version = "0.2.1"
version = "0.3.0"
edition.workspace = true
repository.workspace = true
license.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion lib/protocol/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "tinyboot-protocol"
description = "Protocol implementation for tinyboot bootloader"
version = "0.2.1"
version = "0.3.0"
edition.workspace = true
repository.workspace = true
license.workspace = true
Expand Down