|
本帖最后由 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周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|