新闻  |   论坛  |   博客  |   在线研讨会
关于自制调试器的那些事儿(一)
鱼鹰谈单片机 | 2022-05-23 20:51:31    阅读:589   发布文章

大家好,我是鱼鹰。最近鱼鹰想自制一个 CMSIS-DAP 的调试器,并且准备采用蓝牙的方式无线调试,所以把官网的关于 CMSIS-DAP 的资料大体都过了一遍。

图片


除了 SWD 通信那个 DAP_Transfer 命令之外,基本上理解都差不多了。

官网 DAP 命令解释如下链接:

https://www.keil.com/pack/doc/CMSIS/DAP/html/group__DAP__Commands__gr.html


其实在学习 USB 的时候,鱼鹰用的就是 CMSIS-DAP 1.0 的官方工程,只是把很多东西删掉,只保留了 CDC 的功能分享给大家,为的就是让大家能专注于 USB 本身的学习上。


并且鱼鹰也尝试了该工程的调试下载功能,可以用,但好像不怎么稳定,并且速度捉急。后来才了解到,由于 1.0 版本采用的是 USB 的 HID 模式,虽然在 windows 上可以免驱,但是速度最大只能到 64 KB/s,这个是由于 USB 2.0 全速模式的限制(12 Mb/s),高速模式其实也能达到很高的速度,完全够用。


后来鱼鹰才了解到,DAP 2.0 除了支持调试下载之外,还增加了 SWO (即 ITM 的功能)输出、虚拟串口、拖曳烧录(类似 U 盘)等实用功能,相当给力。另外采用了 winUSB 的驱动(win10 免驱),即不走 HID 模式,而是走批量传输(目前 ST-link 和 J-link都采用这种),所以速度完全可以和他们媲美。


也就是说,如果使用 DAP-2.0 的固件,即使是全速 USB(STM32103 系列基本都是全速 USB),速度完全够用。鱼鹰在采用 USB 双缓冲模式下,虚拟 U 盘读速度可以达到 900 KB/s(鱼鹰:探究 USB2.0 的真实传输速度是多少?),接近了理论速度。


而据鱼鹰了解到的 BLE 蓝牙知识,2 M 速率模式下,无线传输速度可达 150KB/s,应该调试下载都是问题不大的,就是不知道实际情况是怎么样的。


犹记得几年前鱼鹰在 csdn 写了一个关于野火 DAP 的固件修复的帖子,其实那个时候只是有基本概念,知道可以实现,但不知道具体实现,之后虽然勉强在野火的烧录器实现了烧录调试功能,但不理想,也就没有下文了。


但鱼鹰知道,很多人因为这篇博客关注鱼鹰的公众号,还在后台询问固件的消息。但不了了之,在此说声抱歉。


但只要后面有一个成熟的 DAP 固件出炉,就一定会分享给大家,这样野火的板子不小心烧掉后,也能补救一下,甚至自己做一个调试器也是没有任何问题的。


当然源码就不一定会提供了。不过如果鱼鹰实现了更优的固件(更稳定、下载速度更高、功能更强),早起的源码也不是不能分享,哈哈。


硬汉的 H7-Tool 工具也有 CMSIS-DAP 的固件,实现了 HID + winUSB 功能(想用哪个用哪个),还是高速模式,所以速度还是很给力的。可惜并没有源码提供学习,只能自己摸索一下了(鱼鹰买这个工具的时候,主要就是想学习这个,可是那个时候不知道没有提供这个的源码)。


接下来,鱼鹰可能会陆陆续续分享一些调试器相关的知识,此篇就作为该系列的开篇吧。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客