#串行端口 #defmt #日志 #消息 #尝试 #defmt消息

defmt-serial

通过串行端口记录defmt消息

8个重大版本

0.10.0 2024年6月7日
0.8.0 2024年2月9日
0.7.0 2023年10月11日
0.6.0 2022年9月13日
0.4.0 2022年7月15日

#392硬件支持

每月39次下载

MIT 许可证

150KB
78 代码行

Crates.io Documentation tests

defmt-serial

一个用于通过串行端口记录的 defmt 目标。查看示例以了解如何使用库 example-artemisexample-pi-pico。您还可以在托管环境中尝试它: example-std。要解析日志,请查看 解析日志

static SERIAL: StaticCell<hal::uart::Uart0> = StaticCell::new();

#[entry]
fn main() -> ! {
    let mut dp = hal::pac::Peripherals::take().unwrap();
    let pins = hal::gpio::Pins::new(dp.GPIO);

    // set up serial
    let serial = hal::uart::Uart0::new(dp.UART0, pins.tx0, pins.rx0);
    defmt_serial::defmt_serial(SERIAL.init(serial));

    defmt::info!("Hello from defmt!");

    loop {
        asm::wfi();
    }
}

记得在测试时设置 DEFMT_LOG 变量,例如

$ cd example-std/
$ DEFMT_LOG=debug cargo run

解析日志

解析日志最简单的方法是使用 socatdefmt-print。例如

$ socat ${PORT},rawer,b${BAUDRATE} STDOUT | defmt-print -e ${ELF}

只需将 ${PORT}${BAUDRATE}${ELF} 替换为正确的值。

在Ubuntu 22.04上安装工具,请运行以下命令

$ apt install socat
$ cargo install defmt-print

请注意,在Mac OS上,似乎 socat 在此目的上已损坏。请改用 sttycat

$ (stty speed 115200 >/dev/null && cat) </dev/cu.usbserial-10 | defmt-print -e $(ELF)

依赖项

~0.6–1MB
~23K SLoC