0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

strongerHuang 来源:strongerHuang 2023-02-13 15:44 次阅读

基于Cortex-M内核的单片机,目前主流的下载接口就是JTAG和SWD。

SWD 和 JTAG引脚区别:

JTAG:

TDI:Test Data In。 串行输入引脚

TDO:Test Data Out,串行输出引脚

TCK:Test Clock,时钟引脚

TMS:Test Mode Select,模式选择(控制信号)引脚

TRST:Test Reset,复位引脚

社署:

SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚

SWCLK:Serial Wire Clock,串行线时钟引脚

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

SWD简介

SWD:Serial Wire Debug,代表串行线调试,是ARM设计的协议,用于对其微控制器进行编程和调试。

市面上支持SWD调试接口的下载器很多,比如:ST-Link、 J-Link、 e-Link、 GD-Link等市面上绝大部分用于Cortex-M内核处理器的下载器都支持。

对于SWDIO,是双向(输入输出)数据引脚,必须在电路板上对线路进行上拉(ARM 建议采用 100 K)。

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

调试接口

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

poYBAGPp6oeAVnBgAAE4rk_MnX8046.png

JTAG与SWD的切换机制:

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

该序列为:

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

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

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

SW 协议序列

每个序列包括三个阶段:

主机发送的数据包请求( 8 位)

目标发送的确认响应( 3 位)

主机或目标发送的数据传输阶段( 33 位)

数据包请求( 8 位):

pYYBAGPp6oeAGC-8AAGQzoMEOO8378.png

ACK 响应( 3 位):

poYBAGPp6oeARyZ_AABmNTe4mrA719.png

DATA 传输( 33 位)

poYBAGPp6oaADvKrAAC885PnyWg675.png

这种类似于寄存器的一些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类似普通外设,也是有一种寄存器,开发者进行的编程(读写)操作,其实就是操作对应的寄存器。

pYYBAGPp6oeAHyR6AANvYTNwRuY995.png

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43982

    浏览量

    620916
  • 通信协议
    +关注

    关注

    28

    文章

    739

    浏览量

    39754
  • 引脚
    +关注

    关注

    16

    文章

    1045

    浏览量

    48973
  • 下载器
    +关注

    关注

    1

    文章

    62

    浏览量

    12641
  • SWD
    SWD
    +关注

    关注

    1

    文章

    54

    浏览量

    11697

原文标题:SWD下载器通信协议底层原理

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW串口通讯—通信协议

    LabVIEW串口通讯—通信协议图文详情请下载附件
    发表于 11-16 11:32

    TCP通信协议-Labview上位机

    现在用单片机进行信息采集,通过GPRS模块上传到PC,用Labview做上位机,TCP通信协议,想请教一下,TCP通信协议和Modbus TCP通信协议有什么不同?
    发表于 12-10 08:58

    请问24l01通信协议和wifi协议有什么区别?

    在网上查的是说都是2.4G通信协议,只查到24l01是ShockBurst协议,但是更加深入的讲解就很少了。它的底层一点的协议是什么样的?
    发表于 05-17 23:33

    STM32中的通信协议是什么

    STM32中的通信协议通讯协议是指在嵌入式开发中,不同的硬件系统或者操作系统之间进行数据交换的方式,是一种数据通讯的规约。通讯协议有很多种,而我今天要说的是串口通讯协议,而且是基于ST
    发表于 08-18 07:21

    如何应用mavlink通信协议

    如何应用mavlink通信协议
    发表于 12-20 06:30

    Modbus通信协议的相关资料下载

    步骤:1.实现1ms中断计时的定时;2.实现发送和接收数据的串口;3.Modbus程序编写。本节将本着从理论落实到实践的角度对Modbus通信协议进行代码实现。
    发表于 02-09 07:47

    如何实现基础通信协议的设计?

    常见的通信协议格式是什么?如何实现基础通信协议的设计?
    发表于 02-14 07:35

    串口通信协议的相关资料分享

    的建立三、建立STM32与PC之间的通信基础1、串口助手的使用2、效果呈现一、串口通信协议1、UART简介嵌入式开发中,UART串口通信协议是我们常用的通信协议(UART、I2C、SP
    发表于 02-22 07:16

    Modbus通信协议教程

    Modbus通信协议教程Modbus通信协议教程Modbus通信协议教程
    发表于 12-08 14:14 69次下载

    SCPI通信协议

    SCPI通信协议
    发表于 05-04 17:54 177次下载

    通信协议CANOpen堆栈手册资源下载

    通信协议CANOpen堆栈手册资源下载
    发表于 04-19 09:45 7次下载

    上位机通信协议PPT课件下载

    上位机通信协议PPT课件下载
    发表于 07-20 09:36 34次下载

    一个简单的基础通信协议的设计与实现

    一个简单的基础通信协议的设计与实现一种常见的通信协议格式搭建串口收发环境配置STM32CubeMX添加USART部分代码通信协议的实现不同设备之间的通信,都需要设计自己的
    发表于 12-14 18:38 9次下载
    一个简单的基础<b class='flag-5'>通信协议</b>的设计与实现

    MODBUS通信协议测试软件免费下载

    MODBUS通信协议测试软件免费下载
    发表于 04-13 14:58 4次下载

    简述SWD下载通信协议底层原理

    基于Cortex-M内核的单片机,目前主流的下载接口就是JTAG和SWDSWD 和 JTAG引脚区别: **JTAG:** * **TDI:**
    发表于 02-20 16:05 2262次阅读
    简述<b class='flag-5'>SWD</b><b class='flag-5'>下载</b>器<b class='flag-5'>通信协议</b><b class='flag-5'>底层</b>原理