676|0

24

帖子

0

资源

一粒金砂(中级)

ARM SWD协议简介 [复制链接]

 

ARM SWD协议简介

SWD全称Serial Wire Debug,是ARM为嵌入式设备推出的一种简单的调试接口,这种接口通过一条双向数据线和一条时钟线实现对于ARM核心的调试。在SWD协议中,总线上主要有以下三个阶段:

  1. Packet Request,这个阶段表示外部调试器向Debug Port(DP)发送请求。
  2. Acknowledge Response,这个阶段是设备向调试器返回应答信号。
  3. Data Transfer Phase, 数据传输阶段,调试器向设备写数据或者设备向调试器返回数据

在上述三个阶段之间一般会有一个TRN间隔,长度一般是一个时钟,这个间隔用于总线方向切换,当调试器发送请求后,设备必须立即返回自己的状态作为应答,数据传输阶段,只有写数据才有TRN间隔。

当数据传输完成之后,调试器需要立即开始下一个请求,或者持续发送至少8个周期的时钟,这个期间数据线应该保持低电平。

SWD中Packet Request和Data Transfer阶段都有一个奇偶校验位,数据传输数据是LSB first。

Packet和Acknowledge数据定义

名称 定义
Start 1'b1 起始位
APnDP 表示请求DP(Debug Port)-1'b0, 还是请求AP(Access Port)-1'b1
RnW 0 表示写操作,1表示读操作
A[2:3] 指定DP或者AP的地址
Parity 奇偶校验位
Stop 1'b0 停止位
Park 1'1 主机必须驱动此位为1,然后进行方向切换
Trn 方向切换
ACK[0:2] 设备向调试器返回当前状态
WDATA[0:31] 调试器向设备写数据
RDATA[0:31] 设备向调试器返回数据

SWD写操作

SWD写操作包含上述完整的三个阶段:

SWD写操作

写操作之后没有Trn阶段,可以直接发起下一次数据请求。

SWD读操作

SWD读操作同样包含完整的三个阶段

SWD读操作

读操作ACK之后没有Trn,设备必须直接返回数据,数据传输完成之后需要Trn才能发起下一次请求。

如果调试器发起的是读DP的请求,那么设备可以直接返回DP数据结果,而如果是读AP,那么设备需要在下一次读的时候(DP或者AP)才能返回结果,对于连续的读AP操作,调试器只需要插入一个RDBUFF就可以了:

  1. 第一次AP读操作,返回数据结果直接丢弃
  2. 后续每次AP读操作都返回之前的AP读取结果
  3. 最后再发送一个AP用于读取上一个AP结果
  4. 读取DP RDBUFF读取最后的AP访问结果

SWD等待

如果设备不能正常处理调试器的请求,那么设备可以返回WAIT响应,WAIT响应ACK[0:2]=3'b010, 但是当读取DPIDR,CTRL/STAT/ABORT寄存器的时候设备不应返回WAIT响应。一般情况下调试器在收到WAIT响应之后,只需要重新发送请求即可,如果多次请求依然失败,那么可以通过写ABORT.DAPABOUT来终止这个操作。

连接和总线复位

当调试器接入或者总线上发生各种错误的时候,调试器可以通过发送复位信号来复位设备的调试接口,复位信号通过发送至少50个时钟,并保持数据线为1,然后在发送至少2个时钟的低电平完成,也就是发送至少50个1和至少2个0完成。

此帖出自stm32/stm8论坛

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表