defmt
框架指南
1. 项目介绍
defmt
是一个专门为资源受限设备如微控制器设计的高度高效的日志框架。它提供了延迟格式化的功能,优化了内存使用和性能,特别适合于嵌入式系统的logging需求。该项目旨在简化在嵌入式系统上进行调试和日志记录,同时还支持与其他工具(如QEMU)的集成。
2. 项目快速启动
新建项目
使用 app-template
快速创建一个新的Cortex-M嵌入式项目:
cargo generate --git https://github.com/knurling-rs/app-template.git
cd my_new_project
已有项目
将 defmt
集成到现有项目中,参照 Application Setup 指南。
安装依赖
确保Rust的最新稳定版已安装,defmt
默认与此版本兼容。
rustup update stable
3. 应用案例和最佳实践
- 使用
defmt
的宏来替代标准库中的println!
,以减少内存占用和提高执行效率。 - 利用
global_logger
属性宏定义全局的日志器。 - 在测试中使用
cargo xtask
运行defmt
专用的测试任务。
#[global_logger]
static LOG: Logger = Logger;
fn main() {
// 使用 defmt 宏进行日志输出
defmt::info!("Hello, world!");
}
4. 典型生态项目
defmt-decoder
: 解析由defmt
输出的帧数据。defmt-print
: 提供类似println!
的接口,用于目标端的调试输出。defmt-test
: 支持defmt
测试框架,方便编写和运行嵌入式测试。
探索更多生态项目可访问 knurling-rs GitHub 组织。
本教程提供了简要的入门指导,详细信息可以参考 defmt
的官方文档和仓库内的示例代码。祝你在使用 defmt
架构的项目中开发愉快!