第 5 章 psoc 编程和调试接口功能

53
5 5 PSoC PSoC 第第第第第第第第第 第第第第第第第第第 第第 第第 2011.12 2011.12

Upload: cleave

Post on 13-Jan-2016

104 views

Category:

Documents


0 download

DESCRIPTION

第 5 章 PSoC 编程和调试接口功能. 何宾 2011.12. 本章内容. 本章主要介绍 PSoC3 的编程和调试接口功能,其 内容主要包括: 测试控制器的模块结构和连接器接口; JTAG 和 SWD 接口的工作原理; PSoC3 的 JTAG 和 SWD 接口的工作原理; 8051 的片上调试模块( DoC ); 非易失性存储器的编程。. 测试控制器 -- 测试控制器模块结构. PSoC3 结构包括一个测试控制器,主要用于下面 的目的: 用于边界扫描测试访问 I/O 引脚; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 5 章   PSoC 编程和调试接口功能

第第 55 章 章 PSoCPSoC 编程和调试接口功能编程和调试接口功能

何宾何宾2011.122011.12

Page 2: 第 5 章   PSoC 编程和调试接口功能

本章内容本章内容

本章主要介绍本章主要介绍 PSoC3PSoC3 的编程和调试接口功能,其的编程和调试接口功能,其内容主要包括:内容主要包括:

测试控制器的模块结构和连接器接口;测试控制器的模块结构和连接器接口; JTAGJTAG 和和 SWDSWD 接口的工作原理;接口的工作原理; PSoC3PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理;接口的工作原理; 80518051 的片上调试模块(的片上调试模块( DoCDoC );); 非易失性存储器的编程。非易失性存储器的编程。

Page 3: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 测试控制器模块结构测试控制器模块结构

PSoC3PSoC3 结构包括一个测试控制器,主要用于下面结构包括一个测试控制器,主要用于下面的目的:的目的:

用于边界扫描测试访问用于边界扫描测试访问 I/OI/O 引脚;引脚; 通过通过 PSoC3PSoC3 的片上调试的片上调试 DoCDoC 模块来访问芯片的存储器和寄模块来访问芯片的存储器和寄存器。存器。

Page 4: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 测试控制器模块结构测试控制器模块结构

测试控制器通过边界扫描端口(测试控制器通过边界扫描端口( Joint Test Action Joint Test Action

GroupGroup ,, JTAGJTAG )或者串行调试()或者串行调试( Serial Wire DebugSerial Wire Debug ,,SWDSWD )接口连接到片外设备。测试控制器包含下面的特)接口连接到片外设备。测试控制器包含下面的特性:性:

支持到调试主机的支持到调试主机的 JTAGJTAG 或者或者 SWDSWD 接口;接口; SWDSWD 接口可以使用接口可以使用 GPIOGPIO 或者或者 USBUSB 引脚;引脚; 支持边界扫描支持边界扫描 IEEEIEEE 标准标准 1149.1-2001“Test Access Port and Bou1149.1-2001“Test Access Port and Bou

ndary-Scan Architecture”ndary-Scan Architecture” ;; 支持额外的支持额外的 JTAGJTAG 指令指令 // 寄存器,用于访问芯片的剩余部分;寄存器,用于访问芯片的剩余部分; 与与 PSoC3PSoC3 的调试模块接口用于访问芯片的剩余部分用于编程的调试模块接口用于访问芯片的剩余部分用于编程和调试操作;和调试操作;

Page 5: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 测试控制器模块结构测试控制器模块结构

如下图,如下图, PSoC3PSoC3 测试控制器将测试控制器将 JTAGJTAG 或者或者 SWDSWD 访问转访问转换成换成 DoCDoC 模块内寄存器的访问。模块内寄存器的访问。

图 PSoC3 测试控制器模块图

Page 6: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 连接器接口连接器接口

11 .. 55 针连接器针连接器 如下图所示,如下图所示, 55 针连接器配置成单排,每针之间间隔针连接器配置成单排,每针之间间隔为为 100mil100mil 。。

图 5 针连接器

Page 7: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 连接器接口连接器接口

22 .. 1010 针连接器针连接器 如下图所示,如下图所示, 1010 针连接器配置成双排,每针之间间针连接器配置成双排,每针之间间

隔隔为为 50mil50mil 。。

图 10 针连接器

Page 8: 第 5 章   PSoC 编程和调试接口功能

测试控制器测试控制器---- 连接器接口连接器接口

表 不同通信协议的引脚分配

协议 信号 5 针 10 针ISSP SCLK 4

SDAT 5

XRES 3

JTAG TMS 2

TCK 4

TDO 6

TDI 8

XRES 10

SWD/SWV SDIO 5 2

SCK 4 4

SWV 6

XRES 3 10

I2C SCK 4

SDA 5

Page 9: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

为了应对为了应对 ICIC 芯片日益增加的高引脚密度,联合行芯片日益增加的高引脚密度,联合行动测试小组(动测试小组( Joint Test Action GroupJoint Test Action Group ,, JTAGJTAG )提供)提供

了一了一个用于测试电路板的方法,这个方法就是通过一个独立个用于测试电路板的方法,这个方法就是通过一个独立的测试接口来控制的测试接口来控制 ICIC 的引脚(和读取它们的值)。的引脚(和读取它们的值)。 这个解决方案就是后来的这个解决方案就是后来的 IEEE1149.1-2001IEEE1149.1-2001 标准,标准,这个标准基于一个概念,即使用一个布线贯穿所有这个标准基于一个概念,即使用一个布线贯穿所有 ICIC 引引脚的移位寄存器(这也叫做边界扫描)。每个引脚上都脚的移位寄存器(这也叫做边界扫描)。每个引脚上都有一个边界扫描单元。在有一个边界扫描单元。在 PSoC3PSoC3 中,大部分的中,大部分的 GPIOGPIO 和和SIOSIO 端口引脚都有边界扫描单元。端口引脚都有边界扫描单元。

Page 10: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

用于控制边界扫描单元值的接口叫做测试访问端口用于控制边界扫描单元值的接口叫做测试访问端口(( Test Access PortTest Access Port ,, TAPTAP ),也就是经常所说的),也就是经常所说的 JTAGJTAG

接接口。口。 JTAGJTAG 接口由:接口由:

测试数据输入(测试数据输入( TDITDI );); 测试数据输出(测试数据输出( TDOTDO );); 测试模式选择测试模式选择 (TMS)(TMS) ;; 测试时钟信号(测试时钟信号( TCKTCK )和其它信号构成。)和其它信号构成。

下图给出了下图给出了 JTAGJTAG 连接多个连接多个 ICIC 芯片的结构。 芯片的结构。

Page 11: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

下图给出了下图给出了 JTAGJTAG 接口的内部结构。接口的内部结构。

图 JTAG 内部结构

Page 12: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

如下图,如下图, TMSTMS 信号控制信号控制 TAPTAP 的状态机,状态机控制的状态机,状态机控制哪个寄存器(包括边界扫描通路)在哪个寄存器(包括边界扫描通路)在 TDI-TDOTDI-TDO 移位通移位通路上。路上。

图 TAP 状态机

Page 13: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

其中:其中:

11 )) irir :是指令寄存器;:是指令寄存器; 22 )) drdr :其它寄存器中的一个(包括边界扫描路径),由:其它寄存器中的一个(包括边界扫描路径),由指令寄存器的内容确定;指令寄存器的内容确定;

33 )) capturecapture :将:将 drdr 寄存器的内容传输到移位寄存器中,寄存器的内容传输到移位寄存器中,然后移出然后移出 TDOTDO ;;

44 )) updateupdate :传输移位寄存器的内容,从:传输移位寄存器的内容,从 TDITDI 移入到一个移入到一个drdr ;;

Page 14: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

TAPTAP 内的寄存器包含:内的寄存器包含: 11 )) InstructionInstruction :: 2-42-4 位宽,存放当前指令,该指令定义了位宽,存放当前指令,该指令定义了

在在 TDI-TDOTDI-TDO 移位通道上的数据寄存器,引起设备被旁路移位通道上的数据寄存器,引起设备被旁路用于用于 JTAGJTAG 模式;模式;

22 )) BypassBypass :: 11 位宽度,位宽度, TDITDI 和和 TDOTDO 直接连接;直接连接; 33 )) IDID :: 3232 位宽,用于读位宽,用于读 JTAGJTAG 的制造商的制造商 // 芯片的芯片的 IDID 号;号; 44 )) Boundary Scan PathBoundary Scan Path (( BSRBSR ):宽度等于):宽度等于 I/OI/O 引脚引脚(有边界扫描单元)的数量,用于设置或者读写这些(有边界扫描单元)的数量,用于设置或者读写这些 I/OI/O引脚的状态;引脚的状态;

Page 15: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

在在 IEEE1149IEEE1149 中,给出了标准的指令集:中,给出了标准的指令集: 11 )) EXTESTEXTEST :该指令将使得:该指令将使得 TDITDI 和和 TDOTDO 连接到边界连接到边界

扫扫描通路上(描通路上( BSRBSR ),芯片将从普通操作模式改变为测试模),芯片将从普通操作模式改变为测试模式。芯片引脚的状态可以使用式。芯片引脚的状态可以使用 capture drcapture dr 的的 JTAGJTAG 状态进行状态进行采样,使用采样,使用 updata drupdata dr 状态新的值可以用于芯片引脚上状态新的值可以用于芯片引脚上。。

Page 16: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

22 )) SAMPLESAMPLE :该指令将使得:该指令将使得 TDITDI 和和 TDOTDO 连接到边连接到边界扫描通路上(界扫描通路上( BSRBSR ),但是芯片仍然处于普通操作模),但是芯片仍然处于普通操作模式。使用该指令,式。使用该指令, BSRBSR 可以使用可以使用 capture drcapture dr 的的 JTAGJTAG 状态状态

进进行读取,对进入的功能数据进行采样,然后移出芯片。行读取,对进入的功能数据进行采样,然后移出芯片。 33 )) PERLOADPERLOAD :该指令将使得:该指令将使得 TDITDI 和和 TDOTDO 连接到连接到

边边界扫描通路上(界扫描通路上( BSRBSR ),但是芯片仍然处于普通操作模),但是芯片仍然处于普通操作模式。该指令用于在加载式。该指令用于在加载 EXTESTEXTEST 指令前,预加载测试数指令前,预加载测试数据到据到 BSRBSR 。。

Page 17: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--JTAG--JTAG 工作原理工作原理

下面给出了可选的指令:下面给出了可选的指令: 11 )) IDCODEIDCODE :该指令使得:该指令使得 TDITDI 和和 TDOTDO 线连接到线连接到IDCODEIDCODE 寄存器。寄存器。 22 )) INTESTINTEST :该指令将使得:该指令将使得 TDITDI 和和 TDOTDO 连接到连接到

边界边界扫描通路上(扫描通路上( BSRBSR )。当)。当 EXTESTEXTEST 指令允许访问芯片指令允许访问芯片

引脚引脚时,时, INTESTINTEST 能访问芯片内核逻辑的信号。能访问芯片内核逻辑的信号。

Page 18: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

SWDSWD 接口是由接口是由 ARMARM 公司开发出来的,目的是减公司开发出来的,目的是减少少

调试接口所使用的引脚数。调试接口所使用的引脚数。 SWDSWD 接口使用两个信号接口使用两个信号线:双向的数据线(线:双向的数据线( SWDIOSWDIO )和用于数据线的时钟)和用于数据线的时钟

信信号(号( SWDCKSWDCK )。)。

Page 19: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

SWDSWD 的每个数据传输由的每个数据传输由 2/32/3 个周期组成:个周期组成: 11 )包请求()包请求( Packet RequestPacket Request ):外部主机调试器向目标):外部主机调试器向目标设备发送一个包请求信号;设备发送一个包请求信号;

22 )确认响应()确认响应( Acknowledge ResponseAcknowledge Response ):目标设备向主):目标设备向主机发送一个响应信号;机发送一个响应信号;

33 )数据()数据( DataData ):当包请求跟一个确认响应后,传输数):当包请求跟一个确认响应后,传输数据:据:

目标设备到主机目标设备到主机 -- 读请求后为读请求后为 -RDATA-RDATA ;; 主机到目标设备主机到目标设备 -- 写请求后为写请求后为 -WDATA-WDATA ;;

Page 20: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

下图给出了一个下图给出了一个 SWDSWD 写时序图写时序图。。

图 SWD 写

Page 21: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

下图给出了一个下图给出了一个 SWDSWD 读时序图。读时序图。

图 SWD 读

Page 22: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

下面对下面对 SWDSWD 的读的读 // 写序列进行介绍:写序列进行介绍:

11 )开始位(逻辑‘)开始位(逻辑‘ 1’1’ )初始化传输;)初始化传输; 22 )) APnDPAPnDP 位确定传输是一个访问端口访问(逻辑位确定传输是一个访问端口访问(逻辑‘‘ 1’1’ ),),

还是一个调试端口访问(逻辑‘还是一个调试端口访问(逻辑‘ 0’0’ )。)。 33 )下一比特为)下一比特为 RnWRnW ,‘,‘ 1’1’ 表示从设备读;‘表示从设备读;‘ 0’0’ 表示设表示设备写;备写;

44 )) ADDADD 为寄存器选择位,用于选择访问端口或者调试端为寄存器选择位,用于选择访问端口或者调试端 口;口;

Page 23: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

55 )) ParityParity 位是对位是对 APnDPAPnDP ,, RnWRnW 和和 ADDRADDR 的奇偶校验位。的奇偶校验位。如果这些位域的逻辑‘如果这些位域的逻辑‘ 1’1’ 的个数为奇数,则该位为‘的个数为奇数,则该位为‘ 1’1’ ;;否则为‘否则为‘ 0’0’ 。。

如果奇偶位不正确,忽略头部(如果奇偶位不正确,忽略头部( headerheader ),没有),没有 ACKACK 响应;响应; 当主机检测到头部被忽略,在进行另外一次传输时,必须等待一个完当主机检测到头部被忽略,在进行另外一次传输时,必须等待一个完整的读传输时间。整的读传输时间。

66 )停止位为逻辑‘)停止位为逻辑‘ 0’0’ ;; 77 )) ParkPark :该位不是由主机驱动,:该位不是由主机驱动, SWDSWD 接口将信号线拉高,接口将信号线拉高,设备(芯片)读取该位为逻辑‘设备(芯片)读取该位为逻辑‘ 1’1’ ;;

88 )) ACKACK :为设备到主机的响应。表:为设备到主机的响应。表 7.27.2 给出了可能的值。给出了可能的值。

Page 24: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--SWD--SWD 工作原理工作原理

9 )地址, ACK 和读 /写数据总是从最低位开始传输。 SWD 接口在 50多个时钟周期复位,此时 SWDIO 为高。

表 SWD 接口可能的 ACK 位值

ACK Code 意义100 OK- 承认头部,后面跟着数据;010 WAIT- 以前的传输仍然正在被处理,主机应该重试;001 FAULT- 在调试端口控制 / 状态寄存器设置的一个默认标志。

Page 25: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理 11 .时钟.时钟 JTAGJTAG 接口的接口的 TCKTCK 时钟和时钟和 SWDSWD 接口的接口的 SWDCLKSWDCLK 时钟共时钟共享芯片的享芯片的 P1[1]P1[1] 引脚(一个可替换的引脚(一个可替换的 SWDCKSWDCK 时钟能输入到时钟能输入到USB D-USB D- 引脚,引脚, P15[7]P15[7] )。时钟频率在)。时钟频率在 1MHz1MHz 和和 CPU_CLK/2CPU_CLK/2 或者或者 25MHz25MHz 。。 22 .. PSoC3PSoC3 的的 JTAGJTAG 指令指令 PSoC3 JTAGPSoC3 JTAG 接口与接口与 IEEE1149.1-2001IEEE1149.1-2001 规范兼容,同规范兼容,同时提供了额外的指令。指令寄存器为时提供了额外的指令。指令寄存器为 44 比特宽度。下表给比特宽度。下表给出了出了 PSoC3PSoC3 额外的额外的 JTAGJTAG 指令。指令。

Page 26: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

表 PSoC3 额外的 JTAG 指令

位代码 指令 PSoC3 功能1111 BYPASS 参考 IEEE1149.1-2001

1110 IDCODE 参考 IEEE1149.1-2001

0010 SAMPLE/PRELOAD

参考 IEEE1149.1-2001

0000 EXTEST 参考 IEEE1149.1-2001

0100 INTEST 与 EXTEST 一样

Page 27: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

位代码 指令 PSoC3 功能0101 CLASMP 将 TDI 和 TDO 连接到 BYPASS 寄存器,设置引脚到边界扫

描寄存器的当前内容1010 DPACC 连接 TDI 和 TDO 到 DP/AP 寄存器,用于访问调试端口寄存

器1011 APACC 连接 TDI 和 TDO 到 DP/AP 寄存器,用于访问访问端口寄存

器1000 ABORT 只存在 PSoC5 ,退出当前的 AP 访问指令。连接 TDI 和 TD

O 到 DP/AP 寄存器,1100 SLEEP 通知 PSoC3/5 电源管理器,如果必要的话,切断测试控制器

TC 的电源。如果不设置该指令,则不能进入 SLEEP 。

Page 28: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

33 .. DP/APDP/AP 访问寄存器访问寄存器 PSoC3PSoC3 有一个有一个 3535 位宽的位宽的 DP/APDP/AP 访问寄存器,该寄访问寄存器,该寄存器用于在存器用于在 JTAG/SWDJTAG/SWD 接口和调试接口和调试 // 访问端口寄存器之访问端口寄存器之间进行数据传输。间进行数据传输。 SWDSWD 直接读直接读 // 写写 DP/APDP/AP 寄存器;寄存器; JTJT

AGAG使用使用 DPACCDPACC 和和 APACCAPACC 指令读指令读 // 写 写 DP/APDP/AP 寄存器。寄存器。 在在 JTAG updata dr JTAG updata dr 状态或者从状态或者从 SWDSWD 接口写到寄存接口写到寄存器,下表给出了器,下表给出了 DP/APDP/AP 寄存器的结构。寄存器的结构。

表 DP/AP 寄存器的结构

DATAIN[31:0] A[3:2] (访问端口 / 调试端口的地址) RnW

Page 29: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

注:注: 11 )) [34:3][34:3] 位:位: 3232 个数据位,如果端口寄存器小于个数据位,如果端口寄存器小于 33

22 位位宽度,只传输最低的宽度,只传输最低的 NN (位宽度)比特。(位宽度)比特。 22 )) [2:1][2:1] 位:位: 22 位地址位,用于调试和访问端口寄存位地址位,用于调试和访问端口寄存

器器的选择的选择 33 )) [0][0] 位:‘位:‘ 1’1’ 读,‘读,‘ 0’0’ 写;写;

Page 30: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

在 JTAG capture dr 状态下或者从 SWD 接口读数据

时,下表给出了读寄存器的格式。 表 读寄存器的格式ReadResult[31:0] ACK[2:0]

1 ) [34:3] 位: 32 位数据,如果端口寄存器小于 32 位宽度,只传输最低的 N (位宽度)比特。 2 ) [2:0] 位: ACK 确认符 - 取决于接口,下表给出了JTAG/SWD 接口的 ACK 响应。

表 JTAG/SWD 接口的 ACK 响应ACK JTAG SWD

OK 010 001

WAIT 001 010

Page 31: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

4 . JTAG/SWD 地址( PSoC3 ) 在 PSoC3 结构中, JTAG/SWD 接口所传输的两位地址,用来访问调试端口,访问端口和 I/O 代码寄存器。下表给出了 JTAG/SWD 地址。

表 JTAG/SWD 地址

地址 DPACC ( APnDP=0 ) APACC(APnDP=1)

00 IDCODE (只有 SWD ) -

01 DBGPRT_CFG TRNS_ADDR

10 - -

11 - DATA_RW

Page 32: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理 5 .调试端口和访问端口寄存器 (PSoC3) 下表给出来的寄存器都是可读 / 写的,除了DBGPRT_CFG 寄存器的第 7 位。

表 调试端口和访问端口寄存器

名字指令

( AP/DP)

地址(选择寄存器)

大小( 比特 )

功能

DBGPRT_CFG DPACC 01 8 调试端口配置寄存器 - 传输大小 (8,16,32), 自动递增 TRNS_ADDR ,检测 / 清除写错误

TRNS_ADDR APACC 01 24 传输地址DATA_RW APACC 11 32 从在 TRNS_ADDR 的地址写

入 / 读出数据

Page 33: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

66 .. PSoC3PSoC3 寄存器访问实例寄存器访问实例 下面给出使用下面给出使用 JTAGJTAG 或者或者 SWDSWD 接口访问接口访问 8051 xdata8051 xdata 空空

间间的方法。假设地址的值为的方法。假设地址的值为 0xADD8E50xADD8E5 。。 11 )使用)使用 JTAGJTAG 写地址值到写地址值到 TRNS_ADDRTRNS_ADDR 寄存器,调试寄存器,调试主机必须:主机必须:

将将 APACCAPACC 指令移入到指令寄存器;指令移入到指令寄存器; 移动移动 00 (写),后面跟“(写),后面跟“ 01”01” (选择访问端口寄存器),后面跟(选择访问端口寄存器),后面跟

0x00ADD8E50x00ADD8E5 ,到,到 3535 位的位的 DP/APDP/AP 寄存器;寄存器; 进入进入 JTAG update drJTAG update dr 状态;状态;

Page 34: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3--PSoC3 的的 JTAGJTAG 和和 SWDSWD 接口的工作原理接口的工作原理

22 )使用)使用 SWDSWD 写地址值到写地址值到 TRNS_ADDRTRNS_ADDR 寄存器,调寄存器,调试主机必须:试主机必须:

发送一个请求包,发送一个请求包, APnDP=1APnDP=1 ,, RnW=0RnW=0 ,, ADDR=01ADDR=01 ;; 得到来自得到来自 PSoC3PSoC3 的的 ACKACK 响应;响应; 在数据周期,发送在数据周期,发送 0x00ADD8E50x00ADD8E5 。。

33 )写值)写值 0xDA0xDA 到地址到地址 0x00ADD8E50x00ADD8E5 :: 类似前面步骤,写类似前面步骤,写 0x00ADD8E50x00ADD8E5 到到 TRNS_ADDRTRNS_ADDR 寄存器;寄存器; 类似前面步骤,写类似前面步骤,写 0x000000DA0x000000DA 到到 DATA_RWDATA_RW 寄存器(地寄存器(地

址为址为 1111 ,而不是,而不是 0101 );); 测试控制器初始化写传输请求到测试控制器初始化写传输请求到 PSoC3PSoC3 ;;

Page 35: 第 5 章   PSoC 编程和调试接口功能

JTAGJTAG 与与 SWDSWD 接口的工作原理接口的工作原理--PSoC3/5--PSoC3/5 的的 JTAGJTAG 和和 SWDSWD 接口的工作原接口的工作原

理理

44 )从地址)从地址 0x00ADD8E50x00ADD8E5 读数:读数: 类似前面步骤,写类似前面步骤,写 0x00ADD8E50x00ADD8E5 到到 TRNS_ADDRTRNS_ADDR 寄存器;寄存器; 类似前面步骤,读类似前面步骤,读 DATA_RWDATA_RW 寄存器(地址为寄存器(地址为 1111 ,而不是,而不是

0101 ,, RnW=’1’RnW=’1’ );); 测试控制器初始化读传输请求到测试控制器初始化读传输请求到 PSoC3PSoC3 ,从,从 DATA_RWDATA_RW 读读取的数是无效的;取的数是无效的;

等待至少等待至少 55 个个 TCK/SWDCKTCK/SWDCK 时钟周期,避免时钟周期,避免 WAITWAIT 响应;响应; 再读再读 DATA_RWDATA_RW 寄存器。数据现在是有效的寄存器。数据现在是有效的。。

Page 36: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 片上调试模块及特点片上调试模块及特点

下图给出了下图给出了 80518051 的片上调试器模块结构图。的片上调试器模块结构图。

图 8051 片上调试模块结构

Page 37: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 片上调试模块及特点片上调试模块及特点

DOCDOC 能接管能接管 8051 CPU8051 CPU ,并且使用,并且使用 PHUBPHUB 接口接口访问访问任何任何 CPUCPU 可以访问的地址。该模块的特点主要有: 可以访问的地址。该模块的特点主要有:

通过通过 JTAG/SWDJTAG/SWD 访问的访问的 TCTC 接口;接口; 访问访问 CPUCPU 的内部存储器和的内部存储器和 SFRSFR ,程序计数器,程序计数器 PCPC ;; CPUCPU 停止;停止; CPUCPU 单步;单步; 88 个程序地址断点;个程序地址断点; 11 个存储器访问断点;个存储器访问断点; 看门狗触发断点;看门狗触发断点; 断点链接;断点链接;

Page 38: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 片上调试模块及特点片上调试模块及特点

跟踪跟踪 CPUCPU 指令执行:指令执行: 跟踪跟踪 CPUCPU 的程序计数器的程序计数器 PCPC ,, ACCACC 和和 CPUCPU 内部存内部存储器或储器或 SFRSFR 的一个字节;的一个字节;

20482048 个指令跟踪缓冲区(如果只跟踪个指令跟踪缓冲区(如果只跟踪 PCPC )) 10241024 个指令跟踪缓冲区(如果跟踪个指令跟踪缓冲区(如果跟踪 PCPC ,, ACCACC 和和 CC

PUPU 内部存储器或内部存储器或 SFRSFR 的一个字节);的一个字节); 连续,触发或者窗口模式;连续,触发或者窗口模式; 当跟踪缓冲区满时,当跟踪缓冲区满时, CPUCPU 停止或者覆盖以前的值;停止或者覆盖以前的值; 当不跟踪时,跟踪缓冲区作为普通当不跟踪时,跟踪缓冲区作为普通 SRAMSRAM ;;

Page 39: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 片上调试模块及特点片上调试模块及特点

SWVSWV具有下面的特点:具有下面的特点:

3232 个激励端口寄存器;个激励端口寄存器;简单,高效封装和串行化协议;简单,高效封装和串行化协议;两针输出模式,两针输出模式, UARTUART 或者曼彻斯特编码方式或者曼彻斯特编码方式;;

Page 40: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

除了除了 DoCDoC 外,外, PSoCPSoC还包括一个串行线察看器模块还包括一个串行线察看器模块(( Serial WireViewerSerial WireViewer ,, SWVSWV )。)。 SWVSWV 允许目标驻留代码将允许目标驻留代码将诊断信息通过单线传送到外部。使用例子包括数据监视,诊断信息通过单线传送到外部。使用例子包括数据监视,察看察看 OSOS任务切换,任务切换, PrintfPrintf 调试和调用图形化性能统计和分调试和调用图形化性能统计和分析(析( profilingprofiling )。)。 SWDSWD 输出通过输出通过 TCTC 到到 SWVSWV 引脚。引脚。 SWVSWV 和和 JTAGTDOJTAGTDO

信信号共享一个引脚。连接引脚到号共享一个引脚。连接引脚到 SWVSWV ,设置,设置 SWDSWD 模式,模式, NVNV

锁存位在复位时,决定锁存位在复位时,决定 JTAG/SWDJTAG/SWD 接口引脚的状态。接口引脚的状态。

Page 41: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

SWVSWV 是由两个是由两个 CoreSightTMCoreSightTM 元件组成(元件组成( ARMARM 开发开发的),这两个元件为仪器跟踪宏单元(的),这两个元件为仪器跟踪宏单元( Instrumentation Instrumentation Trace MacrocellTrace Macrocell ,, ITMITM )和串行线输出()和串行线输出( Serial Wire Serial Wire OutputOutput ,, SWOSWO )。这些元件有多个数据、控制和状态寄存)。这些元件有多个数据、控制和状态寄存器。器。 11 )曼彻斯特编码)曼彻斯特编码 在该协议下,在该协议下, SWVSWV 输出最多输出最多 88 个字节,前面和后面分个字节,前面和后面分别为起始位和停止位。下表给出了曼彻斯特编码数据序别为起始位和停止位。下表给出了曼彻斯特编码数据序列。列。

表 曼彻斯特编码数据序列

ST DATA ( 1-8 字节)

SP

Page 42: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

下表给出了曼彻斯特引脚协议编码。 下表给出了曼彻斯特引脚协议编码。

表 曼彻斯特引脚协议编码

引脚 逻辑 0 逻辑 1 Idle 状态 有效数据TRACESWO 低到高( 0

1 )高到低( 1

0 )低( 00 ) 开始位:逻辑

‘ 1’‘停止位:逻辑 0

Page 43: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

下图给出了使用曼彻斯特编码传输数据序列的图。下图给出了使用曼彻斯特编码传输数据序列的图。

图 使用曼彻斯特编码传输数据序列

Page 44: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

22 )) UARTUART 编码编码 下图给出了下图给出了 UARTUART 的编码序列。的编码序列。

下表给出了下表给出了 UARTUART 的编码。 的编码。

图 UART 的编码序列

引脚 逻辑 0 逻辑 1 Idle 状态 有效数据TRACESWO 低 高 高 ‘起始位 0’

8 个数据位。‘停止位 1’

表 UART 引脚协议编码

Page 45: 第 5 章   PSoC 编程和调试接口功能

80518051 片上调试片上调试---- 串行线察看器串行线察看器

下表给出了 SWV 寄存器的列表

表 SWV 寄存器寄存器 大小

(比特)描述

SWV_SWO_CAOSD

32 输出速度分频

SWV_SWO_SPP 32 输出协议(曼彻斯特或 UART )SWV_ITM_CR 32 ITM 控制

SWV_ITM_TER 32 使能每个激励端口SWV_ITM_SPRx

x32 激励端口 0-31

SWV_ITM_SCR 32 同步包控制

Page 46: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

PSoC3PSoC3 有三种类型的非易失性存储器(有三种类型的非易失性存储器( Nonvolatile Nonvolatile MemoryMemory ,, NVLNVL ):): Flash, EEPROMFlash, EEPROM ,非易失性锁存器,非易失性锁存器(( Nonvoltile LatchNonvoltile Latch ,, NVLNVL )。这些能使用)。这些能使用 CPUCPU 所运行所运行

的的启动引导代码编程或者通过启动引导代码编程或者通过 JTAG/SWDJTAG/SWD 接口连接的外部接口连接的外部系统。系统。

Page 47: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

下图给出了下图给出了 FlashFlash 的块图结构。的块图结构。

图 Flash 块图

Page 48: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

非易失性存储器编程系统的特性主要包括:非易失性存储器编程系统的特性主要包括:

简单的命令简单的命令 // 状态寄存器接口;状态寄存器接口; FlashFlash 可以在可以在 288288字节字节 // 行上进行编程;行上进行编程; 每行有每行有 256256 个数据字节加一个额外的个数据字节加一个额外的 3232字节用于字节用于 ECC/ECC/ 配配置;置;

EEPROMEEPROM 可以在可以在 1616字节字节 // 行上进行编程;行上进行编程; 所有配置所有配置 NVLNVL字节能同时进行编程;字节能同时进行编程; 对对 NVLNVL字节的单次写操作;字节的单次写操作;

Page 49: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

所有的编程操作通过一个简单的命令 / 状态寄存器接口完成,下表给出了命令 / 状态寄存器的功能。

表 命令和状态寄存器

寄存器 大小(比特) 功能SPC_CPU_DATA 8 数据到 / 从 CPU

SPC_DMA_DATA 8 数据到 / 从 DMAC

SPC_SR 8 状态 - 准备,数据可用,状态代码

Page 50: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

命令和数据送到命令和数据送到 SPC_CPU_DATASPC_CPU_DATA 或者或者SPC_DMA_DATA(SPC_DMA_DATA( 取决于命令源取决于命令源 )) 。响应数据通过同。响应数据通过同

样的样的寄存器读出。寄存器读出。 当数据可用于最近的命令时,状态寄存器当数据可用于最近的命令时,状态寄存器 SPC_SRSPC_SR

指指示是否接受新的命令,成功示是否接受新的命令,成功 //失败响应用于最近的命令。失败响应用于最近的命令。

Page 51: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

在发送命令到在发送命令到 SPC_CPU_DATASPC_CPU_DATA 或者或者 SPC_DMA_DATASPC_DMA_DATA寄存器前,寄存器前, SPC_SR[1]SPC_SR[1] 的的 SPC_IdleSPC_Idle 必须为‘必须为‘ 1’1’ ,当命令的,当命令的

第第一个字节一个字节 (0xB6)(0xB6) 写到数据寄存器后,写到数据寄存器后, SPC_IdleSPC_Idle 变为’变为’ 0’0’ 。。

当当命令执行完毕,或者检测到错误是,该位变为’命令执行完毕,或者检测到错误是,该位变为’ 1’1’ 。当忽。当忽略略 SPC_IdleSPC_Idle 位为‘位为‘ 0’0’ 时,命令送到其中的一个寄存器中。时,命令送到其中的一个寄存器中。

所所有的命令必须和下面的格式一致:有的命令必须和下面的格式一致:

11 )字节)字节 11 :总是:总是 0xB60xB6 ;; 22 )字节)字节 22 :: 0xD30xD3 ,后面跟着命令码;,后面跟着命令码; 33 )命令码字节)命令码字节 (( 如表如表 8.15)8.15) ;; 44 )命令参数字节;)命令参数字节; 55 )命令数据字节;)命令数据字节;

Page 52: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

表 给出了命令码

命令码 命令名字 存储器类型 访问 描述0x00 加载字节 NVL 任何 加载一个字节数据到易失性锁存器0x01 加载多个

字节Flash , EEPROM

任何 加载 1-32 个字节的数据到行锁存器

0x02 加载行 Flash , EEPROM

任何 加载一行数据

0x03 读字节 NVL 任何 从 NV 存储器读一个字节0x04 读多个字

节Flash , EEPROM

TC 读 1-256 个数据字节,不穿过行边界

0x05 写行 Flash , EEPROM

任何 擦除,然后用行锁存器的数据对行编程

0x06 写 NVL NVL TC 用易失性锁存器的数据对所有用户 NVL 进行编程

Page 53: 第 5 章   PSoC 编程和调试接口功能

PSoCPSoC 编程和调试接口功能 编程和调试接口功能 ---- 非易失性存储器编程非易失性存储器编程

命令码 命令名字 存储器类型 访问 描述

0x07 编程行 Flash , EEPROM

任何 用行锁存器的数据对行编程

0x08 擦除扇区 Flash , EEPROM

任何 擦除一个 64 行的扇区

0x09 擦除所有 Flash TC 擦除所有的 Flash ,包括 ECC 和行保护字节

0x0B 保护 Flash TC 用行锁存器的数据编程 Flash 的保护比特位