基于ESP8266的CMSIS-DAP调试器

前言 ?前段时间用8266制作了一个STM32的下载器,可以进行远程下载固件。不过我们用STM32的时候,经常需要进行各种调试,这时候一个调试器就很重要了。于是我想到也许可以做一个无线调试器?本来我打算自己写一个的,不过在github发现居然有人做过了,那就直接拿来用吧哈哈哈。项目地址: esp8266-wifi-cmsis-dap
?虽说有现成的代码,作者也写了在Linux下的详细使用说明,可是我还是折腾了好几天才搞好(可能是我太菜了肯定是我太菜了)。在这里做个记录,希望可以帮到有同样想法的人。
?开始之前先说一下,本文是在Windows下进行测试的,感觉是信号的问题,有时Keil会显示RDDI-DAP Error。
前期准备

  • ESP8266
    这个直接在淘宝买就好了,一般都是十几块钱的那种
  • ESP8266开发环境
    由于项目是用Arduino来写的,所以推荐使用Arduino IDE或者VS Code + PlatformIO。Arduino IDE用来开发ESP8266的人好像挺多的,而且很多人也比较熟悉,不过我更加推荐在VS Code上安装PlatformIO来进行开发,真的超级方便的!!
  • esp8266-wifi-cmsis-dap
    clone下来或者直接下载zip下来都可以啦
  • Keil,STM32单片机,杜邦线
    估计看这篇文章的人肯定都有吧哈哈哈
  • USB/IP软件及驱动
    usbip.zip
    driver.7z
    原版的usbip和驱动我用了会出现蓝屏(BSOD),最后找到了这样一个帖子(果然我不是一个人),里面提供的软件和驱动我用了没有问题。由于帖子里面把文件上传到了dropbox,也许你会无法访问,可以通过我上传的链接进行下载。
制作固件 首先用下载好多esp8266-wifi-cmsis-dap构建工程,然后在main.cpp里面(62行),修改你的WiFi名称和密码:
const char* ssid = ""; //你的WiFi SSID const char* pass = ""; //你的WiFi密码

当然你也可以用smartconfig
为了方便后面连接,我们可以在WiFi连接成功后把IP地址通过串口打印出来,在setup()里面添加上(846行):
Serial.println(WiFi.localIP());

这时候就可以编译下载到你的8266上了。
关于ESP8266的编译和下载已经有很多文章讲到了,所以我在这里就不说啦。如果你觉得太麻烦了的话,可以在文末下载我编译好的固件。
ESP8266连接STM32 经过测试,发现用JTAG连接的方式会稳定很多,以下是接线方式
D0STM32RESET D1TDI D2TDO D3TCK D4TMS GNDGND 3.3V3.3V

也许你的单片机上面已经把这些引脚标出来了,这样的话直接对应连接就好了。如果没有的话,请参考下面的图:
基于ESP8266的CMSIS-DAP调试器
文章图片
这里用的是SWDJTAG的连接方式,如果你想要用其它的连接方式,请查看DAP_config.h文件的第127行(好像换了连接方式稳定很多)。
安装虚拟USB驱动 【基于ESP8266的CMSIS-DAP调试器】因为这个驱动没有签名,所以我们需要把Windows的测试模式打开。以管理员身份打开命令行工具,输入以下命令:
bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS bcdedit -set TESTSIGNING ON

基于ESP8266的CMSIS-DAP调试器
文章图片

完成上面操作后,重启电脑,可以看到右下角有这样的提示:
基于ESP8266的CMSIS-DAP调试器
文章图片
如果你需要关闭测试模式,可以输入:
bcdedit -set TESTSIGNING OFF

解压driver.7z备用,打开设备管理器,点击任意一个设备,然后点击操作-添加过时硬件:
基于ESP8266的CMSIS-DAP调试器
文章图片

点击下一步,选择“安装我手动从列表选择的硬件(高级)”:
基于ESP8266的CMSIS-DAP调试器
文章图片
下一步-下一步,选择从磁盘安装:
基于ESP8266的CMSIS-DAP调试器
文章图片
在弹出的窗口选择浏览,最后定位到你解压的driver文件夹下面的output,选择USBIPEnum.inf,打开-确定-下一步-下一步,最后就完成了。
基于ESP8266的CMSIS-DAP调试器
文章图片
连接ESP8266 解压usbip.zip,在usbip目录下打开终端,可以输入usbip.exe -h查看命令:
基于ESP8266的CMSIS-DAP调试器
文章图片

输入usbip.exe -D -a 192.168.123.139 1-1来连接ESP8266,这里的IP地址192.168.123.139换成你的实际IP地址(可以通过串口来查看),其它地方不用变。
基于ESP8266的CMSIS-DAP调试器
文章图片
这样子就表示连接成功了。
要保持连接的话,一定不能关掉窗口!!!
如果你不想每次都进入文件夹再输命令,可以把usbip目录加到系统环境变量里面去
开始调试 首先由Keil打开我们的工程,修改调试器为CMSIS-DAP
基于ESP8266的CMSIS-DAP调试器
文章图片

基于ESP8266的CMSIS-DAP调试器
文章图片
打开Settings看看是不是连接成功了
基于ESP8266的CMSIS-DAP调试器
文章图片
修改几个红色框框里面的选项,应该就能在右侧的绿色框框看到连接的调试器了。至于Max Clock,你可以自己看着改,一般都可以。
最后别忘了把这个选上
基于ESP8266的CMSIS-DAP调试器
文章图片

接着来试一下编译下载吧
基于ESP8266的CMSIS-DAP调试器
文章图片

没毛病,那就接着试一下调试
基于ESP8266的CMSIS-DAP调试器
文章图片

基于ESP8266的CMSIS-DAP调试器
文章图片

很明显,这样就成功了。
如果你想要用openocd来调试的话,也是可以的哦。
基于ESP8266的CMSIS-DAP调试器
文章图片

(好像速度比keil慢多了,我也不知道为什么)
基于ESP8266的CMSIS-DAP调试器
文章图片
下载
  • USB/IP
    同上面
  • 虚拟USB驱动
    同上面
  • esp-cmsis-dap.bin
    烧完固件后首先用esptouch进行smartconfig,可以通过串口来看调试信息,还有IP地址,波特率是115200.

    推荐阅读