"); //-->
大家好,我是鱼鹰。最近鱼鹰想自制一个 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 功能(想用哪个用哪个),还是高速模式,所以速度还是很给力的。可惜并没有源码提供学习,只能自己摸索一下了(鱼鹰买这个工具的时候,主要就是想学习这个,可是那个时候不知道没有提供这个的源码)。
接下来,鱼鹰可能会陆陆续续分享一些调试器相关的知识,此篇就作为该系列的开篇吧。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。