0.1.0 |
|
---|
#16 in #debug-probes
215KB
5K SLoC
probe-rs
为在独立主机上调试 ARM 内核而设计的调试工具集和库。
动机
该库的目标是提供一个工具集,以与各种嵌入式 MCU 和调试器进行交互。首先,将通过使用 CoreSight 协议支持 ARM 内核。如果有很高的需求并有更多贡献者,则打算添加对其他架构的支持。
类似的项目,如 OpenOCD、PyOCD、Segger Toolset、ST Tooling 等。它们都实现了 GDB 协议,并在其之上实现自己的协议,以便 GDB 可以与调试器通信。这不是标准化的,有时也不太稳定。每个工具的命令都不同,等等。
本项目摒弃了 GDB 层,并提供了直接访问调试器的接口,这使得其他软件,例如 VisualStudio 可以使用其调试功能。
更重要的是,我们可以充分利用 CoreSight。我们可以实时跟踪和修改内存以及寄存器。
最终目标是提供一个完整的库工具集,以使其他工具可以使用 CoreSight 的功能。
功能
该库可以连接到 DAPLink 并正确地读写内存。它可以读取 ROM 表并提取 CoreSight 组件信息。写入整个十六进制文件已经完成了一半。该库还可以连接到 ST-Link,连接到 STM32F429(它应该能够连接到任何目标;这个只是用于测试),并读取 DAP 寄存器。由于某些 STLink 故障,读取 ROM 表有问题,但可能最终会得到修复。
开发重点是实现一个完整的(CoreSight、闪存、调试)实现,适用于 DAPLink,然后从那里开始。
命令行界面(CLI)
为了展示功能,编写了一个小型的命令行界面(CLI)。使用以下命令启动它:
cargo run -p cli -- help
帮助对话框应该会告诉您如何使用CLI。
要使用tracer fire
cargo run -p cli -- trace <n> <address> | python3 cli/update_plot.py
目前,管道接口是二进制的。
如果您一切操作正确并跟踪了一个具有变化值的内存位置,它将看起来像这样:
路线图
- v0.1.0
- Cortex m0, m3, m4的基本调试。
- 单步执行
- 停止
- 断点
- 运行
- 基本的VSCode插件
- 单步执行
- 停止
- 断点
- 运行
- 变量检查
- 结构体
- 枚举
- 基本类型
- 堆栈帧
- 基本的CLI
- 单步执行
- 停止
- 断点
- 运行
- Cortex m0, m3, m4的基本调试。
- 闪存下载器。
- 半托管。
- 跟踪。
- 支持SWD文件。
常见问题解答(FAQ)
我需要帮助!
不要犹豫,在此处提交问题,在irc上提问,或通过电子邮件联系@Yatekii。
我能提供什么帮助?
请查看问题或如果您认为需要添加内容,请提出问题。
任何贡献都非常欢迎!
还可以查看CONTRIBUTING.md。
许可协议
许可协议为以下之一:
- Apache License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可协议(LICENSE-MIT 或 http://opensource.org/licenses/MIT)任选其一。
贡献
除非您明确说明,否则任何有意提交给工作并由您定义的Apache-2.0许可证的工作贡献,都将按上述方式双重许可,没有任何额外的条款或条件。
依赖项
~38MB
~1M SLoC