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 使用的基本指南,帮助用户更好地理解和利用该项目进行嵌入式微处理器的应用开发和调试。
AutoGLM-Phone-9BAutoGLM-Phone-9B是基于AutoGLM构建的移动智能助手框架,依托多模态感知理解手机屏幕并执行自动化操作。Jinja00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
GLM-4.6V-FP8GLM-4.6V-FP8是GLM-V系列开源模型,支持128K上下文窗口,融合原生多模态函数调用能力,实现从视觉感知到执行的闭环。具备文档理解、图文生成、前端重构等功能,适用于云集群与本地部署,在同类参数规模中视觉理解性能领先。Jinja00
HunyuanOCRHunyuanOCR 是基于混元原生多模态架构打造的领先端到端 OCR 专家级视觉语言模型。它采用仅 10 亿参数的轻量化设计,在业界多项基准测试中取得了当前最佳性能。该模型不仅精通复杂多语言文档解析,还在文本检测与识别、开放域信息抽取、视频字幕提取及图片翻译等实际应用场景中表现卓越。00
GLM-ASR-Nano-2512GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00