2 个不稳定版本
0.2.0 | 2023 年 3 月 6 日 |
---|---|
0.1.0 | 2023 年 3 月 3 日 |
#944 in 嵌入式开发
12KB
168 代码行
defmt-ringbuf
该工具包将 defmt
日志消息存储在简单的环形缓冲区中,该缓冲区在重置后仍可持久化。您仍需要从缓冲区中读取消息并将它们传输到主机进行格式化。
许可证
许可方式为以下之一:
任选其一。
贡献
除非您明确声明,否则您有意提交以包含在 defmt-ringbuf 中的任何贡献均应按上述方式许可,不附加任何额外条款或条件。
lib.rs
:
defmt-ringbuf 是一个 defmt
全局记录器,它将日志记录到持久化的环形缓冲区中。
环形缓冲区在启动时不会被清除,即如果将其放置在静态全局变量中,则重置后日志消息仍然可用。
要使用此工具包,请通过在项目中某处导入它来链接到它。
use core::mem::MaybeUninit;
use defmt_ringbuf as _;
static mut LOG: MaybeUninit<defmt_ringbuf::RingBuffer<1024>> = MaybeUninit::uninit();
#[entry]
fn main() -> ! {
unsafe {
defmt_ringbuf::init(&mut LOG, || ());
}
// ...
}
调用 [init] 以初始化日志记录,并调用 [read] 以读取缓冲区中的日志数据。
关键部分实现
该工具包使用 critical-section
以确保一次只有一个线程写入缓冲区。您必须导入一个提供适合当前目标的 critical-section
实现的工具包。有关详细信息,请参阅 critical-section
的 README。
例如,对于单核特权模式 Cortex-M 目标,您可以将以下内容添加到您的 Cargo.toml 中。
[dependencies]
cortex-m = { version = "0.7.6", features = ["critical-section-single-core"]}
依赖项
~1.1–1.7MB
~29K SLoC