1个不稳定版本
0.2.0 | 2019年10月23日 |
---|
#2108 在 嵌入式开发
2.5MB
50K SLoC
probe-rs
一个用于在独立主机上调试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文件支持。
- Cortex m0, m3, m4的基本调试。
常见问题解答
我需要帮助!
不要犹豫,提交一个问题,在matrix上提问,或者通过电子邮件联系@Yatekii。
我如何帮助?
请查看问题或如果您觉得需要,请打开一个问题。
任何贡献都非常受欢迎!
还可以查看CONTRIBUTING.md。
许可
根据以下之一许可
- Apache License, Version 2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)任选其一。
致谢
此软件包包含基于 pyOCD 项目代码(闪存算法)的代码。其中一些代码可能位于 ocd::probe::flash
模块中,并受 Apache License 2.0 许可协议(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)的约束。
贡献
除非您明确声明,否则您有意提交的、根据 Apache-2.0 许可证定义的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~52MB
~1.5M SLoC