SWD、SWO、SWD的含义
发布: 2010-1-17 21:04 | 作者: binglin | 来源: StmFans思蜕盟 OPELC 自由电子联盟
以下内容转自IAR官方网页:
Serial Wire Debug (SWD)
SWD为pin有限的应用提供了一个调试的端口,主要是面向small package的微控制器,也面向复杂的ASICs—pin数量有限并且成本控制的应用。
SWD使用一个时钟+双向数据管脚来取代5-pin的JTAG端口,提供了所有的通用的JTAG调试和测试功能,并且增加了:在没有中断内核以及没有增加额外的代码的情况下,对系统内存的实时访问。SWD使用了一个ARM标准的双向有线协议,这已在ARM Debug Interface v5中定义。SWD在调试器和目标系统之间用一种高效标准的方式互相传送数据。它是ARM-based设备的标准接口。
只需要两个pin—对low connectivity devices或packages非常重要。
提供了一个与JTAG TAP controllers调试和测试的通信方式。
使得调试器成为另外一个AMBA bus master,用来访问系统内存以及外设和调试寄存器。
高性能数据率-640Kbytes/sec@8MHz
低能耗-不需要额外的电源或者地的管脚。
很小的硅面积-2.5额外的门。
可靠性
安全性-当工具没有连接的时候,可以起到保护的作用,预防管脚的差错。
SWD提供了一种简单可靠的从JTAG的移植,只需在TMS和TCK管脚上覆盖SWDIO和SWCLK信号,允许双模的设备,这可以提供另外的JTAG信号。在SWD模式中,这些额外的JTAG管脚可被用来作其他的用途。
SWD和所有的ARM核以及所有的使用JTAG的核兼容,并且在Cortex核以及CoreSight调试架构中提供了对调试寄存器的访问。
SWO:
J-Link可以用来和支持Serial Wire Output(SWO)的硬件一起调试工作。支持Serial Wire Output(SWO)意思是指支持从core引出一个pin的输出信号。这个功能目前只在Cortex-M3上测试通过。 它这意味着更快的传输速度,并且不会中断程序的执行。
Serial Wire Viewer(SWV)
Instrumentation Trace Macrocell(ITM)和Serial Wire Output(SWO)可以用来共同构成一个Serial Wire Viewer(SWV)。SWV提供了一种低成本的从MCU获得信息的方法。SWO可用两种格式输出调试信息,但在一个时间只能输出一种格式的调试信息。这两种编码方式是UART和曼彻斯特编码。SWV使用SWO pin来传输不同的信息包。在Cortex-M3 Core中,有三种源信息可以通过此pin来传输:
对应用驱动跟踪源(支持printf格式的调试)的ITM,它支持32路通道,使得其可以用于例如real-time kernal信息的其他用途。
对实时变量的监测以及PC-sampling的Data Watchpoint和Trace(DWT),这可以用来定时的输出PC或者CPU内部不同计数器的值,可以用来从目标板获得分析信息。
Timestamping。和包有关的Timestamping。
二:在IAR Embedded Workbench中的配置及功能
Connection
在IAR Embedded Workbench IDE中,打开Project>options,选择J-Link/J-Trace,点击Connection,如图:
Interface
使用这个选项来指定J-Link与目标系统之间的通信接口,在下面两者之间选择:
1. JTAG(默认)
2. SWD: 使用比JTAG更少的管脚。如果你使用serial-wire output(SWO)信道的话,选择SWD。注意,如果在General Options>Library Configuration页面,通过SWO使用sddout/stderr,SWD将会被自动选择。
SWO Setup对话框
使用SWO Setup对话框(通过J-Link菜单打开),来设置serial-wire output信道。
注意:设置对话框要求在J-Link和目标系统之间使用SWD接口。
CPU clock
Serial Wire Debug (SWD)
SWD为pin有限的应用提供了一个调试的端口,主要是面向small package的微控制器,也面向复杂的ASICs—pin数量有限并且成本控制的应用。
SWD使用一个时钟+双向数据管脚来取代5-pin的JTAG端口,提供了所有的通用的JTAG调试和测试功能,并且增加了:在没有中断内核以及没有增加额外的代码的情况下,对系统内存的实时访问。SWD使用了一个ARM标准的双向有线协议,这已在ARM Debug Interface v5中定义。SWD在调试器和目标系统之间用一种高效标准的方式互相传送数据。它是ARM-based设备的标准接口。
只需要两个pin—对low connectivity devices或packages非常重要。
提供了一个与JTAG TAP controllers调试和测试的通信方式。
使得调试器成为另外一个AMBA bus master,用来访问系统内存以及外设和调试寄存器。
高性能数据率-640Kbytes/sec@8MHz
低能耗-不需要额外的电源或者地的管脚。
很小的硅面积-2.5额外的门。
可靠性
安全性-当工具没有连接的时候,可以起到保护的作用,预防管脚的差错。
SWD提供了一种简单可靠的从JTAG的移植,只需在TMS和TCK管脚上覆盖SWDIO和SWCLK信号,允许双模的设备,这可以提供另外的JTAG信号。在SWD模式中,这些额外的JTAG管脚可被用来作其他的用途。
SWD和所有的ARM核以及所有的使用JTAG的核兼容,并且在Cortex核以及CoreSight调试架构中提供了对调试寄存器的访问。
SWO:
J-Link可以用来和支持Serial Wire Output(SWO)的硬件一起调试工作。支持Serial Wire Output(SWO)意思是指支持从core引出一个pin的输出信号。这个功能目前只在Cortex-M3上测试通过。 它这意味着更快的传输速度,并且不会中断程序的执行。
Serial Wire Viewer(SWV)
Instrumentation Trace Macrocell(ITM)和Serial Wire Output(SWO)可以用来共同构成一个Serial Wire Viewer(SWV)。SWV提供了一种低成本的从MCU获得信息的方法。SWO可用两种格式输出调试信息,但在一个时间只能输出一种格式的调试信息。这两种编码方式是UART和曼彻斯特编码。SWV使用SWO pin来传输不同的信息包。在Cortex-M3 Core中,有三种源信息可以通过此pin来传输:
对应用驱动跟踪源(支持printf格式的调试)的ITM,它支持32路通道,使得其可以用于例如real-time kernal信息的其他用途。
对实时变量的监测以及PC-sampling的Data Watchpoint和Trace(DWT),这可以用来定时的输出PC或者CPU内部不同计数器的值,可以用来从目标板获得分析信息。
Timestamping。和包有关的Timestamping。
二:在IAR Embedded Workbench中的配置及功能
Connection
在IAR Embedded Workbench IDE中,打开Project>options,选择J-Link/J-Trace,点击Connection,如图:
Interface
使用这个选项来指定J-Link与目标系统之间的通信接口,在下面两者之间选择:
1. JTAG(默认)
2. SWD: 使用比JTAG更少的管脚。如果你使用serial-wire output(SWO)信道的话,选择SWD。注意,如果在General Options>Library Configuration页面,通过SWO使用sddout/stderr,SWD将会被自动选择。
SWO Setup对话框
使用SWO Setup对话框(通过J-Link菜单打开),来设置serial-wire output信道。
注意:设置对话框要求在J-Link和目标系统之间使用SWD接口。
CPU clock


很早就完成了为OpenOCD增加的SWD功能,不过他们也才最近才开始准备在trunk中加入
之后空下来会研究一下这个SWO用于调试信息的输出