概述
本文讲述如何在 Emacs 进行嵌入式调试, 对 MCU 单片机硬件进行调试(比如: STM, HC 等芯片)
说明
大多数入门单片机调试都是从 Keil, IAR Embedded 之类的 IDE 软件.
由于 IDE 这些软件集成了 调试 功能, 导致不知道 编译 + 调试 是如何进行的.
调试底层逻辑: gdb 进行调试.
Emacs 调试单片机
安装必要依赖
GitHub - svaante/dape: Debug Adapter Protocol for Emacs Emacs 安装 dape, 然后根据 dape 说明再安装 cpptools
Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 安装 Arm GCC 工具链, 该工具包含 arm-none-eabi-xxx 等命令行工具.
检查 Arm GCC 是否安装成功, 在终端输入 arm-none-eabi-gdb 看有没有输出.
启动 gdb server
这里以 J-link GDB server 为例子, 其它同理(类如 ST-Link):
SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace
然后像往常那样连接硬件板子, 找到 J-Link 软件程序目录, 找到 JLinkGDBServer.exe 软件启动, 启动选择你要 单片机型号, 然后一路 OK
现在 GDB Server 就有了, JLink GDB server 默认: localhost:2331
Emacs 启动 dape
启动 dape 之前, 请务必根据 GitHub - svaante/dape: Debug Adapter Protocol for Emacs 的说明安装: C and C++ - cpptools
在 Emacs 启动 dape:
M-x dape
然后输入:
cpptools :MIMode "gdb" :miDebuggerPath "arm-none-eabi-gdb" :program "./Build/Rrogram.elf" :setupCommands [(:text "-enable-pretty-printing")(:text "-target-select remote localhost:2331")(:text "-interpreter-exec console \"file F:/Your/Rrogram.elf\"")(:text "-interpreter-exec console \"load\"")(:text "-interpreter-exec console \"monitor reset\"")]
说明:
:program 代表可执行程序文件, 一般类如 IAR, Keil 等软件编译出来的是 .elf/.axf/.out 等文件
:file F:/Your/Rrogram.axf 这里一定是完整路径, 可以是 .elf/.axf/.out 等文件
-interpreter-exec console 代表类似启动了 gdb 然后在 gdb 里面执行命令
其它命令说明可以到 Jlink gdb server 官网查看说明: J-Link GDB Server - SEGGER Knowledge Base
总结
为 Emacs 如何调试单片机(嵌入式 Embedded Debug) 做一个引子, 因为用 Emacs 的人少, 又加上是 硬件(嵌入式) 就更少,
网上的资源可以说几乎没有任何关于 Emacs + 单片机 的相关谈论, 更别说 调试,
嵌入式(单片机) 开发的人, 使用 Emacs 编写代码就更少了….
本文仅仅是简单的描述, 没有太多解释引导, 我相信使用 Emacs 的人本身不简单, 对于这些知识都会了解一点点.