- 要调戏MCU,我们需要准备哪些家伙
在上一篇文章中,我们已经可以在Eclipse成功编译工程了。对于一些传说中的大神,这也就够了,他们写完代码,编译,下载看看,不行再来两遍,OK了。但是对于像小编这样的凡夫俗子,程序不调试一下,肯定是不行地。我们来看看Eclipse中如何调试代码。在此我们以STM32F030为例。
需要准备的家伙式儿:
A选项 ST-Link调试器, ST-Link driver,OpenOCD
B选项 对于不差钱儿的主,功能强大的J-Link,和与之配套的J-Link官方软件,当然是不二之选。
- 软件下载安装A选项,用ST-Link下载调试。
ST-LINK驱动
https://www.st.com/zh/development-tools/stsw-link009.html
ST-Link installation-1
运行stlink_winusb_install.bat,或者dpinst_amd64.exe,完成ST-Link驱动安装。
OpenOCD (Open On-Chip Debugger)
https://sourceforge.net/projects/openocd/
这个地址有源代码,但好像没有可以运行的文件。这个东西有什么作用呢?看一下官方解释:
The "Open On-Chip Debugger" provides JTAG/SWD access from GDB (or directly with TCL scripts) to processors with ARM and MIPS based cores.
在下面的地址可以找到可运行文件:
https://openocd.org/pages/getting-openocd.html
跳转到:
https://github.com/openocd-org/openocd/releases/tag/v0.11.0
滚动到页面最下方:
把OpenOCD解压到下面的目录:
OpenOCD Dir
之后我们要在Eclipse中一步一步完成设置。把上面OpenOCD的路径,在EClipse中设置好:
Eclipse Settings-1
Eclipse Settings-2
Eclipse Settings-3
如下图,在调试器的设置中,需要指定两个文件。
那么这两个文件是在哪里呢?就是前面我们解压的OpenOCD路径下面。
调试器配置文件:
Eclipse Settings-5
目标MCU配置文件:
C:UsersVDesktopEclipse之二picsEclipse Settings-6.jpgEclipse Settings-6
设置完成后点Debug,就会出现调试的界面了。注意右上角的两个小图标,可以用来在编译窗口和调试窗口之间切换。
C:UsersVDesktopEclipse之二picsEclipse Settings-8.jpgEclipse Settings-8
- B选项,使用J-Link
我们再看一下B选项,使用J-Link。话说能用J-Link,是不是再配个Keil,IAR之类的就不用这么折腾了。
先到赛哥下载J-Link官方软件:
https://www.segger.com/downloads/jlink/
当前版本是JLink_Windows_V760b_x86_64.exe,直接安装就好了。
在Eclipse完成设置:
C:UsersVDesktopEclipse之二picsJ-Link-1.jpgJ-Link-1
J-Link支持的器件列表可以在下面的地址找到:
https://www.segger.com/supported-devices/jlink/
如果你仔细看,在步骤3设置的是 JLinkGDBServer。
- X选项,使用OpenOCD和Zadig链接J-Link调试器。
Zadig是一款通用的USB设备操作软件,下载地址:
https://zadig.akeo.ie
如果下载较慢,可以尝试用迅雷下载这个链接:
https://github.com/pbatard/libwdi/releases/download/v1.4.1/zadig-2.7.exe
用Options -> List All Devices找到J-Link,然后安装驱动。
完成设置,注意jlink.cfg
需要注意的是由于调试器默认配置使用JTAG方式,如果目标MCU使用SWD,则需要修改一下jlink.cfg文件。
C:UsersflyAppDataRoamingxPacksopenocd-v0.11.0-i686-w64-mingw32shareopenocdscriptsinterfacejlink.cfg
在里面增加一句话:transport select swd
好了,点击Debug就可以愉快地玩耍了。
如果你有点儿懵圈,欢迎再看另一篇:
Keil 死了,我们还能活吗?第一季