1 个不稳定版本
0.1.0 | 2024年1月5日 |
---|
#1916 in 命令行工具
55KB
135 代码行
包含 (ELF 可执行文件/库, 135KB) test_data/attiny85-hello-world.elf
elf2nucleus
将 micronucleus 集成到 cargo 构建系统中,从 elf 文件中烧录 AVR 固件。
# ./.cargo/config.toml
[target.'cfg(target_arch = "avr")']
# Choose a default "cargo run" tool
runner = "elf2nucleus"
将此添加到您的 cargo 配置后,您可以使用 cargo-native 运行 命令进行烧录,无需进一步的 Makefile
RUSTC_BOOTSTRAP=1 cargo run --release
请注意,elf2nucleus 基于 micronucleus 构建,因此也需要安装。
本项目受 elf2uf2-rs 的启发,该工具用于 rp2040。
还要感谢 @cyber-murmel,他激励我开发此项目,并在 AVR 开发方面给予我帮助。
使用 cargo 构建固件
要构建一个 AVR 固件仓库,通常只需运行
RUSTC_BOOTSTRAP=1 cargo build --release
cargo,然后编译固件并将其放入类似于以下的 elf 容器文件
target/avr-attiny85/release/attiny85-hello-world.elf
对于此 .cargo/config.toml
需要正确配置,一个示例仓库可以在 github.com/kpcyrd/attiny85-hello-world 找到。
使用 elf2nucleus 进行烧录
要在没有 cargo 的情况下调用 elf2nucleus,您可以像这样运行它
elf2nucleus ./attiny85-hello-world.elf
如果您不想使用 elf2nucleus 进行烧录,而是从 elf 文件读取固件到原始二进制文件,您可以指定一个额外的输出文件名
elf2nucleus ./attiny85-hello-world.elf ./firmware.bin
micronucleus --type raw --run --no-ansi ./firmware.bin
直接使用 Rust 与 micronucleus
在撰写本文时,由于 micronucleus 不能从 elf 文件中读取,因此无法将 micronucleus 配置为 "cargo run" 工具。
如果您想避免使用 elf2nucleus,可以使用 avr-objcopy
自己准备固件文件
avr-objcopy --output-target=ihex target/avr-attiny85/release/attiny85-hello-world.elf target/avr-attiny85/release/attiny85-hello-world.hex
micronucleus --timeout 60 --run --no-ansi target/avr-attiny85/release/attiny85-hello-world.hex
许可证
GPL-3.0-或-更新
依赖项
~4.5–6.5MB
~114K SLoC