《单片机 SWD 下载通信底层原理.docx》由会员分享,可在线阅读,更多相关《单片机 SWD 下载通信底层原理.docx(5页珍藏版)》请在第壹文秘上搜索。
1、基于CortexM内核的单片机,I1.前主流的下载接口就是JTAG和SWD.SV.I)11JG.:.1;JTAG1 TDIiTestDataIn.*行输入引脚 TDOtTestDataOut,中行输出引脚 TCK1TestC1.ock.时钟引脚 TMStTestModeSe1.ect.模式选择(控制信号)引脚 TRST.TestReset,红位引脚SYD: SWD1.OtSeria1.WireDataInputOutput,中行数据输入输出引脚 SWC1.KSeria1.WireC1.ock.串行线时钟引脚其中SWD只需要两根线(SWC1.K和SWDIO),在PCB布局有限、引脚资源紧张的情况
2、下,SWD算是一种不错的选择.SWD值介SWD:Seria1.WireDebUg,代表串行线调试,是ARM设计的附议,用于对其微控制器进行编程和调试。市面上支持SWD调试接口的下载器很多,比如:ST-1.ink.J-1.ink.e-1.ink,GD-1.ink等市面上绝大部分用于CorteX-M内核处理器的下载器都支持。对于SWDIO,是双向(输入输出)数据引脚,必须在电路板上对线路迸行上拉(ARM建议采用100K).每次在协议中更改SWDIO的方向时,都会插入转换时间,此时线路即不受主机驱动也不受目标驱动。默认情况下,此转换时间为一位时间,但可以通过配置SWC1.K频率来调整.调试接口常见的
3、CorteX-M内核处理器都集成了SWD和JTAG调试端口,在SWJ-DP中,SW-DP的2个JTAG引脚与JTAG-DP的5个JTAG引脚中的部分引脚豆用.JTAG与SWD的切换机制:戕认调试接口是JTAG接口,如果调试工具想要切换到SW-DP,它必须在THS/TCK(分别映射到SWD1.O和SBC1.K)上提供专用的JTAG序列,用于禁止JTAGT)P并使能SWT)P。这样便可仅使用SWC1.K和SWDIO引脚来激活SNDP.该序列为:山16个TMS(SWDIO)信号0111100111100111(MSB)3,输出超过50个TCK周期的TMS(SWDIO)-1信号SW协议序列每个序列包括
4、三个阶段: 主机发送的数据包请求8位 目标发送的确认响应(3位) 主机或目标发送的数据传输阶段33位)数据包请求(8位):粒说明O4f1.1.1.1APnDPO:DP访何1;AP询H2RnWOSti*.It常请求4:3732)DPAAP。04的电缗5面几位的小位分儡合险6停止0_7ft*不受机。动.由存在上拉.因此必聂1t.ACK响应(3位):ft名称说明0.2ACK1:FAU1.T010:WAIT1:OKDATA传输(33位)位名郦说明031WDATA或RDATA写入或请取数粼32奇仪校关32个攻IK位的软奇铸校於这种类似于寄存器的一NBit位操作,底层的一屿原理与普通的通信协议也有类似之处
5、SW-DP状态SW-DP的状态机有一个用于标识SW-DP的内部ID代码,其中主要包含的状态:豆位、空闲状态、ID代码等. 在上电复位后、DP从JTAG切换到SWD后或者规路处于高电平超过50个冏期后,SW-DP状态机处于Ii位状态。 如果在复位状态后线路处于低电平至少两个周期,SW-DP状态机处于空国状态. 更位状态后,该状态机必须首先进入空闲状态,然后对DP-SWIDCODE寄存器执行读访问.否则,目标将在另一个事务上发出FAU1.T确认响应。SW-DP状态机的更多详细信息,可以参看CorIeX-M相关的一些手册。SW-DP寄存器SWD类似普通外设,也是有一种寄存器,开发者进行的编程(读写)操作,其实就是操作对应的寄存器。WFRZWSe1.ECTfRctr1.m1.w存ttOOIDCOOey代为SY价.8231477H-1.1.UMrfft-(C5&ft电队011WIRECONTRO1.!fnvwt4iwi侵SxmNWM10*READRESOe十种*u1.MCWM*M.上万AP代10SE1.fcCT*1”,雄的,?1111UfERfAOBUFFTR1dHAPM.M信祥两MBItC91aar卜个2务”94依3本力*)ft*MM三taivn