#debug-probes #arm #toolset #probe #register

已删除 coresight

用于与ARM芯片通信的CoreSight工具集合

0.1.0 2019年10月3日

#13 in #debug-probes


4 crate 中使用

MIT/Apache

28KB
834 代码行

probe-rs

Build Status

一个用于在独立主机上调试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表存在问题,但可能在长期内得到修复。

开发的重点是实现DAPLink的完整功能(CoreSight、擦写、调试)并在此基础上进行。

命令行界面(CLI)

为了展示功能,编写了一个小的命令行程序。使用以下命令启动:

cargo run -p cli -- help

帮助对话框应会告诉您如何使用CLI。

使用tracer启动

cargo run -p cli -- trace <n> <address> | python3 cli/update_plot.py

目前,管道接口是二进制的。

如果您正确执行所有操作并跟踪一个值变化的内存位置,它会看起来像这样:

counter plot

路线图

  • v0.1.0
    • Cortex m0、m3、m4的基本调试。
      • 单步执行
      • 停止
      • 断点
      • 运行
    • 基本VSCode插件
      • 单步执行
      • 停止
      • 断点
      • 运行
      • 变量检查
        • 结构体
        • 枚举
        • 基本类型
      • 栈帧
    • 基本CLI
      • 单步执行
      • 停止
      • 断点
      • 运行
  • 闪存下载器。
  • 半托管。
  • 跟踪。
  • SWD文件支持。

常见问题解答(FAQ)

我需要帮助!

请毫不犹豫地提交问题,在irc上提问,或者通过电子邮件联系@Yatekii

我能提供什么帮助?

请查看问题或如果您认为需要,请打开一个问题。

任何贡献都受到热烈欢迎!

还可以查看CONTRIBUTING.md

许可证

根据您的选择,许可如下:

贡献

除非您明确声明,否则您提交的任何有意提交给作品作为贡献的内容,根据Apache-2.0许可证的定义,应如上所述双重许可,没有附加条款或条件。

依赖项

~0.6–1.3MB
~30K SLoC