#debug-probes #probe #arm #toolset #chip

probe-rs-targets

一组用于与ARM芯片通信的片上调试工具

1个不稳定版本

0.2.0 2019年10月23日

#2108嵌入式开发

MIT/Apache

2.5MB
50K SLoC

probe-rs

documentation Actions Status chat

一个用于在独立主机上调试ARM核心的调试工具集和库。

动机

该库的目标是提供一个工具集,用于与各种嵌入式MCU和调试探针进行交互。最初,将通过使用CoreSight协议来支持ARM核心。如果需求较高并且有更多贡献者,打算添加对其他架构的支持。

类似的项目如OpenOCD、PyOCD、Segger Toolset、ST Tooling等存在。它们都实现了GDB协议,并在其之上添加了自定义协议,以使GDB能够与调试探针通信。这并非标准化,有时也有些不稳定。每个工具的命令都不同。

本项目移除了GDB层,直接提供调试探针的接口,这使得其他软件,例如VisualStudio,能够使用其调试功能。

此外,我们可以充分利用CoreSight协议。我们可以实时跟踪和修改内存以及寄存器。

最终目标是提供一个完整的库工具集,使其他工具能够使用CoreSight的功能。

功能

  • 该库可以连接到DAPLink或STLink并读写内存。
  • 它可以读取ROM表,从而提取CoreSight组件信息。
  • 它可以下载使用标准ARM闪存块格式的ELF二进制文件。
  • 基本调试功能(连接、复位、停止、单步执行、显示堆栈跟踪、添加断点、在断点上停止)正常工作。

开发重点是在DAPLink上实现(CoreSight、闪存、调试)的完整实现。

下载文件

为了下载ELF二进制文件(标准cargo构建输出),您应该使用cargo-flash实用程序。您可以通过以下命令安装它:cargo install cargo-flash然后使用它:cargo flash或者直接使用您自己构建的cargo-flash。命令cargo flash只是cargo-flash的别名。

基础

使用cargo flash构建您的二进制文件并将ELF二进制文件下载到您的目标设备。

完整的命令集

您可以将传递给cargo build的某些参数传递给cargo flash来配置您的构建目标。使用cargo flash --help获取可用命令的列表。

自动检测

如果您没有通过cargo flash --target <target-triplet>指定目标,probe-rs将尝试识别您的目标。如果这失败,请手动指定您的目标。

命令行界面

为了演示功能,编写了一个小的命令行界面。启动它:

cargo run -p cli -- help

帮助对话框应该会告诉您如何使用命令行界面。

路线图

  • v0.1.0
    • 基本的闪存下载器与nRF51一起工作。
    • cargo-flash可以自动构建并闪存目标elf文件。
    • 文档
  • v0.2.0
    • 解析yaml(或任何其他)配置文件以定义闪存算法,以便可以添加任意芯片。
    • 模块化代码以允许除了M0之外的其他核心,并能够动态加载芯片定义。
    • 目标自动检测。
    • M4目标。
  • ...
    • Cortex m0, m3, m4的基本调试。
      • 单步执行
      • 停止
      • 断点
      • 运行
    • 基本的VSCode插件
      • 单步执行
      • 停止
      • 断点
      • 运行
      • 变量检查
        • 结构体
        • 枚举
        • 基本类型
      • 堆栈帧
    • 基本的命令行界面
      • 单步执行
      • 停止
      • 断点
      • 运行
    • 半主机。
    • 跟踪。
    • SWD文件支持。

常见问题解答

我需要帮助!

不要犹豫,提交一个问题,在matrix上提问,或者通过电子邮件联系@Yatekii

我如何帮助?

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

任何贡献都非常受欢迎!

还可以查看CONTRIBUTING.md

许可

根据以下之一许可

致谢

此软件包包含基于 pyOCD 项目代码(闪存算法)的代码。其中一些代码可能位于 ocd::probe::flash 模块中,并受 Apache License 2.0 许可协议(LICENSE-APACHEhttps://apache.ac.cn/licenses/LICENSE-2.0)的约束。

贡献

除非您明确声明,否则您有意提交的、根据 Apache-2.0 许可证定义的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~52MB
~1.5M SLoC