1 / 53

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

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

cleave
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第5章 PSoC编程和调试接口功能 何宾 2011.12

  2. 本章内容 本章主要介绍PSoC3的编程和调试接口功能,其 内容主要包括: • 测试控制器的模块结构和连接器接口; • JTAG和SWD接口的工作原理; • PSoC3的JTAG和SWD接口的工作原理; • 8051的片上调试模块(DoC); • 非易失性存储器的编程。

  3. 测试控制器--测试控制器模块结构 PSoC3结构包括一个测试控制器,主要用于下面 的目的: • 用于边界扫描测试访问I/O引脚; • 通过PSoC3的片上调试DoC模块来访问芯片的存储器和寄存器。

  4. 测试控制器--测试控制器模块结构 • 测试控制器通过边界扫描端口(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的调试模块接口用于访问芯片的剩余部分用于编程和调试操作;

  5. 测试控制器--测试控制器模块结构 • 如下图,PSoC3测试控制器将JTAG或者SWD访问转 换成DoC模块内寄存器的访问。 图 PSoC3测试控制器模块图

  6. 图 5针连接器 测试控制器--连接器接口 • 1.5针连接器 如下图所示,5针连接器配置成单排,每针之间间隔 为100mil。

  7. 图 10针连接器 测试控制器--连接器接口 • 2.10针连接器 如下图所示,10针连接器配置成双排,每针之间间隔 为50mil。

  8. 测试控制器--连接器接口 表 不同通信协议的引脚分配

  9. JTAG与SWD接口的工作原理--JTAG工作原理 • 为了应对IC芯片日益增加的高引脚密度,联合行 动测试小组(Joint Test Action Group,JTAG)提供了一 个用于测试电路板的方法,这个方法就是通过一个独立 的测试接口来控制IC的引脚(和读取它们的值)。 这个解决方案就是后来的IEEE1149.1-2001标准, 这个标准基于一个概念,即使用一个布线贯穿所有IC引 脚的移位寄存器(这也叫做边界扫描)。每个引脚上都 有一个边界扫描单元。在PSoC3中,大部分的GPIO和 SIO端口引脚都有边界扫描单元。

  10. JTAG与SWD接口的工作原理--JTAG工作原理 • 用于控制边界扫描单元值的接口叫做测试访问端口 (Test Access Port,TAP),也就是经常所说的JTAG接 口。 JTAG接口由: • 测试数据输入(TDI); • 测试数据输出(TDO); • 测试模式选择(TMS); • 测试时钟信号(TCK)和其它信号构成。 下图给出了JTAG连接多个IC芯片的结构。

  11. JTAG与SWD接口的工作原理--JTAG工作原理 • 下图给出了JTAG接口的内部结构。 图 JTAG内部结构

  12. 图 TAP状态机 JTAG与SWD接口的工作原理--JTAG工作原理 • 如下图,TMS信号控制TAP的状态机,状态机控制 哪个寄存器(包括边界扫描通路)在TDI-TDO移位通 路上。

  13. JTAG与SWD接口的工作原理--JTAG工作原理 • 其中: • 1)ir:是指令寄存器; • 2)dr:其它寄存器中的一个(包括边界扫描路径),由指令寄存器的内容确定; • 3)capture:将dr寄存器的内容传输到移位寄存器中,然后移出TDO; • 4)update:传输移位寄存器的内容,从TDI移入到一个dr;

  14. 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引脚的状态;

  15. JTAG与SWD接口的工作原理--JTAG工作原理 • 在IEEE1149中,给出了标准的指令集: 1)EXTEST:该指令将使得TDI和TDO连接到边界扫 描通路上(BSR),芯片将从普通操作模式改变为测试模 式。芯片引脚的状态可以使用capture dr的JTAG状态进行 采样,使用updata dr状态新的值可以用于芯片引脚上。

  16. JTAG与SWD接口的工作原理--JTAG工作原理 • 2)SAMPLE:该指令将使得TDI和TDO连接到边 界扫描通路上(BSR),但是芯片仍然处于普通操作模 式。使用该指令,BSR可以使用capture dr的JTAG状态进 行读取,对进入的功能数据进行采样,然后移出芯片。 • 3)PERLOAD:该指令将使得TDI和TDO连接到边 界扫描通路上(BSR),但是芯片仍然处于普通操作模 式。该指令用于在加载EXTEST指令前,预加载测试数 据到BSR。

  17. JTAG与SWD接口的工作原理--JTAG工作原理 • 下面给出了可选的指令: 1)IDCODE:该指令使得TDI和TDO线连接到 IDCODE寄存器。 2)INTEST:该指令将使得TDI和TDO连接到边界 扫描通路上(BSR)。当EXTEST指令允许访问芯片引脚 时,INTEST能访问芯片内核逻辑的信号。

  18. JTAG与SWD接口的工作原理--SWD工作原理 • SWD接口是由ARM公司开发出来的,目的是减少 调试接口所使用的引脚数。SWD接口使用两个信号 线:双向的数据线(SWDIO)和用于数据线的时钟信 号(SWDCK)。

  19. JTAG与SWD接口的工作原理--SWD工作原理 • SWD的每个数据传输由2/3个周期组成: • 1)包请求(Packet Request):外部主机调试器向目标设备发送一个包请求信号; • 2)确认响应(Acknowledge Response):目标设备向主机发送一个响应信号; • 3)数据(Data):当包请求跟一个确认响应后,传输数据: • 目标设备到主机-读请求后为-RDATA; • 主机到目标设备-写请求后为-WDATA;

  20. 图 SWD写 JTAG与SWD接口的工作原理--SWD工作原理 • 下图给出了一个SWD写时序图。

  21. 图 SWD读 JTAG与SWD接口的工作原理--SWD工作原理 • 下图给出了一个SWD读时序图。

  22. JTAG与SWD接口的工作原理--SWD工作原理 下面对SWD的读/写序列进行介绍: • 1)开始位(逻辑‘1’)初始化传输; • 2)APnDP位确定传输是一个访问端口访问(逻辑‘1’), 还是一个调试端口访问(逻辑‘0’)。 • 3)下一比特为RnW,‘1’表示从设备读;‘0’表示设备写; • 4)ADD为寄存器选择位,用于选择访问端口或者调试端 口;

  23. JTAG与SWD接口的工作原理--SWD工作原理 • 5)Parity位是对APnDP,RnW和ADDR的奇偶校验位。如果这些位域的逻辑‘1’的个数为奇数,则该位为‘1’;否则为‘0’。 • 如果奇偶位不正确,忽略头部(header),没有ACK响应; • 当主机检测到头部被忽略,在进行另外一次传输时,必须等待一个完整的读传输时间。 • 6)停止位为逻辑‘0’; • 7)Park:该位不是由主机驱动,SWD接口将信号线拉高,设备(芯片)读取该位为逻辑‘1’; • 8)ACK:为设备到主机的响应。表7.2给出了可能的值。

  24. JTAG与SWD接口的工作原理--SWD工作原理 表 SWD接口可能的ACK位值 • 9)地址,ACK和读/写数据总是从最低位开始传输。 SWD接口在50多个时钟周期复位,此时SWDIO为高。

  25. 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指令。

  26. JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 表 PSoC3额外的JTAG指令

  27. JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理

  28. 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寄存器的结构

  29. JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理JTAG与SWD接口的工作原理--PSoC3的JTAG和SWD接口的工作原理 • 注: 1)[34:3]位:32个数据位,如果端口寄存器小于32位 宽度,只传输最低的N(位宽度)比特。 2)[2:1]位:2位地址位,用于调试和访问端口寄存器 的选择 3)[0]位:‘1’读,‘0’写;

  30. 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响应

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

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

  33. 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状态;

  34. 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;

  35. 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寄存器。数据现在是有效的。

  36. 8051片上调试--片上调试模块及特点 • 下图给出了8051的片上调试器模块结构图。 图 8051片上调试模块结构

  37. 8051片上调试--片上调试模块及特点 DOC能接管8051 CPU,并且使用PHUB接口访问 任何CPU可以访问的地址。该模块的特点主要有: • 通过JTAG/SWD访问的TC接口; • 访问CPU的内部存储器和SFR,程序计数器PC; • CPU停止; • CPU单步; • 8个程序地址断点; • 1个存储器访问断点; • 看门狗触发断点; • 断点链接;

  38. 8051片上调试--片上调试模块及特点 • 跟踪CPU指令执行: • 跟踪CPU的程序计数器PC,ACC和CPU内部存储器或SFR的一个字节; • 2048个指令跟踪缓冲区(如果只跟踪PC) • 1024个指令跟踪缓冲区(如果跟踪PC,ACC和CPU内部存储器或SFR的一个字节); • 连续,触发或者窗口模式; • 当跟踪缓冲区满时,CPU停止或者覆盖以前的值; • 当不跟踪时,跟踪缓冲区作为普通SRAM;

  39. 8051片上调试--片上调试模块及特点 • SWV具有下面的特点: • 32个激励端口寄存器; • 简单,高效封装和串行化协议; • 两针输出模式,UART或者曼彻斯特编码方式;

  40. 8051片上调试--串行线察看器 • 除了DoC外,PSoC还包括一个串行线察看器模块 (Serial WireViewer,SWV)。SWV允许目标驻留代码将 诊断信息通过单线传送到外部。使用例子包括数据监视, 察看OS任务切换,Printf调试和调用图形化性能统计和分 析(profiling)。 • SWD输出通过TC到SWV引脚。SWV和JTAGTDO信 号共享一个引脚。连接引脚到SWV,设置SWD模式,NV 锁存位在复位时,决定JTAG/SWD接口引脚的状态。

  41. 8051片上调试--串行线察看器 • SWV是由两个CoreSightTM元件组成(ARM开发 的),这两个元件为仪器跟踪宏单元(Instrumentation Trace Macrocell,ITM)和串行线输出(Serial Wire Output,SWO)。这些元件有多个数据、控制和状态寄存 器。 • 1)曼彻斯特编码 在该协议下,SWV输出最多8个字节,前面和后面分 别为起始位和停止位。下表给出了曼彻斯特编码数据序 列。 表 曼彻斯特编码数据序列

  42. 8051片上调试--串行线察看器 • 下表给出了曼彻斯特引脚协议编码。 表 曼彻斯特引脚协议编码

  43. 图 使用曼彻斯特编码传输数据序列 8051片上调试--串行线察看器 • 下图给出了使用曼彻斯特编码传输数据序列的图。

  44. 图 UART的编码序列 8051片上调试--串行线察看器 • 2)UART编码 下图给出了UART的编码序列。 下表给出了UART的编码。 表 UART引脚协议编码

  45. 8051片上调试--串行线察看器 • 下表给出了SWV寄存器的列表 表 SWV寄存器

  46. PSoC编程和调试接口功能 --非易失性存储器编程 • PSoC3有三种类型的非易失性存储器(Nonvolatile Memory,NVL):Flash, EEPROM,非易失性锁存器 (Nonvoltile Latch,NVL)。这些能使用CPU所运行的 启动引导代码编程或者通过JTAG/SWD接口连接的外部 系统。

  47. PSoC编程和调试接口功能 --非易失性存储器编程 • 下图给出了Flash的块图结构。 图 Flash块图

  48. PSoC编程和调试接口功能 --非易失性存储器编程 • 非易失性存储器编程系统的特性主要包括: • 简单的命令/状态寄存器接口; • Flash可以在288字节/行上进行编程; • 每行有256个数据字节加一个额外的32字节用于ECC/配置; • EEPROM可以在16字节/行上进行编程; • 所有配置NVL字节能同时进行编程; • 对NVL字节的单次写操作;

  49. PSoC编程和调试接口功能 --非易失性存储器编程 所有的编程操作通过一个简单的命令/状态寄存器 接口完成,下表给出了命令/状态寄存器的功能。 表 命令和状态寄存器

  50. PSoC编程和调试接口功能 --非易失性存储器编程 • 命令和数据送到SPC_CPU_DATA或者 SPC_DMA_DATA(取决于命令源)。响应数据通过同样的 寄存器读出。 当数据可用于最近的命令时,状态寄存器SPC_SR指 示是否接受新的命令,成功/失败响应用于最近的命令。

More Related