7 个版本
0.3.1 | 2019 年 8 月 7 日 |
---|---|
0.3.0 | 2019 年 8 月 6 日 |
0.2.0 | 2019 年 7 月 24 日 |
0.1.3 | 2019 年 3 月 6 日 |
0.1.0 | 2018 年 12 月 20 日 |
#1693 in 嵌入式开发
每月 21 次下载
115KB
2K SLoC
GBL 固件文件操作库
Rust 库,用于读取、创建和操作 .gbl
固件更新文件。
还可以查看这篇博客文章,了解基于类型状态的库 API 的简单介绍。
功能
- 从原始应用程序镜像创建 GBL 文件
- 解析现有 GBL 文件
- 加密并签名 GBL 文件
- 解密 GBL 文件并验证嵌入的签名
- 为安全启动签名应用程序镜像
- 简单命令行工具包装库
尚未支持
- 引导加载程序镜像
- 自定义元数据部分
命令行使用
可以使用在此目录中运行 cargo install
来安装命令行工具 gbl
。如果您不想安装它,也可以使用 cargo run
来运行它。在这种情况下,将 gbl
命令替换为 cargo run --
(例如,cargo run -- create --help
)。
工具当前支持以下操作
SUBCOMMANDS:
app-image Raw application image manipulation.
create Create a GBL file from raw application data.
decrypt Decrypts an encrypted GBL file with a shared AES key.
dump Parses an existing GBL file and dumps its structure to the console.
encrypt GBL firmware file handling library
help Prints this message or the help of the given subcommand(s)
sign Sign a GBL file using a private ECDSA key.
verify Verifies the signature of a signed GBL file.
开发
模糊测试
您可以使用以下方式运行包含的模糊测试目标(gbl
或 app_image
)
cargo +nightly fuzz run gbl
默认情况下,libFuzzer 不会生成超过 4096 字节的输入。为了解决这个问题,请使用此命令代替(当然,您可以使用任何最大长度)
cargo +nightly fuzz run gbl -- -max_len=100000
请注意,模糊测试目标在 CI 上未进行测试,并且可能会在 API 更改时偶尔中断。如果发生这种情况,请随时修复它们!
基准测试
基准测试使用 criterion,应该很简单。只需执行 cargo bench
。
火焰图
为特定基准生成火焰图
perf record --call-graph=dwarf target/release/deps/bench-<HASH> --measure-only '<BENCHMARK NAME>'
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg
确保使用Cargo在执行cargo bench
时显示的相同的<HASH>
。
依赖项
~13–22MB
~408K SLoC