搜索
bottom↓
回复: 60

ARM调试接口SWD(Serial Wire Debug) 协议分析

  [复制链接]

出0入0汤圆

发表于 2012-9-23 01:37:53 | 显示全部楼层 |阅读模式
本帖最后由 kingsabbit 于 2012-9-23 01:58 编辑

曾发贴分析孕龙的JTAG解码插件存在BUG,误导走了弯路,今天再来分析一下ARM芯片调试接口JTAG外的一个接线比较简单的接口SWD(Serial Wire Debug) 接口的协议格式

ARM官方的文献资料:



关于SWD时序的说明:


协议包中的校验Parity的说明:


ACK握手包不需要校验的说明:


SWD协议中信号说明





写操作成功时序


读操作成功


读写过程中等待响应


读写过程中出现故障


协议错误时序


连接线复位时序


OK握手说明


WAIT等待请求


FAULT请求


Sticky overrun behavior


再来分析从ULINK获取得到的结果

由JTAG切换到SWD协议通信需要发送如下格式的数据包


读ID的过程
官方资料提到的读ID的文献
attach://53544.pdf



拆解该数据包时序如下:
封包请求(10100101) host to target

ACK请求(100) target to host

数据传输读时序 target to host
32位ID: 2BA01477

最后别忘了校验包
读数据传输中的校验位



同样从swd协协议切换到JTAG通信需要发送如下格式的数据包



最后,需要说明一点:
1.插图是为了分析方便,所以用了SPI,实际中由于要在SWDIO中实现双向的数据传输的,所以不是简单的SPI读写就可完成,只是为了分析方面看到数据,所以特意用了SPI解释8字节的数据
2.写过程中SWDIO是输出的,读过程中SWDIO是输入的,ACK回应期间SWDIO也是输入的
3.上述插图是为了分析方便特意拉开了数据包的距离,如8位+3位+32位+1位校验位,但截取ZLG的CK100读LPC1114 ID的时候,整过数据传输过种是没有中间分隔的,即一次性完成44位的传输操作








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-9-23 02:06:14 | 显示全部楼层
截图加入网页比较小,再来一份打印后的PDF方便阅读



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出100入85汤圆

发表于 2012-9-23 08:18:52 | 显示全部楼层
谢谢,这是 我一直想干 却 没干的事情。

出0入0汤圆

发表于 2012-9-23 08:33:03 | 显示全部楼层
很好,留名占位

出0入0汤圆

发表于 2012-9-23 08:52:48 | 显示全部楼层
会英文的好处呀。。

出0入0汤圆

发表于 2012-9-23 15:32:25 | 显示全部楼层
果断收藏,有空的时候仔细瞅瞅

出0入4汤圆

发表于 2012-9-23 15:50:51 | 显示全部楼层
好东西啊,可以做手持下载器了

出0入0汤圆

发表于 2012-9-24 17:00:24 | 显示全部楼层
SWD用来调试,
确实是方便很多。

出0入0汤圆

发表于 2012-10-6 22:10:10 | 显示全部楼层
,可以字节DIY调试器了

出0入0汤圆

发表于 2012-10-8 23:29:52 | 显示全部楼层
DIY调试器,MARK

出0入0汤圆

发表于 2012-10-8 23:49:05 | 显示全部楼层
手册下不了,怎么回事》》?

出0入0汤圆

发表于 2012-10-9 00:03:56 | 显示全部楼层
可否把上面的三份资料发到下面邮箱:yannami@126.com

出0入0汤圆

发表于 2013-8-6 22:57:18 | 显示全部楼层
看到SWD(Serial Wire Debug) 原以为是一根线,实际使用起来还是要三根线

出0入0汤圆

发表于 2013-8-11 13:04:15 | 显示全部楼层
mark......
顶一个...

出0入0汤圆

发表于 2013-10-29 09:32:57 | 显示全部楼层
刚好想研究这个方面的东西,收了,谢谢~

出0入0汤圆

发表于 2013-10-29 09:41:53 | 显示全部楼层
好,谢谢

出0入0汤圆

发表于 2013-10-29 10:06:40 | 显示全部楼层
好, 记录一下.

出0入0汤圆

发表于 2013-11-22 12:17:33 | 显示全部楼层
赞美楼主的无私

出0入0汤圆

发表于 2013-11-22 12:25:32 | 显示全部楼层
顶!            

出0入0汤圆

发表于 2013-11-25 09:48:19 | 显示全部楼层
好帖子,顶

出0入0汤圆

发表于 2013-12-16 17:55:41 | 显示全部楼层
我也来分享一下笔记
3.如何进入SWD状态
Before using the SW-DP an initialization sequence must be performed to establish communication and
bring the SW-DP to a known state.
1. Perform a line resest
2. Send the JTAG-to-SWD switching sequence
3. Perform a line reset
4. Read the IDCODE register

出0入4汤圆

发表于 2013-12-16 18:17:57 | 显示全部楼层
mark!多谢分享,学习ing

出0入0汤圆

发表于 2013-12-16 22:59:36 来自手机 | 显示全部楼层
mark,多谢分享。

出0入0汤圆

发表于 2013-12-19 11:51:56 | 显示全部楼层
我遇到一个疑问, 在访问芯片内部寄存器时候, AP寄存器组中已经有了一个TAR寄存器用于存放目标寄存器地址, 有个DRW用来存放将要写入或读出寄存器的值, 那么为什么还需要用BD0~BD3寄存器?

出0入0汤圆

发表于 2013-12-30 13:36:12 | 显示全部楼层
正需要,谢谢楼主

出0入0汤圆

发表于 2013-12-30 15:41:47 | 显示全部楼层
谢谢 楼主

出0入0汤圆

发表于 2014-3-2 15:00:51 | 显示全部楼层
有没有做好的手持脱机下载器呀?我需要二三十个!

出0入0汤圆

发表于 2014-4-20 10:12:20 | 显示全部楼层
mark                        

出0入0汤圆

发表于 2014-7-3 11:47:05 | 显示全部楼层
不错。下载来慢慢学习。

出0入0汤圆

发表于 2014-7-18 16:48:09 | 显示全部楼层
好东西,下来好好研究一下!

出0入0汤圆

发表于 2014-7-18 17:06:35 | 显示全部楼层
mark.......

出0入4汤圆

发表于 2014-8-29 09:11:14 | 显示全部楼层
好东西,下来看看

出0入0汤圆

发表于 2014-9-9 22:02:00 | 显示全部楼层
SWD  协议,谢谢分享

出0入0汤圆

发表于 2014-10-9 00:59:15 | 显示全部楼层
SWD  协议,谢谢分享

出0入102汤圆

发表于 2014-10-9 09:49:32 | 显示全部楼层
一直用JTAG调试模式的路过看看。

出0入0汤圆

发表于 2014-10-9 19:21:18 | 显示全部楼层
Mark之                                            

出0入0汤圆

发表于 2014-10-9 19:50:11 | 显示全部楼层
太棒了  赞一个

出0入0汤圆

发表于 2014-10-9 20:04:38 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2014-11-7 12:10:02 | 显示全部楼层
感谢感谢

出0入0汤圆

发表于 2014-11-7 12:27:34 | 显示全部楼层
是挺难的呀

出0入0汤圆

发表于 2014-11-7 12:30:11 | 显示全部楼层
顶顶。。

出0入0汤圆

发表于 2014-11-13 07:56:29 | 显示全部楼层
很好的资料,感谢分享

出0入0汤圆

发表于 2014-11-14 15:02:50 | 显示全部楼层
谢谢,真的不错,很需要!

出0入0汤圆

发表于 2014-12-22 14:30:36 | 显示全部楼层
ARM调试接口SWD协议分析,ARM官方文档 备用

出0入0汤圆

发表于 2015-1-2 23:02:58 | 显示全部楼层
有时间研究一下

出0入0汤圆

发表于 2015-1-4 17:38:06 | 显示全部楼层
很有必要研究一下。

出0入0汤圆

发表于 2015-3-24 20:56:14 | 显示全部楼层
自已看英文文档看不是太明白现在清晰了很多

出0入0汤圆

发表于 2015-4-3 21:06:52 | 显示全部楼层
好..........

出0入0汤圆

发表于 2015-8-25 16:35:33 | 显示全部楼层
没有过程和代码呢?

出0入0汤圆

发表于 2015-8-30 11:09:03 | 显示全部楼层
占楼收藏,英文资料值得啃。

出0入0汤圆

发表于 2015-8-30 21:53:28 | 显示全部楼层
收藏,谢谢分享

出0入0汤圆

发表于 2015-10-9 17:32:56 | 显示全部楼层
MARK!感谢分享

出10入95汤圆

发表于 2015-12-5 15:21:54 | 显示全部楼层
SWD协议,谢谢分享!!!

出0入0汤圆

发表于 2016-3-3 14:09:32 | 显示全部楼层
封包请求,ACK 请求, 数据包格式截图很好。 要是能够在详细解释下如何debug的就更好了

出0入0汤圆

发表于 2018-4-26 22:13:26 | 显示全部楼层
厉害了,学习学习!

出0入0汤圆

发表于 2018-10-18 10:53:25 | 显示全部楼层
厉害了,谢谢分享!

出0入0汤圆

发表于 2018-12-14 12:54:00 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-10-8 15:35:30 | 显示全部楼层
最近要搞,找到老贴,还是很有用

出0入0汤圆

发表于 2020-10-8 20:41:24 | 显示全部楼层
为什么arm的jtag口都用20脚的牛角,是电流太大,需要多点的电源脚吗,10脚不行吗,上次我把20脚转接成10脚牛角也可以用

出0入4汤圆

发表于 2021-7-10 19:29:12 | 显示全部楼层
也想好好看看!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 03:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表