Black Magic Probe 技术文档
本文档旨在帮助用户详细理解和正确使用 Black Magic Probe 项目。以下是项目的安装指南、使用说明以及项目 API 使用文档。
一、安装指南
1. 环境准备
在开始安装之前,请确保您的系统已安装以下工具:
- git
- meson (版本 0.61 或更高)
- ninja
根据您的需求,如果需要构建或工作在固件或 Black Magic Debug App (BMDA) 上,还需要以下工具:
Black Magic Debug 固件
arm-none-eabi-gcc(来自 ARM,自建和发行版提供的版本目前无法使用)
如果您希望使用较旧的 gnu-rm ARM 工具链,这也是可以的,并且工作良好。
如果您从其他来源获得的工具链遇到问题,请首先检查是否是工具链的问题,如果是,请打开一个 issue,或更好,提交一个修复的 pull request。
Black Magic Debug App
- GCC 或 Clang (Clang 不是官方支持的)
如果希望为第三方探针启用支持,而不仅仅是官方原生硬件,还需要:
- libusb1
- libftdi1
- libhidapi
2. 构建固件
该项目使用 Meson 构建系统进行配置和构建。您需要创建一个构建目录,然后根据您的需求配置构建。
项目的构建选项如下:
probe:固件将运行的硬件平台targets:启用的调试目标debug_output:启用调试输出(用于调试 BMD 堆栈,而非调试目标)rtt_support:启用 RTT(实时传输)支持
您可以在 meson configure 命令的输出中查看所有可用的项目选项和有效值。
以下命令是从您克隆的 blackmagic 仓库的根目录运行的:
cd /path/to/repository/blackmagic
构建固件
要构建固件,您需要配置探针硬件以及要使用的交叉编译工具链。
对于每个支持的硬件探针,都有一个交叉文件可用,为它提供了一套合理的默认配置。
对于原生探针的构建配置命令可能如下:
meson setup build --cross-file cross-file/native.ini
即使您使用预配置的交叉文件,您仍然可以通过 -Doption=value 在同一配置命令中覆盖其默认值,或者在 更改构建配置 中稍后进行。
或者(对于高级用户),如果您想手动配置,例如在编写新探针支持或不同工具链时,可以运行:
meson setup build --cross-file cross-file/arm-none-eabi.ini -Dprobe=native -Dtargets=cortexm,stm
现在您应该有一个 build 目录,从中可以构建固件,这也是您的二进制文件将出现的地方。
meson compile 命令将构建默认目标,如果您从 build 目录内运行命令,可以省略 -C build:
meson compile -C build
您现在应该在 build 目录中看到以下结果文件:
blackmagic_native_firmware.binblackmagic_native_firmware.elf
这些是您将用于刷新到探针的二进制文件。
region `rom' 溢出
在处理非默认配置或 Git 上最新版本的项目时,可能会出现固件无法适应配置探针的可用空间的情况,如下所示:
arm-none-eabi/bin/ld: region `rom' overflowed by 4088 bytes
Memory region Used Size Region Size %age Used
rom: 135160 B 128 KB 103.12%
ram: 5708 B 20 KB 27.87%
collect2: error: ld returned 1 exit status
这不是意外的情况,因为一些硬件探针的固件空间有限。您可以禁用一些功能或目标支持来解决这个问题:
meson configure build -Dtargets=cortexm,stm -Drtt_support=false
3. 构建 Black Magic Debug App
Black Magic Debug App (BMDA) 默认总是与固件一起构建。只要找到所有依赖项,就可以在 build 目录下找到可执行文件,名为 blackmagic。
如果您只想构建 BMDA,可以将硬件 probe 选项设置为空字符串 -Dprobe='',这是默认值:
meson setup build
现在您应该有一个 build 目录,从中可以构建应用程序,这也是您的可执行文件将出现的地方。
meson compile 命令将构建默认目标,如果您从 build 目录内运行命令,可以省略 -C build:
meson compile -C build
您现在应该在 build 目录中看到以下结果文件:
blackmagic
二、项目使用说明
1. Black Magic Debug 固件使用
以下是使用 Black Magic Debug 固件的示例:
> arm-none-eabi-gdb gpio.elf
...<GDB 版权信息>
(gdb) tar ext /dev/ttyACM0
远程调试使用 /dev/ttyACM0
(gdb) mon s
目标电压:2.94V
可用目标:
No. Att Driver
1 STM32F40x M3/M4
(gdb) att 1
连接到程序:/devel/en_apps/gpio/f4_discovery/gpio.elf,远程目标
0x08002298 在 UsartIOCtl ()
(gdb) load
加载段 .text,大小 0x5868 lma 0x8000000
加载段 .data,大小 0x9e0 lma 0x8005868
加载段 .rodata,大小 0x254 lma 0x8006248
起始地址 0x800007c,加载大小 25756
传输率:31 KB/秒,919 字节/写入。
(gdb) b main
在 0x80000e8 处设置断点:文件 /devel/en_apps/gpio/f4_discovery/../gpio.c,行 70。
(gdb) r
开始程序:/devel/en_apps/gpio/f4_discovery/gpio.elf
注意:自动使用硬件断点来读取只读地址。
2. Black Magic Debug App 使用
您还可以将 Black Magic Debug 套件构建为名为 Black Magic Debug App (BMDA) 的 PC 程序。
此程序构建的是在 Black Magic Probe 上运行的同一 GDB 服务器。与 Black Magic Probe GDB 服务器的连接通过串行线进行,而与 Black Magic Debug App 的连接通过 TCP 端口 2000 进行,对于更多实例,端口会更高。使用 "tar(get) ext(ended) :2000" 进行连接。
Black Magic Debug App 可以与以下设备通信:
- Black Magic Probe 固件探针通过 USB-串行端口
- ST-Link v2、v2.1 和 v3(带有最新固件)
- CMSIS-DAP 兼容探针
- J-Link 探针
- FTDI MPSSE based 探针
当只连接到单个 BMP 支持的探针时,无参数启动 blackmagic 会启动服务器。当连接多个 BMP 支持的探针时,显示它们类型、位置和序列号,然后程序退出。添加 -P (位置) 到下一个调用以选择一个。对于上面示例会话的设置:
在另一个终端:
> blackmagic
Black Magic Debug App v1.9.2
适用于 Black Magic Probe、ST-Link v2 和 v3、CMSIS-DAP、J-Link 和 FTDI (MPSSE)
使用 1d50:6018 8BB20A03 Black Magic Debug
Black Magic Probe v1.9.2
监听 TCP: 2000
在 GDB 终端:
(gdb) tar ext :2000
远程调试使用 :2000
(gdb) mon s
...
Black Magic Debug App 还提供了对二进制文件的刷写、读取和验证功能,默认从最低闪存地址开始。-t 参数显示有关连接目标的信息。使用 -h/--help 获取支持选项的列表。
操作系统特定说明
在 *BSD 和 macOS 上,您应该使用 /dev/cu.usbmodemXXX。有关尝试使用 /dev/tty.usbmodemXXX 设备节点存在一些未解决的问题,涉及它在内部如何操作。
三、项目 API 使用文档
由于项目涉及固件和应用程序,API 使用文档通常涉及如何通过 GDB 与固件通信,以及如何使用 Black Magic Debug App 的命令行选项。
具体的 API 使用方法和文档通常在项目官方文档或相关开发指南中提供,这里不详细展开。
请根据项目的具体使用场景和需求,参考官方文档和开发指南,了解和使用项目提供的 API。
本文档提供了 Black Magic Probe 项目的安装、使用和 API 使用的基本指南,帮助用户更好地理解和利用该项目进行嵌入式微处理器的应用开发和调试。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00