#ring-buffer #rtt #debugging #read-write

probe-rs-rtt

probe-rs 上 RTT (实时传输) I/O 协议的宿主端实现

12 个版本 (重大更改)

0.14.2 2023 年 1 月 18 日
0.13.0 2022 年 7 月 12 日
0.12.0 2021 年 11 月 24 日
0.11.0 2021 年 6 月 23 日
0.3.0 2020 年 6 月 30 日

嵌入式开发 中排名 #1896

Download history 85/week @ 2024-04-18 61/week @ 2024-04-25 41/week @ 2024-05-02 139/week @ 2024-05-09 85/week @ 2024-05-16 101/week @ 2024-05-23 42/week @ 2024-05-30 39/week @ 2024-06-06 39/week @ 2024-06-13 34/week @ 2024-06-20 25/week @ 2024-06-27 21/week @ 2024-07-04 29/week @ 2024-07-11 28/week @ 2024-07-18 67/week @ 2024-07-25 28/week @ 2024-08-01

每月下载量 154
用于 postform_rtt

MIT 许可证 MIT

2.5MB
50K SLoC

probe-rs-rtt

crates.io documentation

probe-rs 上 RTT (实时传输) I/O 协议的宿主端实现。

文档

RTT 通过内存环形缓冲区和内存轮询实现了微控制器之间的输入和输出。这使得微控制器可以进行调试日志记录,具有最小的延迟和无阻塞,即使在实时应用中(例如,半宿主延迟无法容忍的情况下)也可以使用。

此软件包允许您通过 RTT 通道进行读写。它还被用作 probe-rs 调试工具的构建块。


lib.rs:

probe-rs 上 RTT (实时传输) I/O 协议的宿主端实现

RTT 通过内存环形缓冲区和内存轮询实现了微控制器之间的输入和输出。这使得微控制器可以进行调试日志记录,具有最小的延迟和无阻塞,即使在实时应用中(例如,半宿主延迟无法容忍的情况下)也可以使用。

此软件包允许您通过 RTT 通道进行读写。它还被用作 probe-rs 调试工具的构建块。

示例

use std::sync::{Arc, Mutex};
use probe_rs::{Probe, Permissions};
use probe_rs_rtt::Rtt;

// First obtain a probe-rs session (see probe-rs documentation for details)
let probe = Probe::list_all()[0].open()?;
let mut session = probe.attach("somechip", Permissions::default())?;
let memory_map = session.target().memory_map.clone();
// Select a core.
let mut core = session.core(0)?;

// Attach to RTT
let mut rtt = Rtt::attach(&mut core, &memory_map)?;

// Read from a channel
if let Some(input) = rtt.up_channels().take(0) {
    let mut buf = [0u8; 1024];
    let count = input.read(&mut core, &mut buf[..])?;

    println!("Read data: {:?}", &buf[..count]);
}

// Write to a channel
if let Some(output) = rtt.down_channels().take(0) {
    output.write(&mut core, b"Hello, computer!\n")?;
}

依赖项

~10–21MB
~276K SLoC