您尚未登录。

楼主 # 2023-07-04 21:44:35

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 253
积分: 314.5

Keil 通过 DAPLink 连结 STM32F411 时,不发送 JTAG-to-SWD 序列。。

如题,使用 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 命令。。

SW-DP_initseq.jpg

有两种可能导致这个问题:
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:
WireShark_DAPLink_No_Jtag2SWD-1.jpg

发送 8 个 0:
WireShark_DAPLink_No_Jtag2SWD-2.jpg

离线

#1 2023-07-05 14:48:12

llinjupt
会员
注册时间: 2020-12-21
已发帖子: 93
积分: 178

Re: Keil 通过 DAPLink 连结 STM32F411 时,不发送 JTAG-to-SWD 序列。。

抓取的数据包是在Keil进行什么操作时进行的?调试器中选择的协议是SWD吗?在选择协议的时候抓包,然后看下是否有切换协议的动作,其他动作有可能不再下发模式切换请求。这边测试5.29没有问题,方便的话可以上传一个5.36 MDK\ARM\BIN文件夹下的CMSIS_DAP.dll,这边测试下。

"使用 Keil 连接芯片时失败",使用的DAPLink是一直失败,还是偶尔失败;其他型号的芯片是否有相同现象,不过推测和芯片型号没有关系,可以降低SWD频率试一下。

最近编辑记录 llinjupt (2023-07-05 15:05:34)

离线

楼主 #2 2023-07-05 19:03:02

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 253
积分: 314.5

Re: Keil 通过 DAPLink 连结 STM32F411 时,不发送 JTAG-to-SWD 序列。。

问题找到了,,应该是因为没勾选下面那个 SWJ 复选框,,勾选上就可以了 sad

Keil_Options_SWJ.jpg

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn