良许Linux教程网 干货合集 SWD下载器通信协议底层原理

SWD下载器通信协议底层原理

对于以Cortex-M内核为基础的单片机,目前流行的下载接口是JTAG和SWD。

SWD 和 JTAG引脚差异:

JTAG:

  • TDI:这是序列输入引脚
  • TDO:这是序列输出引脚
  • TCK:这是时钟引脚
  • TMS:这是模式选择(控制信号)引脚
  • TRST:这是复位引脚

SWD:

  • SWDIO:这是序列线数据输入输出引脚
  • SWCLK:这是序列线时钟引脚

其中,SWD只需要两根线(SWCLK和 SWDIO),在PCB布局有限、引脚资源紧张的情况下,SWD可以算作一种很好的选择。

SWD简介:

SWD或串行线调试,是ARM设计的协议,用于编程和调试它的微控制器。

目前市场上有很多支持SWD调试接口的下载器,如 ST-Link、 J-Link、 e-Link、 GD-Link 等,几乎所有用于Cortex-M内核处理器的下载器都支持。

对于SWDIO,这是一个双向(输入输出)数据引脚,需要在电路板上对线路进行上拉(ARM推荐使用100K)。

在协议中每次改变 SWDIO 的方向时,都会插入一个转换时间,这段时间线路既不由主机驱动也不由目标驱动。默认情况下,此转换时间为一位时间,但可以通过配置 SWCLK 频率来进行调整。

调试接口

常见的Cortex-M内核处理器都集成了SWD和JTAG 调试端口,在 SWJ-DP 中, SW-DP 的 2 个 JTAG 引脚与 JTAG-DP 的 5 个 JTAG 引脚中的部分引脚复用

image-20231102204203191
image-20231102204203191

JTAG与SWD的切换机制:

默认调试接口是 JTAG 接口,如果调试工具想要切换到 SW-DP,它必须在 TMS/TCK(分别映射到 SWDIO 和 SWCLK)上提供专用的 JTAG 序列,用于禁止 JTAG-DP 并使能 SW-DP。这样便可仅使用 SWCLK和 SWDIO 引脚来激活SWDP。

该序列为:

\1. 输出超过 50 个 TCK 周期的 TMS (SWDIO) = 1 信号

\2. 输出 16 个 TMS (SWDIO) 信号 0111100111100111 (MSB)

\3. 输出超过 50 个 TCK 周期的 TMS (SWDIO) = 1 信号

SW 协议序列

每个序列包括三个阶段:

  • 主机发送的数据包请求( 8 位)
  • 目标发送的确认响应( 3 位)
  • 主机或目标发送的数据传输阶段( 33 位)

数据包请求( 8 位):

image-20231102204212733
image-20231102204212733

ACK 响应( 3 位):

image-20231102204215901
image-20231102204215901

DATA 传输( 33 位)

image-20231102204219886
image-20231102204219886

这种类似于寄存器的一些Bit位操作,底层的一些原理与普通的通信协议也有类似之处。。

SW-DP 状态

SW-DP 的状态机有一个用于标识 SW-DP 的内部 ID 代码,其中主要包含的状态:复位、空闲状态、 ID 代码等。

  • 在上电复位后、 DP 从 JTAG 切换到 SWD 后或者线路处于高电平超过 50 个周期后,SW-DP 状态机处于复位状态。
  • 如果在复位状态后线路处于低电平至少两个周期, SW-DP 状态机处于空闲状态。
  • 复位状态后,该状态机必须首先进入空闲状态,然后对 DP-SW ID CODE 寄存器执行读访问。否则,目标将在另一个事务上发出 FAULT 确认响应。

SW-DP 状态机的更多详细信息,可以参看Cortex-M相关的一些手册

SW-DP 寄存器

SWD类似普通外设,也是有一种寄存器,开发者进行的编程(读写)操作,其实就是操作对应的寄存器。

image-20231102204225545
image-20231102204225545

SWD主要的底层就介绍到这里,更多详情,请参看Cortex-M内核手册

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部