来源:公众号【鱼鹰谈单片机】,ID :emOsprey
大家好,我是鱼鹰。
最近一段时间,鱼鹰一直在研究 zephyr 下的 DAP 调试器实现,毕竟 zephyr 号称支持 300+ 款开发板,这意味着,你只要写一次代码,就能在各种开发板上使用,也就意味着,基于 zephyr 实现的 DAP 可以在任意开发板上使用,这是非常吸引人的一个点。
跨平台!
历经磨难,终于让鱼鹰实现了 HID 和 WINUSB 的 DAP 复合设备。
目前串口有点小问题,后面修复就好。
另外支持 openocd 和 keil 下的使用。
有些道友可能以为这是一句废话,真正了解的都知道,两者还是有一定区别的,鱼鹰在这里就踩了一个小坑。
另外在 keil 上使用的时候,发现能识别两个设备,但是只能用 HID,不能用 WinUSB。然后对比各种描述符,猜测各种描述符是否可能导致该问题,却发现都不是根本原因,最后在 DAP 数据返回时发现了问题。
另外 zephyr 的参考例子也有很多问题,可谓费了鱼鹰的九牛二虎之力才算搞定,也因此对 USB 设备有了更深的理解,对 zephyr 的框架也有更多的了解。
还有 UBS BOS 描述符也踩了比较多坑, 毕竟之前不了解。
不过结局还是好的。
后面再测试一下下载速度,再完成 U 盘升级功能,就比较完美了,后面就可以基于此添加各种小功能了。
226