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
每月下载量 154
用于 postform_rtt
2.5MB
50K SLoC
probe-rs-rtt
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