540 likes | 871 Views
第 5 章 PSoC 编程和调试接口功能. 何宾 2011.12. 本章内容. 本章主要介绍 PSoC3 的编程和调试接口功能,其 内容主要包括: 测试控制器的模块结构和连接器接口; JTAG 和 SWD 接口的工作原理; PSoC3 的 JTAG 和 SWD 接口的工作原理; 8051 的片上调试模块( DoC ); 非易失性存储器的编程。. 测试控制器 -- 测试控制器模块结构. PSoC3 结构包括一个测试控制器,主要用于下面 的目的: 用于边界扫描测试访问 I/O 引脚;
E N D
第5章 PSoC编程和调试接口功能 何宾 2011.12
本章内容 本章主要介绍PSoC3的编程和调试接口功能,其 内容主要包括: • 测试控制器的模块结构和连接器接口; • JTAG和SWD接口的工作原理; • PSoC3的JTAG和SWD接口的工作原理; • 8051的片上调试模块(DoC); • 非易失性存储器的编程。
测试控制器--测试控制器模块结构 PSoC3结构包括一个测试控制器,主要用于下面 的目的: • 用于边界扫描测试访问I/O引脚; • 通过PSoC3的片上调试DoC模块来访问芯片的存储器和寄存器。
测试控制器--测试控制器模块结构 • 测试控制器通过边界扫描端口(Joint Test Action Group,JTAG)或者串行调试(Serial Wire Debug, SWD)接口连接到片外设备。测试控制器包含下面的特 性: • 支持到调试主机的JTAG或者SWD接口; • SWD接口可以使用GPIO或者USB引脚; • 支持边界扫描IEEE标准1149.1-2001“Test Access Port and Boundary-Scan Architecture”; • 支持额外的JTAG指令/寄存器,用于访问芯片的剩余部分; • 与PSoC3的调试模块接口用于访问芯片的剩余部分用于编程和调试操作;
测试控制器--测试控制器模块结构 • 如下图,PSoC3测试控制器将JTAG或者SWD访问转 换成DoC模块内寄存器的访问。 图 PSoC3测试控制器模块图
图 5针连接器 测试控制器--连接器接口 • 1.5针连接器 如下图所示,5针连接器配置成单排,每针之间间隔 为100mil。
图 10针连接器 测试控制器--连接器接口 • 2.10针连接器 如下图所示,10针连接器配置成双排,每针之间间隔 为50mil。
测试控制器--连接器接口 表 不同通信协议的引脚分配
JTAG与SWD接口的工作原理--JTAG工作原理 • 为了应对IC芯片日益增加的高引脚密度,联合行 动测试小组(Joint Test Action Group,JTAG)提供了一 个用于测试电路板的方法,这个方法就是通过一个独立 的测试接口来控制IC的引脚(和读取它们的值)。 这个解决方案就是后来的IEEE1149.1-2001标准, 这个标准基于一个概念,即使用一个布线贯穿所有IC引 脚的移位寄存器(这也叫做边界扫描)。每个引脚上都 有一个边界扫描单元。在PSoC3中,大部分的GPIO和 SIO端口引脚都有边界扫描单元。
JTAG与SWD接口的工作原理--JTAG工作原理 • 用于控制边界扫描单元值的接口叫做测试访问端口 (Test Access Port,TAP),也就是经常所说的JTAG接 口。 JTAG接口由: • 测试数据输入(TDI); • 测试数据输出(TDO); • 测试模式选择(TMS); • 测试时钟信号(TCK)和其它信号构成。 下图给出了JTAG连接多个IC芯片的结构。
JTAG与SWD接口的工作原理--JTAG工作原理 • 下图给出了JTAG接口的内部结构。 图 JTAG内部结构
图 TAP状态机 JTAG与SWD接口的工作原理--JTAG工作原理 • 如下图,TMS信号控制TAP的状态机,状态机控制 哪个寄存器(包括边界扫描通路)在TDI-TDO移位通 路上。
JTAG与SWD接口的工作原理--JTAG工作原理 • 其中: • 1)ir:是指令寄存器; • 2)dr:其它寄存器中的一个(包括边界扫描路径),由指令寄存器的内容确定; • 3)capture:将dr寄存器的内容传输到移位寄存器中,然后移出TDO; • 4)update:传输移位寄存器的内容,从TDI移入到一个dr;
JTAG与SWD接口的工作原理--JTAG工作原理 • TAP内的寄存器包含: • 1)Instruction:2-4位宽,存放当前指令,该指令定义了在TDI-TDO移位通道上的数据寄存器,引起设备被旁路用于JTAG模式; • 2)Bypass:1位宽度,TDI和TDO直接连接; • 3)ID:32位宽,用于读JTAG的制造商/芯片的ID号; • 4)Boundary Scan Path(BSR):宽度等于I/O引脚(有边界扫描单元)的数量,用于设置或者读写这些I/O引脚的状态;
JTAG与SWD接口的工作原理--JTAG工作原理 • 在IEEE1149中,给出了标准的指令集: 1)EXTEST:该指令将使得TDI和TDO连接到边界扫 描通路上(BSR),芯片将从普通操作模式改变为测试模 式。芯片引脚的状态可以使用capture dr的JTAG状态进行 采样,使用updata dr状态新的值可以用于芯片引脚上。
JTAG与SWD接口的工作原理--JTAG工作原理 • 2)SAMPLE:该指令将使得TDI和TDO连接到边 界扫描通路上(BSR),但是芯片仍然处于普通操作模 式。使用该指令,BSR可以使用capture dr的JTAG状态进 行读取,对进入的功能数据进行采样,然后移出芯片。 • 3)PERLOAD:该指令将使得TDI和TDO连接到边 界扫描通路上(BSR),但是芯片仍然处于普通操作模 式。该指令用于在加载EXTEST指令前,预加载测试数 据到BSR。
JTAG与SWD接口的工作原理--JTAG工作原理 • 下面给出了可选的指令: 1)IDCODE:该指令使得TDI和TDO线连接到 IDCODE寄存器。 2)INTEST:该指令将使得TDI和TDO连接到边界 扫描通路上(BSR)。当EXTEST指令允许访问芯片引脚 时,INTEST能访问芯片内核逻辑的信号。
JTAG与SWD接口的工作原理--SWD工作原理 • SWD接口是由ARM公司开发出来的,目的是减少 调试接口所使用的引脚数。SWD接口使用两个信号 线:双向的数据线(SWDIO)和用于数据线的时钟信 号(SWDCK)。
JTAG与SWD接口的工作原理--SWD工作原理 • SWD的每个数据传输由2/3个周期组成: • 1)包请求(Packet Request):外部主机调试器向目标设备发送一个包请求信号; • 2)确认响应(Acknowledge Response):目标设备向主机发送一个响应信号; • 3)数据(Data):当包请求跟一个确认响应后,传输数据: • 目标设备到主机-读请求后为-RDATA; • 主机到目标设备-写请求后为-WDATA;
图 SWD写 JTAG与SWD接口的工作原理--SWD工作原理 • 下图给出了一个SWD写时序图。
图 SWD读 JTAG与SWD接口的工作原理--SWD工作原理 • 下图给出了一个SWD读时序图。
JTAG与SWD接口的工作原理--SWD工作原理 下面对SWD的读/写序列进行介绍: • 1)开始位(逻辑‘1’)初始化传输; • 2)APnDP位确定传输是一个访问端口访问(逻辑‘1’), 还是一个调试端口访问(逻辑‘0’)。 • 3)下一比特为RnW,‘1’表示从设备读;‘0’表示设备写; • 4)ADD为寄存器选择位,用于选择访问端口或者调试端 口;
JTAG与SWD接口的工作原理--SWD工作原理 • 5)Parity位是对APnDP,RnW和ADDR的奇偶校验位。如果这些位域的逻辑‘1’的个数为奇数,则该位为‘1’;否则为‘0’。 • 如果奇偶位不正确,忽略头部(header),没有ACK响应; • 当主机检测到头部被忽略,在进行另外一次传输时,必须等待一个完整的读传输时间。 • 6)停止位为逻辑‘0’; • 7)Park:该位不是由主机驱动,SWD接口将信号线拉高,设备(芯片)读取该位为逻辑‘1’; • 8)ACK:为设备到主机的响应。表7.2给出了可能的值。
JTAG与SWD接口的工作原理--SWD工作原理 表 SWD接口可能的ACK位值 • 9)地址,ACK和读/写数据总是从最低位开始传输。 SWD接口在50多个时钟周期复位,此时SWDIO为高。
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 1.时钟 JTAG接口的TCK时钟和SWD接口的SWDCLK时钟共 享芯片的P1[1]引脚(一个可替换的SWDCK时钟能输入到 USB D-引脚,P15[7])。时钟频率在1MHz和CPU_CLK/2 或者25MHz。 • 2.PSoC3的JTAG指令 PSoC3 JTAG接口与IEEE1149.1-2001规范兼容,同 时提供了额外的指令。指令寄存器为4比特宽度。下表给 出了PSoC3额外的JTAG指令。
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 表 PSoC3额外的JTAG指令
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 3.DP/AP访问寄存器 PSoC3有一个35位宽的DP/AP访问寄存器,该寄 存器用于在JTAG/SWD接口和调试/访问端口寄存器之 间进行数据传输。SWD直接读/写DP/AP寄存器;JTAG 使用DPACC和APACC指令读/写 DP/AP寄存器。 在JTAG updata dr 状态或者从SWD接口写到寄存 器,下表给出了DP/AP寄存器的结构。 表 DP/AP寄存器的结构
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 注: 1)[34:3]位:32个数据位,如果端口寄存器小于32位 宽度,只传输最低的N(位宽度)比特。 2)[2:1]位:2位地址位,用于调试和访问端口寄存器 的选择 3)[0]位:‘1’读,‘0’写;
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 在JTAG capture dr状态下或者从SWD接口读数据 时,下表给出了读寄存器的格式。 • 表 读寄存器的格式 1)[34:3]位:32位数据,如果端口寄存器小于32位宽 度,只传输最低的N(位宽度)比特。 2)[2:0]位:ACK确认符-取决于接口,下表给出了 JTAG/SWD接口的ACK响应。 表 JTAG/SWD接口的ACK响应
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 4.JTAG/SWD地址(PSoC3) 在PSoC3结构中,JTAG/SWD接口所传输的两位地 址,用来访问调试端口,访问端口和I/O代码寄存器。 下表给出了JTAG/SWD地址。 表 JTAG/SWD地址
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 5.调试端口和访问端口寄存器(PSoC3) 下表给出来的寄存器都是可读/写的,除了 DBGPRT_CFG寄存器的第7位。 表 调试端口和访问端口寄存器
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 6.PSoC3寄存器访问实例 下面给出使用JTAG或者SWD接口访问8051 xdata空间 的方法。假设地址的值为0xADD8E5。 1)使用JTAG写地址值到TRNS_ADDR寄存器,调试 主机必须: • 将APACC指令移入到指令寄存器; • 移动0(写),后面跟“01”(选择访问端口寄存器),后面跟0x00ADD8E5,到35位的DP/AP寄存器; • 进入JTAG update dr状态;
JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 2)使用SWD写地址值到TRNS_ADDR寄存器,调试主机必须: • 发送一个请求包,APnDP=1,RnW=0,ADDR=01; • 得到来自PSoC3的ACK响应; • 在数据周期,发送0x00ADD8E5。 • 3)写值0xDA到地址0x00ADD8E5: • 类似前面步骤,写0x00ADD8E5到TRNS_ADDR寄存器; • 类似前面步骤,写0x000000DA到DATA_RW寄存器(地址为11,而不是01); • 测试控制器初始化写传输请求到PSoC3;
JTAG与SWD接口的工作原理--PSoC3/5的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3/5的JTAG和SWD接口的工作原理 • 4)从地址0x00ADD8E5读数: • 类似前面步骤,写0x00ADD8E5到TRNS_ADDR寄存器; • 类似前面步骤,读DATA_RW寄存器(地址为11,而不是01,RnW=’1’); • 测试控制器初始化读传输请求到PSoC3,从DATA_RW读取的数是无效的; • 等待至少5个TCK/SWDCK时钟周期,避免WAIT响应; • 再读DATA_RW寄存器。数据现在是有效的。
8051片上调试--片上调试模块及特点 • 下图给出了8051的片上调试器模块结构图。 图 8051片上调试模块结构
8051片上调试--片上调试模块及特点 DOC能接管8051 CPU,并且使用PHUB接口访问 任何CPU可以访问的地址。该模块的特点主要有: • 通过JTAG/SWD访问的TC接口; • 访问CPU的内部存储器和SFR,程序计数器PC; • CPU停止; • CPU单步; • 8个程序地址断点; • 1个存储器访问断点; • 看门狗触发断点; • 断点链接;
8051片上调试--片上调试模块及特点 • 跟踪CPU指令执行: • 跟踪CPU的程序计数器PC,ACC和CPU内部存储器或SFR的一个字节; • 2048个指令跟踪缓冲区(如果只跟踪PC) • 1024个指令跟踪缓冲区(如果跟踪PC,ACC和CPU内部存储器或SFR的一个字节); • 连续,触发或者窗口模式; • 当跟踪缓冲区满时,CPU停止或者覆盖以前的值; • 当不跟踪时,跟踪缓冲区作为普通SRAM;
8051片上调试--片上调试模块及特点 • SWV具有下面的特点: • 32个激励端口寄存器; • 简单,高效封装和串行化协议; • 两针输出模式,UART或者曼彻斯特编码方式;
8051片上调试--串行线察看器 • 除了DoC外,PSoC还包括一个串行线察看器模块 (Serial WireViewer,SWV)。SWV允许目标驻留代码将 诊断信息通过单线传送到外部。使用例子包括数据监视, 察看OS任务切换,Printf调试和调用图形化性能统计和分 析(profiling)。 • SWD输出通过TC到SWV引脚。SWV和JTAGTDO信 号共享一个引脚。连接引脚到SWV,设置SWD模式,NV 锁存位在复位时,决定JTAG/SWD接口引脚的状态。
8051片上调试--串行线察看器 • SWV是由两个CoreSightTM元件组成(ARM开发 的),这两个元件为仪器跟踪宏单元(Instrumentation Trace Macrocell,ITM)和串行线输出(Serial Wire Output,SWO)。这些元件有多个数据、控制和状态寄存 器。 • 1)曼彻斯特编码 在该协议下,SWV输出最多8个字节,前面和后面分 别为起始位和停止位。下表给出了曼彻斯特编码数据序 列。 表 曼彻斯特编码数据序列
8051片上调试--串行线察看器 • 下表给出了曼彻斯特引脚协议编码。 表 曼彻斯特引脚协议编码
图 使用曼彻斯特编码传输数据序列 8051片上调试--串行线察看器 • 下图给出了使用曼彻斯特编码传输数据序列的图。
图 UART的编码序列 8051片上调试--串行线察看器 • 2)UART编码 下图给出了UART的编码序列。 下表给出了UART的编码。 表 UART引脚协议编码
8051片上调试--串行线察看器 • 下表给出了SWV寄存器的列表 表 SWV寄存器
PSoC编程和调试接口功能 --非易失性存储器编程 • PSoC3有三种类型的非易失性存储器(Nonvolatile Memory,NVL):Flash, EEPROM,非易失性锁存器 (Nonvoltile Latch,NVL)。这些能使用CPU所运行的 启动引导代码编程或者通过JTAG/SWD接口连接的外部 系统。
PSoC编程和调试接口功能 --非易失性存储器编程 • 下图给出了Flash的块图结构。 图 Flash块图
PSoC编程和调试接口功能 --非易失性存储器编程 • 非易失性存储器编程系统的特性主要包括: • 简单的命令/状态寄存器接口; • Flash可以在288字节/行上进行编程; • 每行有256个数据字节加一个额外的32字节用于ECC/配置; • EEPROM可以在16字节/行上进行编程; • 所有配置NVL字节能同时进行编程; • 对NVL字节的单次写操作;
PSoC编程和调试接口功能 --非易失性存储器编程 所有的编程操作通过一个简单的命令/状态寄存器 接口完成,下表给出了命令/状态寄存器的功能。 表 命令和状态寄存器
PSoC编程和调试接口功能 --非易失性存储器编程 • 命令和数据送到SPC_CPU_DATA或者 SPC_DMA_DATA(取决于命令源)。响应数据通过同样的 寄存器读出。 当数据可用于最近的命令时,状态寄存器SPC_SR指 示是否接受新的命令,成功/失败响应用于最近的命令。