tiny secure bootloader project for embedded system written in Rust
Assumed to be used for research purposes
Now targeting only RISC-V processor
Some are in the conceptual stage now.
- Multi architecture
- Simple SecureBoot Implementation
- Minimal hardware abstraction layer / driver
- Small footprint (ideally)
cargo-make
based Kconfig like build-system- High extensibility
This project consists of the following components
- libtinyboot
- core library of the tinyboot security logic
- loader
- main source of the bootloader
- separated by each target
- arch
- architecture specific components (e.g. asm source)
- board
- target board specific components (e.g. hal, drivers)
- Rust (>= 1.60)
- Must install required target (e.g.
riscv64imac-unknown-none-elf
)
- Must install required target (e.g.
- Cargo
cargo-make
- For details: https://github.com/sagiegurari/cargo-make
This is the example of building for RISC-V QEMU virt target (riscv64)
# Configure build target
cargo make defconfig virt-riscv64
# Build
cargo make build
In this example, two artifacts are generated in loader/virt-riscv64
tinyboot-fw.bin
- firmware loader
- same functionality as FSBL, U-Boot SPL
tinyboot.bin
- OS loader
- same functionality as U-Boot Proper
🚧 WIP
🚧 WIP
- Project structure
- Create prototype build-system
- Emulation target (
virt-riscv64
)- Implement minimum hal / SBI interface
- Implement simple loader
- Implement core security logic
- Porting to real hardware target (HiFive Unmatched or VisionFive ...?)
- ...
- Akihiro Saiki - Main worker - Nanamiiiii
This project is licensed under the Apache 2.0 License - see the LICENSE for details