如题,使用 Keil 连接芯片时失败,,通过逻辑分析仪抓 SWD 上的波形发现,,DAPLink 执行 Line reset 之后,,就直接发了 8 个 0,,然后就开始读取 IDCODE 了,,没有发送 JTAG-to-SWD 序列。。
根据网上找到的《Programming Internal Flash Over the Serial Wire Debug Interface》中如下内容,,调试器需要发送 JTAG-to-SWD 序列激活 SW-DP,,才能发送 SWD 命令。。
有两种可能导致这个问题:
1、Keil 让 DAPLink 发送 JTAG-to-SWD 序列了,,但 DAPLink 没发
2、Keil 就没让 DAPLink 发送 JTAG-to-SWD 序列
为了区分这两种情况,,我用 WireShark 抓取了一下 DAPLink 的 USB 数据,如下图所示,,结果发现 Keil 确实没让 DAPLink 发送 JTAG-to-SWD 序列。。
请问哪位大佬知道这是什么情况??是 Keil Bug 吗??我用的 Keil 版本是 5.36,,很新的版本,,感觉不应该出现这种 Bug 才对。。
最后,我上传了 WireShark 抓到的数据包,,感兴趣的大侠可以看看。。谢谢。。
WireShark_DAPLink_No_Jtag2SWD.rar
发送 Line reset:
发送 8 个 0:
离线
抓取的数据包是在Keil进行什么操作时进行的?调试器中选择的协议是SWD吗?在选择协议的时候抓包,然后看下是否有切换协议的动作,其他动作有可能不再下发模式切换请求。这边测试5.29没有问题,方便的话可以上传一个5.36 MDK\ARM\BIN文件夹下的CMSIS_DAP.dll,这边测试下。
"使用 Keil 连接芯片时失败",使用的DAPLink是一直失败,还是偶尔失败;其他型号的芯片是否有相同现象,不过推测和芯片型号没有关系,可以降低SWD频率试一下。
最近编辑记录 llinjupt (2023-07-05 15:05:34)
离线
问题找到了,,应该是因为没勾选下面那个 SWJ 复选框,,勾选上就可以了
离线