基于SWD协议的ISP技术研究与应用*
2021-08-06刘浪华
王 宇,刘浪华
(中国电子科技集团公司第三十研究所,四川 成都 610041)
0 引 言
目前嵌入式领域的主流产品在研发阶段主要通过仿真器对微处理器进行程序的仿真验证,生产阶段通过专用联合测试工作组(Joint Test Action Group,JTAG)烧录器完成芯片固件烧录,基本不涉及后期固件的升级维护。一旦固件程序在应用上存在漏洞,只能将设备返厂维修,导致产品后期维护费用居高不下。通过结合串行调试(Serial Wire Debug,SWD)串行调试技术和在线系统编程(In-System Programming,ISP)技术,能够解决设备后期维护不便的问题。
SWD技术支持所有可通过JTAG接口进行调试的ARM Cortex A/R/M系列处理器和具有CoreSight调试架构的ARM芯片[1],包括德州仪器(Texas Instrument,TI)、 恩 智 浦(NXP Semiconductors)、Atmel、Samsung等厂家的芯片,以及意法半导体(STMicroelectronics,STM)公司STM32系列微处理器等。
1 SWD协议原理研究
SWD串行调试由一个双向数据线和单向时钟线组成实现数据的同步传输,可替代JTAG调试。时钟频率为50 MHz时数据传输速率可达4 MB/s,较少的印制电路板(Printed Circuit Board,PCB)布局布线资源便可实现低功耗低成本应用[2]。SWD协议实现芯片资源的交互流程如图1所示。
1.1 SWD接口协议
SWD操作流程主要分为3个阶段:数据请求包REQ、应答数据包ACK与数据读写传输包[3]。表1列举了SWD接口交互流程的主要关键字信息。

表1 SWD协议关键词
SWD的写操作由1 byte请求包、3 bit应答包与33 bit的写数据组成,一次完整的写操作如图2所示。
SWD的读操作由1 byte的请求包、3 bit的应答包与33 bit的读数据组成,应答包与读数据包间无Turn周期,一次完整的读操作如图3所示。
SWD中DP寄存器组成见表2,其中ID标识寄存器用于验证SWD操作时序,获取ARM调试接口信息等,低12位固定为0×477,主要构成如图4所示。……
