AN73212 Debugging with PSoC® 1 (Chinese).pdf

AN73212
使用 PSoC® 1 进行调试
作者: Dan Sweet
相关器件系列:所有 PSoC1 系列产品
相关应用笔记:无
要获取本应用笔记的最新版本,或相关的项目文件,请访问 http://www.cypress.com/go/AN73212。
AN73212 将介绍 PSoC® 1 调试器系统的各个组件,并且说明如何配置并高效地使用这些组件。本文档还介绍几种通用
调试技巧,帮助您解决常见问题,如堆栈溢出和存储器泄露。此外,本文档也提供了故障排除指南。
目录
1
简介 ..........................................................................1
2
PSoC 资源 ................................................................3
2.1
PSoC Designer ................................................3
2.2
代码示例 ..........................................................4
4
5
1
其它调试方法 .......................................................... 29
6.1
使用 I2C-USB 桥接器进行调试....................... 29
6.2
使用 UART 接口调试 ...................................... 29
6.3
引脚转换 ........................................................ 30
技术支持 ..........................................................5
7
故障排除 ................................................................. 31
调试硬件和设置 ........................................................6
8
总结 ........................................................................ 32
3.1
片上调试器(OCD)器件.................................6
A
附录 A:向 PCB 添加 OCD 部件 ............................. 33
3.2
在线仿真器(ICE) ..........................................6
B
3.3
调试转接板 .......................................................6
3.4
调试硬件的环境建立 ........................................8
2.3
3
6
调试环境 – PSoC Designer IDE.............................. 14
附录 B:堆栈溢出 ................................................... 34
B.1
不使用 ICE 检查堆栈溢出 ............................... 34
B.2
避免堆栈溢出的方法 ...................................... 34
4.1
启动调试器 ..................................................... 14
4.2
调试控件 ........................................................ 15
附录 C:旧版硬件 ................................................... 37
C.1
ICE-4000 ....................................................... 37
C.2
CY3240 I2USB 桥接器套件............................ 37
4.3
追踪 ............................................................... 17
C.3
4.4
Events(事件)查看器 ................................... 18
文档修订记录................................................................... 38
4.5
映射文件(.mp) ........................................... 25
全球销售和设计支持 ........................................................ 39
4.6
列表文件(.lst)............................................. 26
产品 ................................................................................. 39
PSoC1 调试提示和技巧 .......................................... 28
PSoC®解决方案............................................................... 39
5.1
在“停止”期间硬件仍然运行 ........................ 28
赛普拉斯开发者社区 ........................................................ 39
5.2
Flash 写入调试 ............................................... 28
技术支持 .......................................................................... 39
5.3
在睡眠模式下使用调试器 ............................... 28
C
Flex 转接板 .................................................... 37
简介
本应用笔记的目的在于介绍 PSoC 1 中可用的硬件和软件调试器工具,并提供几种常用的调试技巧。
调试系统的主要硬件元件为:在线仿真器(ICE)、调试转接板以及支持片上调试(OCD)的 PSoC1 器件。这些元件
及其配置和使用的说明将在本应用笔记的调试硬件部分中予以说明。
软件工具则以 PSoC Designer®为主。
这一集成开发环境可提供很多调试工具,包括断点、监视变量、内存查看器、追踪、事件和输出文件(列表和映射)。
在本应用笔记的调试环境 – PSoC Designer IDE 部分将逐渐介绍这些工具。
www.cypress.com
文档编号: 001-79031 版本*C
1
Debugging with PSoC® 1 进行调试
此外,本文档还将讨论的主题如下:
 PSoC1 调试提示和技巧
 其它调试方法
 故障排除
www.cypress.com
文档编号:001-79031 版本*C
2
Debugging with PSoC® 1 进行调试
2
PSoC 资源
在赛普拉斯网站 www.cypress.com 上提供了大量资料,有助于选择符合您设计的 PSoC 器件,并能够快速有效地将该
器件集成到您的设计中。在本文档中,PSoC 所指的是 PSoC 1 系列器件。有关 PSoC 1 的更多信息了,请查阅应用笔
记 AN75320 — PSoC 1 入门。
下面提供了 PSoC 1 的简要列表:



概况:PSoC 产品系列、PSoC 蓝图
产 品 选 型 : PSoC 1 、 PSoC 3 、 PSoC 4 或
PSoC 5LP。此外,PSoC Designer 还包含了
一个器件选择工具。

数据手册:描述并提供了适用于 PSoC 1 器件
系列的电气规格。

应用笔记和代码示例:包括从基本到高级的广
泛主题。许多应用笔记还提供了代码示例。

技术参考手册(TRM):详细说明了 PSoC 1
器件的内部架构。

2.1
开发套件:

CY3215A-DK 在线仿真器 Lite 开发套件提供一个
在 线 仿 真 器 ( ICE ) 。 ICE-Cube 主 要 用 于 调 试
PSoC 1 器件,但它也可使用 ISSP 对 PSoC 1 器件
进
行
编程。

通过 CY3210-PSOCEVAL1 套件,您可以评估和
体验赛普拉斯 PSoC 1 可编程片上系统的设计方法
和架构。

CY8CKIT-001 是所有 PSoC 系列产品经常使用的
开发平台。
MiniProg1 和 MiniProg3 器件提供了用于闪存编程的
接口。
PSoC Designer
PSoC Designer 是基于 Windows 的免费集成设计环境(IDE)。在拖放式设计环境中使用预先设定的模拟和数字外设
库来开发您的应用。然后,利用动态生成的 API 代码库来自定义您的设计。图 1 显示的是 PSoC Designer 窗口。注
意:这并不是默认窗口。
1.
Global Resources(全局资源) — 所有的器件硬件设置。
2.
Parameters(参数)— 当前选中的用户模块的参数。
3.
Pinout(引脚分配) — 器件引脚的相关信息。
4.
Chip-Level Editor(芯片级编辑器)— 选中芯片上可用资源的框图。
5.
Datasheet(数据手册) — 当前选中的用户模块的数据手册。
6.
User Modules(用户模块) — 选中器件的所有可用的用户模块。
7.
Device Resource Meter(器件资源计) — 当前项目配置的器件资源使用率。
8.
Workspace(工作区) — 与项目有关的文件树级图
9.
Output(输出) — 项目的编译和调试输出。
注意:欲了解有关 PSoC Designer 的详细信息,请依次选择 PSoC® Designer > Help > Documentation > Designer
Specific Documents > IDE User Guide。
www.cypress.com
文档编号: 001-79031 版本*C
3
Debugging with PSoC® 1 进行调试
图 1. PSoC Designer 布局
2.2
代码示例
下面的网页列出了基于 PSoC Designer 的代码示例。这些代码示例通过向您提供一个完整的设计(而不是空白设计)
加快您的设计过程,并显示了如何将 PSoC Designer 用户模块用于各种应用。
http://www.cypress.com/go/PSoC1Code Examples
要想访问集成在 PSoC Designer 中的代码示例,请依次选择 Start Page > Design Catalog > Launch Example
Browser,如图 2 所示。
图 2. PSoC Designer 中的代码示例
www.cypress.com
文档编号:001-79031 版本*C
4
Debugging with PSoC® 1 进行调试
在图 3 中显示的示例项目浏览器提供了以下选项:





关键词搜索,用于筛选项目。
根据类别列出项目。
(在 Description(说明)选项卡上)查看已选项目的数据手册。
查看已选项目的代码示例。您可以复制该窗口中的代码然后将其粘贴到您的项目内,从而加快代码的开发过程,或
根据已选项目创建一个新的项目(若需要,可添加新的工作区)。通过为您提供一个完整的基本设计,它可以加快
您的设计过程。然后,您可以根据自己的应用更改该设计。
图 3. 带有示例代码的代码示例项目
2.3
技术支持
若有任何疑问,我们的技术支持团队很乐意为您提供帮助。您可以在赛普拉斯技术支持页面上发送一项支持请求。
若想快速获得支持,您同样可以使用下面的支持资源。


自助
所在地销售办事处
www.cypress.com
文档编号:001-79031 版本*C
5
Debugging with PSoC® 1 进行调试
3
调试硬件和设置
本部分将介绍构建 PSoC1 调试系统所需的硬件,包括一个 ICE、一个调试转接板和相应的连接器。要想了解完整的调
试硬件设置,请观看 AN73212 网页上的视频。以下各部分将对每个工具进行具体描述。
3.1
片上调试器(OCD)器件
并非所有的 PSoC1 芯片都支持调试功能。但是每个 PSoC1 器件系列均至少有一个器件版本支持调试。这些支持调试
的 PSoC 器件称为 OCD 器件。一个器件系列的 OCD 器件可以对该系列中的所有器件进行仿真。例如,CY8C2700224PVXI OCD 器件可以对 CY8C27xxx 系列的所有器件进行仿真。
有些器件系列包含多个 OCD 器件,可提供不同的封装;而其它的器件系列则只有一个 OCD 器件。请参阅器件数据手
册,了解每个 PSoC1 器件系列 OCD 器件的器件型号和引脚分配。
3.2
在线仿真器(ICE)
在线仿真器(ICE)或 ICE-Cube,是 PSoC1 调试系统中的关键工具。ICE 负责管理在计算机上运行的调试器软件
(PSoC Designer)和支持片上调试(OCD)的 PSoC 芯片之间的所有仿真通信。ICE 如图 4 所示。
图 4. 在线仿真器(ICE)
ICE 包含在 CY3215A-DK 开发套件中,该套件还提供启用调试所需的所有配件。
3.3
调试转接板
调试转接板是 PSoC1 调试系统的另一重要工具。一般来讲,转接板是一个小的 PCB,包含一个支持片上调试器
(OCD)的 PSoC1 芯片、一个 ICE 连接器以及一个将 PCB 连接至现有电路板或开发工具上的连接器。调试转接板有
两种主要类型:CY3250 转接板(如图 5 所示)和 CY3210 评估转接板(如图 6 所示)。
图 5. CY3250 转接板示例
CY3250 转接板最适合用于为新的或现有的自定义 PCB 添加临时调试能力。CY3250 转接板包含一个 OCD PSoC 器
件、一个 ICE 连接器、一个可通过支脚工具安装至电路板的连接器以及几个被动供电组件。
如需获取可用的 CY3250 转接板列表,请参考 PSoC® 1 套件选型指南或当前使用 PSoC1 器件的器件数据手册,查看
其中的仿真和编程附件表。
www.cypress.com
文档编号:001-79031 版本*C
6
Debugging with PSoC® 1 进行调试
CY3210-EvalPod 最适合用于对评估套件或其它具有 28 引脚 DIP 连接器的电路板进行原型设计。大部分 PSoC1 器件
系列均支持 CY3210-EvalPod。每个 EvalPod 均配有一个支持 OCD 的 PSoC1 器件、一个安装 28 引脚的 PDIP 连接器
电路板、一个连接 ICE 的 RJ-45 连接器、一个 5 引脚编程接头和若干用于便捷访问引脚的连接器。一般来讲,在与
CY3210-PSoCEval1 开发套件、实验板或者其它配有 28 引脚 PDIP 连接器的电路板进行调试时,EvalPods 表现最
佳。
图 6. CY3210 EvalPod 示例
表 1 列出了可用的 CY3210 EvalPod。大多数常用系列中均有一个可用的 CY3210 EvalPod。
表 1. CY3210-EvalPod 列表
器件系列
EvalPod 器件型号
CY8C21x23
CY3210-21x23
CY8C24x23
CY3210-24X23
CY8C24x94
CY3210-24x94
CY8C27xxx
CY3210-27x43
CY8C28xxx
CY3210-28xxx
CY8C29xxx
CY3210-29x66
除了使用转接板,还可以直接将 OCD 器件和 ICE 连接器放置到新的 PCB 上。如果转接板不适用于 PCB 或者目标
PSoC1 器件没有适用的转接板,这种直接安装的方式将非常实用。有关直接在 PCB 上构建调试能力的更多信息,请参
阅附录 A — 向 PCB 添加 OCD 器件。
3.3.1
支脚
要将 CY3250 型转接板正确安装在电路板上,需要使用一个支脚套件和屏蔽模具。使用支脚套件可以将转接板安装至
特定的封装,这样,单一的转接板便可安装在几乎所有的电路板上。使用配有支脚套件的 CY3250 转接板和一个 ICE
将可更改现有 PCB,使其支持调试。尺寸符合的支脚套件可焊接到现有 PCB,并且转接板可安装至支脚上。图 7 显示
了三种支脚图样。
图 7. 支脚图样
www.cypress.com
文档编号:001-79031 版本*C
7
Debugging with PSoC® 1 进行调试
如图 7 所示,支脚的底部分别适用于不同的 PCB 封装。该图仅显示了 28-SOIC、44-TQFP 和 28-PDIP,所有的
PSoC1 封装尺寸和类型均有可用的支脚套件。
支脚套件的上半部分提供了连接到转接板的相应引脚。封装不同,引脚的数目也不同,因此,每个支脚套件应与 OCD
器件的必要引脚相连。例如,转接板上的某个 OCD 器件可能采用了 56-QFN 封装,但要对仅有 28 引脚的器件进行仿
真时,支脚套件可以仅连接 56 个可用引脚中的 28 个。
每种 PSoC 器件封装适用的支脚套件列于器件数据手册中的仿真和编程附件表。
3.3.1
屏蔽模具
屏蔽模具安装于转接板和支脚套件之间,用于将支脚套件的引脚对齐至转接板相应的孔中,并可罩住转接板上无需使用
的接孔。一些转接板上的连接点很多,而有些支脚的连接点则很少(例如 8 引脚封装)。因此,屏蔽模具能够保证支
脚套件和转接板连接器正确对齐。屏蔽模具如图 8 所示。
图 8. 屏蔽模具示例
并非所有的支脚和转接板连接都需要屏蔽模具,一些转接板仅适用于某一定向的支脚套件。例如,所有基于 QFN 的转
接板在连接至 QFN 支脚套件时,均不需要使用屏蔽模具。屏蔽模具有两种常用尺寸:一种兼容 28 引脚封装(DIP、
SOIC 和 SSOP 封装)的屏蔽模具,以及另一种适用于任何 8 引脚或 20 引脚封装的屏蔽模具。44 引脚或 48 引脚封装
的支脚套件不需要使用屏蔽模具。
如有需要,CY3250 转接板或者支脚套件中会提供相应的屏蔽模具,您无需单独购买。
3.4
调试硬件的环境建立
本部分将说明在构建功能性调试系统时各个不同硬件的连接方法。根据转接板、支脚套件和屏蔽模具的不同,配置也可
能略有区别。下面将介绍几种常用的配置。
3.4.1
I C E + C Y 3 2 1 0 E va l P o d
连接 ICE 和 CY3210 EvalPod 需要使用以下部件:
1.
ICE
2.
面向目标 PSoC1 系列的 CY3210 EvalPod
3.
RJ-45 ICE 适配器,如图 9 所示,也被称为“向后兼容适配器”,因为某些旧有转接板也使用 RJ-45 连接器。
图 9. RJ-45 ICE 适配器
4.
短的 RJ-45/以太网线缆(12 英寸或更短),在 CY3215A-DK 套件中附带。不能使用长线缆代替,因为长线缆会干
扰 ICE 与连接板之间的通信。
www.cypress.com
文档编号:001-79031 版本*C
8
Debugging with PSoC® 1 进行调试
图 10. RJ-45/以太网线缆
如需使用替代线缆,可以选用 12 英寸或更短的 Cat5E 标准线缆。
注释: ICE 通信不是标准的以太网协议。其使用的是自定义通信协议。
5.
USB 线缆和 12 V 电源(均在 ICE CY3215A-DK 中附带)。
以上部件的正确连接方法如图 11 所示。可以选择将 EvalPod 插入带有 28 引脚 DIP 连接器的电路板中。
图 11. ICE + CY3210 EvalPod 配置
3.4.2
ICE + CY3250 Pod
要将 ICE 连接至 CY3250 连接板,应采取以下步骤:
1.
选择一个支脚,该支脚应与目标电路中的 PSoC 器件引脚分配相匹配。
2.
如需要,请选择与所需支脚匹配的屏蔽模具。通常,只有 8 引脚、20 引脚和 28 引脚的支脚需要屏蔽模具。
3.
将屏蔽模具插入转接板底部,将屏蔽模具的斜切角与转接板上的引脚 1 的三角形对齐。
4.
通过屏蔽模具插入支脚。如果未使用屏蔽模具,则支脚将直接连接至转接板基座。
步骤 2 到 4 如图 12 所示。
图 12. 支脚套件 + 屏蔽模具 + 转接板
5.
将装好的转接板连接至目标电路板(如果支脚套件尚未安装于电路板上)。
6.
将转接板与 CY3250-Flex 线缆较小的一端相连。转接板、线缆和连接器如图 13 所示。完成的连接如图 14 所示。
www.cypress.com
文档编号:001-79031 版本*C
9
Debugging with PSoC® 1 进行调试
图 13. CY3250 转接板、柔性线缆和连接器
图 14. 柔性线缆连接
7.
将柔性线缆的另一端插入 ICE,如图 15 所示。
图 15. ICE 连接至 CY3250 转接板
8.
最后,用一条 USB 线缆将 ICE 连接至计算机并通过提供的 12 V 直流电源为 ICE 供电。
表 2 显示的是调试期间所使用的转接板连接器的引脚名称和引脚说明。
表 2. 转接板连接器的引脚说明
引脚编号
引脚名称
引脚说明
1
POD EXTRA3
保留给将来使用
2
GND
接地
—
—
3
4
POD_OCDDE
POD_OCD 偶数据 I/O
5
GND
接地
6
POD_OCDDO
POD_OCD 奇数据输出
7
POD EXTRA1
保留给将来使用
8
POD_XRES
复位信号(仅用于复位编程模式)
9
GND
接地
10
POD_OCDHC
POD_OCD 高速时钟输出
www.cypress.com
文档编号:001-79031 版本*C
10
Debugging with PSoC® 1 进行调试
引脚编号
引脚名称
11
GND
接地
12
POD_OCDCC
POD_OCD CPU 时钟输出
13
POD EXTRA4
保留给将来使用
14
PODVCC
供电电压
—
—
15
16
3.4.3
引脚说明
供电电压
PODVCC
ICE + OCD 板上安装器件
在某些情况下,可以直接将 OCD 部件安装在目标电路板上,而不需使用转接板进行调试。将相应的调试线引出并连接
到同样安装于电路板上的连接器上。当目标 PSoC1 器件没有相应的转接板或者转接板不适用于目标 PCB 时,这种方
法很实用。
有时,将 OCD 器件直接放置在电路板上是更符合成本效益的调试方式。有些 PSoC1 开发板使用这种方法来实现调
试。这些开发板通常可由片上 RJ-45 连接器识别。
OCD 接口信号:ICE 包含 M8C 微控制器的精确副本。ICE 将同时启动两个微控制器(M8C 和它的副本),并且同步
运行它们。M8C 必须以够快的速度将 IO 数据发送到 ICE,这样才可以维持 M8C 和 ICE 的同步。ICE 通过 8 引线的接
口(RJ-45 连接器)与远端 M8C 进行通信。表 3 显示了调试期间所使用的 OCD 接口信号。
表 3. OCD 接口信号
引脚编号
方向(与 ICE 相对)
信号名称
说明
1
输入
U_HCLK
2
输出
ICE_POD_GND
24/48 MHz调试时钟由远端M8C驱动。该时钟用于驱动ICE/M8C
通信状态机。它一直运行于24 MHz速度,除非U_CCLK时钟运
行于24 MHz,然后切换到48 MHz。
远端 M8C 的地线。
3
输出
ICE_POD_RST
远端 M8C 的高电平有效复位信号。
4
输出
ICE_POD_GND
远端 M8C 的地线。
5
输入
U_CCLK
内部 M8C CPU 时钟。
6
输入
U_D1_IRQ
7
输入/输出
U_D0_BRQ
8
输出
ICE_POD_PWR
M8C使用的两个数据线之一,用于将IO数据发送到ICE上。该线
也用于上报给ICE挂起的中断。该线由M8C控制。
M8C使用的两个数据线之一,用于将IO数据发送到ICE上。ICE
使用该线来传输停止请求。
远端 M8C 的可选电源。
a. RJ45 连接器的引脚数目。
有关如何在电路板上直接添加 OCD 部件的更多信息,请参阅附录 A — 向 PCB 添加 OCD 部件。板上 OCD 调试器的
原理图如图 29 所示。
使用已安装的 OCD 器件将 ICE 连接至电路板类似于上文所述的将 ICE 连接至 CY3210-EvalPod 的过程。唯一的区别
是线缆将连接至目标电路板 RJ-45 连接器,而不是 EvalPod。图 16 显示了一个示例。
www.cypress.com
文档编号:001-79031 版本*C
11
Debugging with PSoC® 1 进行调试
图 16. ICE + 带有板上 OCD 器件的 CY3214
3.4.4
使用 ICE 进行器件编程
ICE 也可以使用 CY3215A-DK 附带的 5 引脚在线串行编程(ISSP)线缆进行 PSoC 器件编程。
按以下步骤进行操作:
1.
将 ICE 连接至 RJ-45 适配器。
2.
将 ISSP 线缆连接至 RJ-45 适配器。线缆通常为黄色或黑色,一端为 RJ-45 连接器,另一端为白色的 5 引脚连接
器。
图 17. ICE ISSP 线缆
3.
将 5 引脚连接器母头与目标电路板上的 5 引脚编程头相连。图 18 显示的是一个 ICE 和为 ISSP 配置的目标电路
板。
图 18. ICE 编程配置
www.cypress.com
文档编号:001-79031 版本*C
12
Debugging with PSoC® 1 进行调试
表 4. 5 引脚编程连接器与 8 引脚模块化连接器相连
信号
5 引脚编程连接器
8 引脚模块化连接器
Vdd
引脚 1
引脚 4 和引脚 7
GND
引脚 2
引脚 1 和引脚 5
XRES
引脚 3
引脚 3
Sclk
引脚 4
引脚 6
Sdat
引脚 5
引脚 8
注释: 该配置无法进行调试。5 引脚 ISSP 线缆连接的是器件的编程引脚,这种引脚与而调试用的引脚并不相同。
www.cypress.com
文档编号:001-79031 版本*C
13
Debugging with PSoC® 1 进行调试
4
调试环境 – PSoC Designer IDE
PSoC Designer 拥有一套功能强大的代码开发和调试工具。这些调试工具可用于 ICE 和本应用笔记的调试硬件的环境
建立部分中提及的所有硬件配置。
下面将简要介绍 PSoC Designer 中的关键调试步骤。要了解关于各种特性的更多信息,请参阅 IDE 用户指南中的调试
器部分。要想选择 IDE 指南,请点击此处或在 PSoC Designer > Help > Documentation > Designer Specific
Documents > IDE User Guide.pdf 地址下查阅它。
4.1
启动调试器
要将 PSoC Designer 连接至 ICE 并开始调试,请确保 ICE 和电路板均已供电,并且 ICE 已通过 USB 线缆与计算机相
连。目标电路板可独立供电,也可通过 ICE 供电。要控制目标电路板的供电方式,可以在 PSoC Designer 中对调试器
进行设置。调试器设置可通过 Project -> Settings -> Debugger 窗口访问,如图 19 所示。
图 19. 调试器项目设置
如果同一计算机连接了多个 ICE 器件,则您可以通过图 19 中的设置选择连接至哪个 ICE。该设置窗口还可以配置 ICE
为转接板供电。如果用 ICE 为转接板供电,则必须指明转接板的供电电压。仅能使用 5.0 V 和 3.3 V 的供电电压。
在将 ICE 连接至计算机,并采用了适当的设置后,系统便可进行调试了。PSoC Designer ICE 工具栏提供了各种控
件,用于连接至 ICE,其功能如表 5 所示。
www.cypress.com
文档编号:001-79031 版本*C
14
Debugging with PSoC® 1 进行调试
表 5. ICE 连接控制
图标
功能
说明
连接
将 PSoC Designer 连接至已安装的 ICE Cube。
下载
将编译代码下载至 ICE 和 OCD 部件。
刷新 M8C 视图
更新 PSoC Designer 中显示的内存和变量。
获取下一追踪数据
在追踪窗口中添加 64 行代码执行信息。更多有关信息,请查看追踪内容。
如果在向 ICE 连接或下载程序的过程中出现问题,请参阅本文档中的故障排除部分。
4.2
调试控件
PSoC Designer 提供了一系列命令,可以控制在所连接的 ICE 和 OCD PSoC 上的代码执行。调试器支持若干种控制程
序流的标准方法,如表 6 所示。
表 6. 基本调试控件
图标
功能
进行调试
运行至光标处
启动调试器。
在光标当前所处位置为源代码创建一个临时(不可见)断点,并运行应用到该
断点处暂停。
停止
停止调试器。
复位
将器件的 PC 值复位至“0”并重启调试器。
单步执行
(Step Into)
单步执行下一语句。
单步跳出
(Step out)
跳出当前函数。
单步跳过
(Step Over)
跳过下一语句。
单步 ASM
(Step ASM)
执行一行汇编代码。如果当前代码行为 C 代码,则将打开列表文件并执行一行
汇编代码。
执行程序
www.cypress.com
说明
连接至 ICE,下载程序并开始运行。
文档编号:001-79031 版本*C
15
Debugging with PSoC® 1 进行调试
断点是 PSoC Designer 和 ICE 的另一个调试工具。一个断点即是代码中的一个标志,在运行到标志行时,将暂停执
行。左键单击代码行旁的边缘即可添加断点,也可以在代码编辑器中右键单击相应行,并选择“Insert Breakpoint”
(插入断点)。插入了断点的代码行如图 20 所示。图中也显示了一个“书签”(第 15 行),您可以右键单击代码行
旁边的边缘添加书签。书签用于标记代码中需要注意的地方,并不影响代码的执行。
图 20. 书签和断点示例
图 21 显示了在一个调试会话期间 PSoC Designer 中可用的众多调试窗口。图中所示的全部窗口均为可选的,可以根
据您的喜好移动并改变大小。下面将简要描述每个窗口,关于各个窗口的更多信息,请参阅 IDE 用户指南。要想选择
IDE 指南,请点击此处或在 PSoC Designer > Help > Documentation > Designer Specific Documents > IDE User
Guide.pdf 地址下查阅它。
图 21. PSoC Designer 调试窗口
www.cypress.com
文档编号:001-79031 版本*C
16
Debugging with PSoC® 1 进行调试
Code Editor(代码编辑器)窗口:代码编辑器窗口在调试会话期间显示代码。该窗口还显示断点位置以及代码暂停执
行的位置(如果程序未运行)。调试过程中不能编辑代码。如果在调试器运行时编辑代码,PSoC Designer 将会退出
调试模式,并允许对代码进行修改。
Watch Window(监视窗口):监视窗口将在调试会话期间显示用户添加的所有监视变量。 要想向监视窗口中添加变
量,可以在调试会话期间右键单击代码编辑器窗口,然后单击 Add Watch(添加监视)。
Locals Window(本地窗口):本地窗口显示程序暂停时处于范围内的局部变量。当前范围中的局部变量将会被自动
添加。
Additional Debug Information(其它调试信息):PSoC Designer 总会在屏幕下方显示有用的调试信息。具体包括:





累加器的当前值(A)
X 寄存器(X)
堆栈指针(SP)
程序计数器(PC)
标志寄存器(F)
此外,ICE 的连接速度和连接状态信息也将在此处显示。
Memory Window(内存窗口):程序暂停时,用户可以在内存窗口中查看芯片上的各个存储器区域。 在内存调试窗口
中,每个区域(RAM、FLASH、IO 组 0、IO 组 1)均有独立标签。在有效调试会话期间,可以编辑 RAM、IO 组 0 和
IO 组 1。
CPU Registers Window(CPU 寄存器窗口):CPU 寄存器窗口显示 PSoC 器件的各种内部 CPU 寄存器。这些寄存器
为累加器(A)、标志寄存器、程序计数器(PC)、堆栈指针(SP)和 X 寄存器。在有效调试会话期间,可以编辑
CPU 寄存器窗口显示的值。
Breakpoints Window(断点窗口):断点窗口显示项目中所有已放置的断点,包括文件名称和每个断点所处的行号。
可以在该窗口中单独删除、禁用或启用某个或全部断点。
4.3
追踪
用户可以通过 PSoC Designer 和 ICE 调试器中的 Trace(追踪)窗口追踪和记录每条指令的活动。该窗口将显示连续
可配置的器件内部操作列表。每次开始执行程序时,均会清空追踪缓冲器。缓冲器被写满后,将继续运行并覆盖之前的
数据。
共有三种可用的追踪模式,描述如下。
追踪模式 1(PC) — 列出程序计数器(PC)以及 PSoC 执行的每条汇编指令。
图 22. 追踪模式 1 - PC
www.cypress.com
文档编号:001-79031 版本*C
17
Debugging with PSoC® 1 进行调试
追踪模式 2 - PC/寄存器 — 列出 PC、指令、数据、累加器(A)、X 寄存器、堆栈指针(SP)、标志寄存器和 SRAM
分页。
图 23. 追踪模式 2 - PC/寄存器
追踪模式 3 - PC/时间记录 — 列出 PC、指令、累加器(A)、SRAM 分页和时间记录。时间记录会持续记录程序执行
的 CPU 周期,能够有效地对一段代码所需执行的 CPU 周期进行计数。
图 24. 追踪模式 3 - PC/时间记录
追踪缓冲器的大小为 256 KB,在追踪模式 1 下,可追踪 128 K 的指令,而在追踪模式 2 和 3 下,则可追踪 32K 的指
令。
可以通过 Debug->Windows->Trace 菜单打开追踪窗口。可以使用 Debug->Trace Mode 菜单修改追踪模式。打开追
踪窗口后,在程序暂停时,追踪窗口将会加载最近 64 条追踪条目。要再加载 64 个条目,可使用“Get Next Trace
Data”(获取下一追踪数据)工具栏或菜单选项。此外,也可以使用“Get all Trace Data”(获取所有追踪数据)菜
单选项,加载所有可用的追踪数据。
4.4
Events(事件)查看器
您可以使用事件查看器定义条件或者条件序列,在满足这些条件时,触发断点或追踪。这样,您便可以检查并调试更为
复杂的代码序列,而使用标准调试工具则无法实现这种功能。
可以对事件进行配置,使其适用于多种调试情况。设置一个事件相当于编写一个标准的 if-then 语句。首先,进行比
较。如果比较结果为真,则执行一项操作。这个操作可以是设置断点、启动/停止跟踪缓冲器或者继续运行至另一 ifthen 语句。您最多可以定义 64 条语句。
“if”语句由 8 位或者 16 位线程组成。每个线程可以对若干可用的 8 位或 16 位源进行比较,例如 RAM 地址、PC 值
或者堆栈值。
要增加“if”语句的灵活性,可以独立使用 8 位和 16 位比较或者通过逻辑函数(OR、AND、NOR、NAND)进行组
合。此外,您还可以翻转每个 8 位或者 16 位线程的逻辑输出,以便更好地支持检测低电平有效数据或已清空的数据。
www.cypress.com
文档编号:001-79031 版本*C
18
Debugging with PSoC® 1 进行调试
Events(事件)调试窗口,如图 25 所示,可以在 PSoC Designer 中通过 Debug > Windows > Events 菜单访问。该
窗口中的一部分可用于选择和显示全部 64 条可用事件的状态。要配置某一事件状态,只需在窗口的上半部分选择该事
件,然后在下半部分的状态设置中设置配置参数即可。每种有效设置将于后面的章节详细介绍。
图 25. Events(事件)调试窗口
下面将说明可用事件的 8 位线程、16 位线程、逻辑比较和输出选项。
4.4.1
8 Bit Thread(8 位线程)选项
8 位线程提供了几种对 PSoC 内部 8 位参数进行计算的方法。可以针对具体数值或介于 0x00 到 0xFF 的数值范围进行
比较。
Invert(反转):可以使用该选项反转 8 位参数的比较结果。
Mask(掩码):通过掩码字段可以在参数比较之前对输入数据的指定位进行屏蔽。如果您仅关注所选择参数值的某些
具体位,则此选项将非常有用。
Parameters(参数):您可以通过参数下拉菜单选择用于 8 位比较的字段。可用的 8 位参数比较选项如下所示。
NONE: 禁用 8 位线程比较。
A:累加器比较。计算累加器中的数据。
IO_DA:寄存器地址比较。计算寄存器存储空间中的数据地址。
IO_DB:寄存器数据比较。计算寄存器存储空间中数据总线上的数据。
IR: 指令寄存器比较。 计算指令寄存器中的指令操作码。
MEM_DA:RAM 地址比较。计算 RAM 存储空间中的一个地址。
www.cypress.com
文档编号:001-79031 版本*C
19
Debugging with PSoC® 1 进行调试
MEM_DB:RAM 数据比较。计算 RAM 存储空间中数据总线上的数据。
SP:堆栈指针比较。计算堆栈指针的当前地址(并非 SP 指向的数据)。
X:X 寄存器比较。计算 X 寄存器的当前值。
BITFIELD:允许对芯片内部操作进行特定标志检查,例如发生写入或读取操作时,或置位了零标志或进位位标志时。
可用的 BITFIELD 检查如下。可以同时检查多个标志。
位 0(0x01):RAM 读取标志
位 1(0x02):RAM 写入标志
位 2(0x04):寄存器读取标志
位 3(0x08):寄存器写入标志
位 4(0x10):全局中断标志
位 5(0x20):零标志
位 6(0x40):进位标志
位 7(0x80):扩展型 IO 标志
BITFIELD 比较选项通常会与一个附加比较(或一序列比较)结合使用。例如,位 1(RAM 写入标志)通常与 RAM 地
址和/或 RAM 数据比较(16 位线程)结合使用,以了解特定的值在何时写入某个 RAM 位置内。RAM 地址和 RAM 数
据比较会自行执行这些任务,在初始写入操作发生后,此类比较仍会继续直到为真(根据调试情况有些比较可能无需进
行)。
BITFIELD 中的位为低电平有效。要检查 BITFIELD 中的具体位,可以进行以下操作:

使用 Mask(掩码)字段检查所需的位。例如,要检查零标志,可将 Mask 值设为 0x20。这样就可以屏蔽不需要的
位,因此,参数比较将不会对这些位进行计算。

将比较参数的高低值均设置为 0。由于掩码已经筛选了关注位,所以不需要进行参数比较。如果比较的高低值均为
00,则所有通过掩码的位都将进行比较计算(因为 BITFIELD 位为低电平有效)。
欲了解演示 BITFIELD 比较参数的具体示例,请参考示例 1:具体地址的写入中断和示例 2:具体值和地址的写入
中断。
4.4.2
16 Bit Thread(16 位线程)选项
16 位线程提供了几种对 PSoC 内部 16 位参数进行计算的方法。可以针对具体数值或介于 0x0000 到 0xFFFF 的数值范
围进行比较。请注意,16 位线程中的有些可用比较选项只有 8 位宽,针对这种选项,将对 0x00 到 0xFF 之间的数值进
行计算。
Invert(反转):可以使用该选项反转 16 位参数的比较结果。
Parameter(参数):参数下拉菜单提供了很多 8 位线程中可用的比较,此外,还含有对若干附加 16 位宽参数进行比
较的选项。 一些 16 位比较允许在一次比较中同时检查两个 8 位参数。可用的 16 位比较选项如下所示。
NONE:选中该选参数将禁用 16 位线程比较。
A1:累加器比较所提供的功能与 8 位线程版本的功能相同。
IO_DA1:寄存器地址比较的功能与 8 位线程版本的功能相同。
IO_DA_DB:结合了寄存器地址和数据比较。输入的高 8 位有效位将用于寄存器地址比较(类似于 IO_DA);输入的
低 8 位有效位则用于寄存器数据比较(类似于 IO_DB)。
IO_DB1:寄存器数据比较的功能与 8 位线程版本的功能相同。
IR1:指令寄存器比较所提供的功能与 8 位线程版本的功能相同。
IR_SP:结合了指令寄存器和堆栈指针比较。 高 8 位有效位执行一次指令寄存器比较;低 8 位有效位则执行一次堆栈
指针比较。
www.cypress.com
文档编号:001-79031 版本*C
20
Debugging with PSoC® 1 进行调试
MEM_DA1:RAM 地址比较的功能与 8 位线程版本的功能相同。
MEM_DA_DB:结合了 RAM 地址和 RAM 数据比较。高 8 位有效位执行一次 RAM 地址比较(类似于 MEM_DA);低
8 位有效位则执行一次 RAM 数据比较(类似于 MEM_DB)。
MEM_DB1:RAM 数据比较的功能与 8 位线程版本的功能相同。
PC16:程序计数器比较。使用该参数,您将可以计算程序计数器的当前值。
SP1:堆栈指针比较所提供的功能与 8 位线程版本的功能相同。
X1:X 寄存器比较的功能与 8 位线程版本的功能相同。
X_A: 结合了 X 寄存器和累加器比较。高 8 位有效位执行一次 X 寄存器比较;低 8 位有效位则执行一次累加器比较。
注意 1:在进行 A、IO_DA、IO_DB、IR、MEM_DA、MEM_DB、SP 和 X 比较时,仅计算 16 位宽输入比较字段中的
低 8 位有效位。对于超过 8 位的 RAM 或寄存器地址比较,将不会自动检查分页指针寄存器。
4.4.3
State Logic(状态逻辑)
Operator(运算符):如果 8 位线程和 16 位线程同时启用,则运算符字段可将两者按照一定的逻辑结合起来。 可用的
逻辑运算符为 AND、OR、NAND、NOR。如果 8 位线程或 16 位被禁用,则将忽略运算符。
Match Count(匹配计数):用户可通过匹配计数,指定在启用追踪或断点或移至其它事件状态前,事件应发生的次
数。匹配计数值可介于 1 至 32,767 之间。如果需要超过 32,767 次匹配,则可以将多个事件状态链接起来。
Next State(下一状态):通过该参数可以将多个事件状态链接起来,创建更为复杂灵活的事件序列。 如果符合当前事
件状态,包括达到指定的匹配次数,将会执行下一状态。如果不想创建状态链,则下一状态应设置为当前状态编号。
并非同时计算所有状态。始终先对状态 0 进行计算。如果状态 0 禁用或计算为假,则将不会对其余状态进行计算。因
此,所有事件或事件链必须以状态 0 开始,即使不需要链接也是如此。
Trace(追踪):如果事件状态输出和设置相匹配,则可能启动或停止追踪缓冲器。如果希望仅追踪代码的某个部分,
该选项将非常实用。
Break(断点):通过断点复选框,您可以指定在满足事件条件时,是否允许事件触发一个断点。
4.4.4
4.4.5
有关事件的注意事项
 触发事件条件中断后,PSoC Designer 会在事件发生后暂停两条指令周期的时间。暂停的原因是,事件参数的 ICE
计算比实际的转接板执行滞后两个指令周期。有时,在 C 语言调试中,这一现象并不明显,因为执行每行 C 代码可
能需要多行汇编代码。

在事件窗口中做出的修改不能应用到正在运行的器件中。对一个事件或者一系列事件做出修改时,必须在器件暂停
时单击应用按钮,以确保 ICE 识别更新后的事件。

在 8 位线程中使用 BITFIELD 比较参数时,需要执行两个操作:将比较的高低值均设置为 0x00,并使用 Mask 字段
选中恰当的 BITFIELD 参数。要获取 BITFIELD 参数的设置和使用示例,请参考示例 1:具体地址的写入中断。

在某个事件配置判断为真并触发了一个断点后,配置会继续计算为真(并继续触发断点)直至芯片状态变更为不会
引发事件判断为真的状态。例如,如果将一个事件配置为在将特定值加载至累加器时暂停,但是该条件后的指令并
不修改累加器,那么将会持续触发断点(每次 1 条指令),直到修改累加器为止。
事件常见用法
事件适用于很多调试情况,但是其可能常见的用法包括:







查找何时寄存器或 RAM 地址读取或写入(参见下方事件示例 1 和示例 2)。
检查堆栈溢出(参见下方示例 3:堆栈溢出)。
检测一个跳转或者一次函数调出。
追踪具体的一段代码。
测量中断延迟。
在一行代码执行到第“n”次时中断(匹配计数,参见下方示例 4)。
进位位标志状态中断。
www.cypress.com
文档编号:001-79031 版本*C
21
Debugging with PSoC® 1 进行调试


等待一定的指令数量。
累加器中的具体数据匹配时中断。
以下将详细说明如何为几种常见的用法示例设置并使用事件工具:
4.4.6
示例 1:具体地址的写入中断
在某些情况下,了解具体地址的写入时间很有价值。
例如,I2C 从器件出现了间歇式问题,主器件会定期在从器件中读取一个不正确的值。您可能无法知道何时 I2C 数据寄
存器加载这一不正确的值。这时,可以在 I2C 输出数据寄存器发生写入操作时使用事件触发中断。
要实现这一操作,可以使用 8 位线程检查寄存器地址写入操作何时发生。这项检查还可以结合一个检查 I2C 数据寄存
器地址的 16 位线程。当该地址发生写入操作时,会产生一个断点。
要想在进行具体地址的写入操作时发生中断,需要配置以下参数:
1.
2.
3.
设置 8 位线程的各项参数。
a.
将“Parameter”设置为“BITFIELD”。通过这一设置,您可以进行一系列检查,包括在本示例中用到的“
寄存器写入”检查。
b.
由于 BITFIELD 为低电平有效,将参数比较的高低值均设置为“00”,这样将会检查所有位。Mask(掩码)
值用于检查关注的具体位。
c.
将掩码值设置为 0x08,这样,只要执行寄存器写入操作,BITFIELD 比较便会计算为真。
设置 16 位线程的各项参数。
a.
将“Parameter”设置为“IO_DA”。通过这一设置,具体寄存器地址位于总线时,将发生事件。
b.
将比较的高低值均设为“D8”。这是 I2C 模块的数据寄存器。可以在用户模块数据手册或者技术参考手册中
找到该寄存器或任意其它模块的寄存器信息。
设置状态逻辑的各字段。
www.cypress.com
文档编号:001-79031 版本*C
22
Debugging with PSoC® 1 进行调试
4.4.7
a.
将“Operator”字段设置为“AND”。该字段将配置事件状态,旨在仅在 8 位线程与 16 位线程所定义的条件
同时满足后,事件才会计算为真。在这种情况下,仅在 I2C 数据寄存器发生写入操作时(读取操作将被忽
略),事件才被计算为真。
b.
将 Match Count(匹配计数)设置为 1。该事件仅需发生一次,就会触发断点。
c.
将 Next State(下一状态)设置为 0。在这种情况下,只需一个事件状态即可对所需条件进行计算,因此,不
需要状态链。
d.
无需配置 Trace(追踪)中的“Start”(启动)和“Stop”(停止)选项。在本示例中未进行追踪。
e.
选中“Break”(中断)复选框。这样,只要为整个事件状态定义的条件计算为真时,即会产生断点。
示例 2:具体值和地址的写入中断
为了扩展事件示例 1,设计者可能还希望了解具体值何时写入寄存器。示例 1 中所示的事件会在每次有值写入 I2C 数据
寄存器时中断,但是,仅在错误数值写入寄存器时才产生中断,可能会更为实用。
要增加这一功能,必须对 16 位线程稍作修改。事件状态的其它部分则应保持不变,如示例 1 所指定。
1.
设置 16 位线程的各项参数。
a.
将“Parameter”设置为“IO_DA_DB”。通过这项设置,将具体值写入总线上具体寄存器地址时,将发生
事件。
将比较的高低值均设为“D8AA”。这样,只要 0xAA 写入 I2C 数据寄存器(0xD8)就会发生中断。请注意,
通过修改比较的高低位值,可以检查某个范围内的数值,而不仅仅是 0xAA。
4.4.8
示例 3:堆栈溢出
事件查看器的另一有效应用是检查堆栈溢出,堆栈溢出可能引发意外行为,有时还会增加调试的困难程度。但所幸,
使用事件查看器,可轻松检测堆栈溢出,监控堆栈使用情况。
要使用事件对程序的堆栈溢出进行监控,必须配置一个 8 位线程,用于监视堆栈指针。要在堆栈溢出将要发生前产生
中断,应配置以下参数。
1.
2.
设置 8 位线程的各项参数:
a.
将“Parameter”设置为“SP”。通过这一设置,可以监控堆栈指针值。
b.
将低比较值设为 FD,高比较值设为 FF。这样,当堆栈指针达到 FD 时,将触发中断。
c.
将 Mask(掩码)值设置为 FF。该设置不会屏蔽任何位。
将 16 位参数值设为 NONE,以确保禁用 16 位线程。
www.cypress.com
文档编号:001-79031 版本*C
23
Debugging with PSoC® 1 进行调试
3.
设置状态逻辑的各字段。
a.
运算符的选择并不重要,因为已禁用了 16 位线程。在禁用 16 位线程的情况下,会忽略运算符选择。
b.
将“Match Count”设置为 1。这样,事件只需发生一次,即会触发断点。
c.
将“Next State”设置为 0。在这种情况下,只需一个事件状态即可对所需条件进行计算,因此,不需要状态
链。
d.
无需配置 Trace(追踪)中的“Start”(启动)和“Stop”(停止)选项。本示例未进行追踪,但是在尝试确
定堆栈溢出的原因时,追踪功能非常实用。
e.
选中“Break”(中断)复选框。这样,只要为整个事件状态定义的条件计算为真时,即会产生断点。
有关堆栈溢出的更多信息,包括不用调试器检查堆栈溢出的方法以及避免堆栈溢出的技巧,请参考附录 B — 堆栈溢
出。
4.4.9
示例 4:事件发生 X 次后中断
该示例将描述如何在事件条件已多次计算为真后设置一个断点。该操作能够帮助开发人员更为精确地控制程序何时停止
执行。
在本示例中,事件查看器设置为在第 254 次进入以下代码中的 for 循环时产生中断:
BYTE x;
for(x = 0; x < 255; x++)
{
PRT0DR ^= 0x01;
}
该事件状态的配置与示例 1 中的状态类似。BITFIELD 参数用于检测寄存器写入。 该参数与检查 PRT0DR 寄存器的 16
位线程配合使用,在每次进行循环时,递增事件计数。要配置该事件状态,需要如下修改事件:
1.
设置 8 位线程的各项参数。这些设置与示例 1 中使用的设置相同。请参考示例 1,了解每个设置的更多详细描述。
2.
设置 16 位线程的各项参数。这些设置类似于示例 1 中的设置,仅需将地址比较修改为 00(PRT0DR 地址)。
www.cypress.com
文档编号:001-79031 版本*C
24
Debugging with PSoC® 1 进行调试
3.
4.5
设置状态逻辑的各字段。与示例 1 的唯一区别是 Match Count(匹配计数)的值变更为“254”。这样,在循环了
254 次之后,事件会被计算为真并触发一个断点。
映射文件(.mp)
映射文件在编译过程中生成,包含全局符号地址以及内存中所定义区域的信息。映射文件是一个实用的调试工具,可用
于确定变量或者一段代码在内存中的位置或者某串代码所占用的内存空间。
映射文件中将不会显示变量、函数或标签。
映射文件中的每个部分如图 26 所示。图中的布局和描述均针对于 ImageCraft C 编译器和 V7.0.5 连接器,编译器版本
如有不同,映射文件也可能略有差异。映射文件位于 PSoC Designer Workspace Explorer(工作区浏览器)的
“Output Files”(输出文件)文件夹中。
图 26. 映射文件及相关注释
第一部分:基本信息
映射文件的开头(1-5 行)列出了项目的基本信息,包括项目名称、日期、最后编译的时间记录以及编译器版本。
第二部分:区域名称、位置、大小和类型
下一部分(8-10 行)是下一内存区域的标题。该部分显示的是区域名称、位置(内存地址)、大小和区域类型。
区域名称:区域名称在声明区域时进行分配。区域是存储器的一部分,用于存储编译器的代码和数据。用户可以指定自
己的内存区域,但是 ImageCraft 编译器会使用几个预定义的区域。
top:包含中断向量和 boot.asm 代码。该区域位于 ROM 的地址 0。
lit:包含常量数据,位于 ROM 中。
idata:储存全局数据的初始化数值。
www.cypress.com
文档编号:001-79031 版本*C
25
Debugging with PSoC® 1 进行调试
text:保护用户代码。
psoc_config:包含用于配置器件的函数(以及用于对器件进行动态重新配置的函数)。
usermodules:包含用户模块 API 程序。
区域位置:这是区域的起始地址。这是 ROM 地址(对于 ROM 定义的区域)或 RAM 地址(对于 RAM 定义的区域)。
区域大小:这是区域的总大小,提供十六进制和十进制两种数值。区域末尾为区域起始位置加上区域大小。
区域类型:这是给定区域的已定义属性。这些属性定义了区域中存放的数据类型,以及链接器对该区域的放置方法。以
下为可用于定义区域类型的有效关键字完整列表:
REL — 可重定位区域。该关键字允许链接器将区域重新定位至其选择的地址。可重定位区域没有预定义的位置,
其地址在编译的链接阶段确定。
ABS — 绝对区域,或不可重定位区域。该关键字的含义是,区域地址已在代码中定义,并且链接器不可移动。
区域可以是可重定位的,或是绝对的,但不能兼具两种属性。
CON — 联结区域。该关键字表明在存储器中各区域将顺序相连。
OVR — 覆盖区域。该关键字表明多个覆盖区域可以具有相同的起始地址,并可以占用相同的内存空间。它仅适用
于 RAM 区域。
区域可以是联结的,也可以是覆盖的,但不能兼具两种属性。
RAM — 指出数据存储在 RAM 中,并且仅用于变量存储。
ROM — 指出数据存储在 Flash 中。代码和常量数据均可存储在 ROM 区域中。
区域可以是 RAM,也可以是 ROM,但不能兼具两种属性。
在本示例中,所示区域为“lit”,即文字数据区域。该区域存储项目中使用的所有常量数据。总大小为 235 字节,区域
类型“rel、con、rom”指程序(ROM)存储器空间中可重定位的联结区域。
第三部分:所有符号的名称和地址。
该部分描述了第二部分中所描述和定义区域的内容。区域中每个符号的地址和名称按顺序罗列。由于所有符号均是依次
排列的,因此,每个符号的大小均可通过比较给定符号与下一符号的地址而确定。
列出的地址与给定区域的存储器类型相对应(对于 RAM 区域,该地址将为 RAM 地址;对于 ROM 区域,该地址将为
ROM 地址)。
在该区域中,并非所有符号都会占用内存。全局符号标签也出现在列表中。例如,图 26 中的“_lit_end”符号仅用于
指出 lit 区域结束的地址(地址 0x028B),而不占用任何物理内存。
4.6
列表文件(.lst)
PSoC Designer 生成的另一有用文件为列表(.lst)文件,包含 C 编译器生成的汇编代码。在调试不正常运行的功能或
者尝试用一段 C 代码与一段汇编代码混编时,请参考列表文件。调试器的“Step ASM”(单步 ASM)功能也可以引
导用户转至列表文件。
图 27 列出了列表文件中的一段,并重点标识出了关键信息。对于 C 语言源文件中的每一行,列表文件将重新列出了 C
代码行,并依次列出给定行所需的所有已编译的汇编代码。列表文件的结构是从 Flash 的 0x00 地址开始,按顺序列出
所有已编译代码,直至存储器存满。因此,在较大的项目中,列表文件会很长。使用搜索功能可以轻松地在大型列表文
件中找到某一函数或一段代码。
每行汇编代码还会列出指令的代码地址和具体操作码以及汇编指令操作码的操作数。欲了解汇编操作码的更多信息,请
参考汇编语言用户指南(地址为 PSoC Designer > Documentation > Compiler and Programming Documents >
Assembly Language User Guide)。
www.cypress.com
文档编号:001-79031 版本*C
26
Debugging with PSoC® 1 进行调试
图 27. 列表文件及相关注释
选取的这段 列表文 件展示 了 函数“MyFunction”,这一函数将常量 值赋给 三个全 局 变量( MyVar1、 MyVar2 和
MyVar3)。如上图所示,C 语言的每个赋值操作均被编译成两行汇编代码;一行用于设置分页寄存器,另一行用于为
变量赋值。
www.cypress.com
文档编号:001-79031 版本*C
27
Debugging with PSoC® 1 进行调试
5
PSoC1 调试提示和技巧
本部分记录了调试 PSoC1 器件时需要注意的一些技巧。
5.1
在“停止”期间硬件仍然运行
ICE 可以模仿并控制 PSoC 器件内部的代码执行状态,但不能对器件的数字和模拟部分进行显式控制。因此,在调试器
暂停时,其它硬件元件仍将继续运行。调试器在某一断点处所报告的硬件值是在暂停时所有寄存器数值的快照。
在处理计数器和定时器时,或者在处理使用计数器和定时器的用户模块(例如一些 ADC 用 户模块)时,这种现象尤为
明显。在调试器暂停了 CPU 的执行后,计数器仍将继续运行。因此,在程序恢复调试后,定时器/计数器/PWM(以及
使用计数器的任意 ADC)报告的第一个值可能是不正确的。在报告了第一个错误值后,定时器/计数器/PWM(以及使
用定时器的任意 ADC)会重新进行同步,并开始报告正确数值。
如果调试取决于 ADC 读数的精度,则可以应用以下两种解决方法确保调试器报告的 ADC 数值准确无误:
5.2
1.
Flash 写入调试。在程序运行时,左键单击代码窗口左侧边缘(行号左侧),在读取 ADC 结果的指令后面动态设
定断点。这样,程序暂停时,从 ADC 中读取的值将是正确的。要获得另一读数,可清除断点、运行程序,并重新
动态放置断点。
2.
如果所选的 ADC 支持单独采样模式(例如增量型 ADC),那么还可以使用另一种方法。在单独采样模式下运行
ADC,而不以连续采样模式运行。在单独采样模式下,每次完成转换后,计数器和定时器都会停止,这样便可确
保 ADC 返回的数值正确(前提是从转换开始到返回结果期间没有任何断点)。请注意,这种方法并不适用于基于
Delta-sigma 的 ADC。
Flash 写入调试
在开发一个包含内部闪存写入的项目时,可以使用 ICE 和调试器。比如一个引导加载程序或其它将数据保存至闪存的
应用。在使用 ICE 调试器包含闪存写入程序时,请注意以下几点:
5.3

要允许 ICE 仿真闪存写入,则要写入的闪存模块必须处于无保护状态。无保护闪存是允许外部器件写入闪存的唯
一安全设置。虽然 ICE 对外部闪存写入进行仿真,但从技术角度来讲,ICE 仍然是 PSoC 器件内请求闪存更新的
外部器件。

与独立 PSoC 器件的闪存写入相比,使用 ICE 仿真闪存写入的耗时将显著增加。在闪存写入期间,ICE 和 PSoC
器件之间需要进行的通信活动会耗费一定时间。ICE 的写入次数各不相同,但通常为 PSoC 器件数据手册中定义的
典型写入次数的 10 到 20 倍。

在不使用 m8ssc.inc(所有的 PSoC Designer 项目均有该文件)中的宏 SSC_Action (OpCode)的情况下,请不
要尝试执行系统管理程序调用(SSC)指令。这些指令导致闪存写入操作或其它 SSC 指令必须遵循特定的顺序,
这样,ICE 才能检测并仿真 SSC 指令。SSC_Action 宏执行正确的指令序列来使 SSC 操作期间启用仿真功能。
用户模块及赛普拉斯提供的库(例如 Flashblock 写入库)均使用了正确的 SSC 宏。

E2PROM 用户模块和 Flashblock API 库闪存写入例程可作为预编译库供用户使用。在调试过程中,这部分源代码
不提供给调试器的“Step Into”(单步执行)功能,也不可用。但是,在执行“Step Over”(单步跳过)时,函
数仍会正确执行。
在睡眠模式下使用调试器
在调试使用睡眠功能的项目时,请注意以下几点:

不能在 M8C_Sleep 指令的下一行放置断点。在进入睡眠状态之前,睡眠操作会预提取下一条指令。这样,如果在
睡眠指令后立即触发断点,则 ICE 便与 PSoC 不再同步并会断开。

调试器不允许单步执行或单步跳过睡眠指令;这么做会使 ICE 与器件断开。要避免这种情况,请在睡眠指令后间
隔两行再设置断点,并允许调试器自由运行至断点,而不是精确地单步跳过睡眠指令。

如果在手动暂停调试器时,连接的 PSoC1 器件正处于睡眠状态,则 ICE 将会断开。要避免这种情况,使用睡眠功
能的项目应始终通过断点或者事件暂停正在运行的程序,而不是直接单击暂停命令。
www.cypress.com
文档编号:001-79031 版本*C
28
Debugging with PSoC® 1 进行调试
6
其它调试方法
本部分将介绍其它的调试工具和技巧。这些技巧和方法没有标准调试设置的功能集,但在标准 ICE 调试设置不可用或
不适用的情况下,也是极具成本效益的选择。此外,在需要实时调试支持的情况下,这些方法非常适用,可以不用物理
停止器件运行而进行调试。
6.1
使用 I2C-USB 桥接器进行调试
I2C-USB 桥接器可以将计算机的 USB 接口桥接至 PSoC 的 I2C 用户模块,以用于测试、调整和调试 PSoC 应用中的硬
件和软件。桥接器的作用相当于一个 I2C 主机,通过 USB 接口向总线上的任意 I2C 从器件发出命令。
赛普拉斯提供了 CY8CKIT-002 PSoC MiniProg3 编程和调试套件,作为 I2C-USB 桥接器使用。MiniProg3 具有内置的
I2C-USB 桥接器功能,可以对所有 PSoC1、3 和 5 器件进行编程。MiniProg3 如图 28 所示。
图 28. MiniProg3 — I2C-USB 桥接器
在调试实时应用时,或在 ICE/OCD 设置不可用的情况下,I2C-USB 桥接器非常实用。在这种方式下,ICE 和支持
OCD 的 PSoC 均不需要进行调试。
典型的用法实例中含有以下工具:



一个 I2C-USB 桥接器。
带有一个运行的 EZI2C 从器件用户模块的目标 PSoC 器件,它被连接至 P1[5]和 P1[7]或 P1[0]和 P1[1]。
运行桥接器控制面板软件的计算机,用于向桥接器发出指令。
I2C-USB 桥接器即可作为 I2C 主器件,连接到主机计算机和目标 PSoC 器件之间。桥接器控制面板用于周期性查询
PSoC 器件以获取信息。轮询率和传递数据量完全可配置,能够帮助您查看正在运行的 PSoC 器件上的实时调试信息。
常见 I2C-USB 桥接器调试用例:

传输实时 Capsense 按钮调校数据。桥接器控制面板也可支持输入 I2C 数据的实时图样化。在该用例中,PSoC 程
序定期将按钮信息加载至 I2C 阵列内,而 I2C 桥接器则周期性地查询该类数据。

监视预定义“监视”变量集。在该用法实例中,PSoC 程序会定期将所关注的任意变量复制到 I2C 阵列内,而 I2C
桥接器则周期性地查询并监视此类数据。

测试 I2C 从器件的功能。I2C-USB 桥接器的作用相当于一个 I2C 主器件,可以测试总线上任意 I2C 从器件的功
能。

测试基于 I2C 引导加载程序的功能。I2C-USB 桥接器常用于与基于 I2C 的引导加载程序进行通信。PSoC
Designer 可支持生成下载文件,桥接器控制面板可以直接使用这些文件进行 I2C 引导加载操作。
有关桥接器套件和如何使用它们的更多信息,请参见 CY8CKIT-002 PSoC MiniProg3 编程和调试套件。
6.2
使用 UART 接口调试
使用 UART 接口进行调试是针对嵌入式处理器的常用策略。所幸,向 PSoC1 器件添加 UART 接口十分容易,很多
PSoC1 开发套件均带有可供使用的 RS-232 收发器。
此外,您还可以在几乎所有的计算机上查看 UART 器件发送的信息。串行端口越来越少用,但 USB-UART 桥接器件则
非常普遍。用于查看数据的计算机软件也被广泛地使用,例如 Hyperterminal(超级终端)。
www.cypress.com
文档编号:001-79031 版本*C
29
Debugging with PSoC® 1 进行调试
UART 调试方法的常见用例类似于上文列出的 I2C-USB 桥接器用例。UART 用户模块提供的 API 让 PSoC 器件的调试
信息传入和传出变得更加简单。可供选择的 API 包括 PutString、PutChar、GetString 和 GetChar。
有关在 PSoC1 上配置和使用 UART 的更多信息,请参考 PSoC Designer 中提供的 UART 用户模块数据手册。
6.3
引脚转换
引脚转换虽然是基本功能,但仍是一种很好的调试工具,特别适用于需要实时调试的情况。引脚转换通常用于以下情
况:

用两个引脚转换所关注的一段代码,以便计算该代码运行时长。这一技巧常用于对中断服务例程(ISR)的执行时
间进行计时。

检查是否正在运行某段代码。该任务可通过断点完成,但有时,使用这种方法有助于在不干扰代码执行的情况下完
成检查。
www.cypress.com
文档编号:001-79031 版本*C
30
Debugging with PSoC® 1 进行调试
7
故障排除
本部分将列出在使用 PSoC1 调试器时会遇到的常见问题,并将讨论可能的解决方案。
问题
可能的解决方案
转接板与项目所选的器件不匹配。每种转接板都支持其所属系列中的一些器件;请参考 PSoC 器件
数据手册,以确保正在使用的转接板或者 OCD 部件与项目所选的具体部件型号兼容。
请确保 PSoC 器件已正常供电。PSoC 可能通过外部供电或者通过 ICE 供电。Project >Settings >
Debugger 设置(如图 19 所示)中所选供电方法必须与实际供电方法相匹配。
ICE 无法检测或连接或与
转接板不兼容
ICE 未供电。应通过 12 V/1 A 直流电源为 ICE 供电。如果使用的是较低电压的电源,则 ICE 可能
会亮起,但不会正常运行。
转接板可能未正确连接。请参考调试硬件的环境建立部分,了解常用的调试硬件设置。
请确保只有一个 PSoC Designer 或者 PSoC Programmer 实例已开启并已连接至目标器件。
可能将过期版本的转接板连接至 ICE。请确保使用现行版本的转接板。
ICE 可能未正常供电。请确保已使用 12 V/1 A 直流电源为 ICE 供电。如果使用电压电流不符合规
格的电源供电,器件也许可以连接,但在调试开始后可能会失败。
请检查代码中是否存在闪存写入或者其它 SSC 指令。如果发生 Flash 写入操作,请参考 Flash 写
入调试部分,了解如何使用包含闪存写入程序的 ICE 调试器。
ICE 在调试会话期间断开
连接
请检查代码中是否存在任何睡眠操作。如果发生睡眠操作,请参考 Flash 写入调试部分,了解如何
在调用睡眠功能的项目中使用 ICE。
请避免在调试过程中使用锁相环(PLL)。要防止这一问题的产生,请在调试时关闭锁相环,并将
所有外部晶振硬件从 PSoC 上断开。
请避免在调试过程中使用外部晶体振荡器(ECO)。要防止这种问题的产生,请在调试时关闭
ECO,并启动内部主振荡器(IMO)。
请确认计算机、ICE 和 PSoC 之间已正确紧密相连。请参考调试硬件的环境建立部分,了解常用的
调试硬件配置。
调试会话期间产生无效参考
内存
无效参考内存(IMR)产生的原因与导致 ICE 在调试会话期间断开的原因相同。请参见 Flash 写入
调试部分,了解解决该问题的建议。
USB 线缆可能从 ICE 端或者计算机端拆开。请确保 USB 线缆正确连接,并等候几秒钟再尝试重新
连接。
无法找到选定的 ICE 端口
ICE 可能未正常供电。请确保已使用 12 V/1 A 直流电源为其供电。
请确保只有一个 PSoC Designer 或者 PSoC Programmer 实例已开启并已连接至目标器件。
项目执行于非预期位置暂停
可能触发了欠压检测(LVD),该操作会在 boot.asm(LVD 中断矢量)的地址 0x04 处暂停程
序,或在 LVD 中断服务例程(如果已定义)中暂停程序。
在这种情况下:
- 请检查 PSoC 供电状况。如果 PSoC 的电压波动至低于全局参数设置中的 LVD 激发电压,则会
发生 LVD 中断。
- 请检查并确保 ICE 正常供电。应使用 12-V/1-A 直流电源为 ICE 供电,使用其它供电方式可能会
引起发生意外行为。
- 如果 ICE 为目标器件或电路板供电,则请确保目标器件或电路板的所需电流小于 250 mA。
请确保未发生堆栈溢出。如果在函数调用期间,加载至堆栈的程序计数器(PC)值被覆盖,则堆
栈溢出会干扰 PC。在这种情况下,程序将会执行至代码中的非预期位置。请参考本应用笔记的附
录 B — 堆栈溢出部分,了解检测和预防堆栈溢出的技巧。
www.cypress.com
文档编号:001-79031 版本*C
31
Debugging with PSoC® 1 进行调试
问题
可能的解决方案
超出 USB 集线器的供电能力
如果电路板通过 ICE 供电,则其所需的电流可能会超出 ICE(及 USB 集线器)的供电能力。请使
用直接外部电源(而不是通过 ICE 供电)或者更靠近主 PC USB 端口的 USB 端口。
未检测到任何事件
请确保事件已正确应用。要使 ICE 能够识别事件状态,则在调试器暂停时,必须点击事件窗口内
的“Apply”(应用)按键。如果在调试器运行或者断开连接时点击应用事件状态,则事件信息将
不会应用至 ICE。
请确保已为所关注事件选中“Break”(中断)复选框。
如果所有方法均失败:
若可以,请使用第二个硬件集:
- 首先,更换一个不同的(最好是新的)ICE,查看能否解决问题。 如果该方法有效,则问题可能
出在 ICE 单元。
- 用 PSoC 单元替换转接板或电路板,以使用新的或不同的硬件集。如果问题得以解决,则可能是
转接板、PCB 或者 ICE 连接器出现故障。
卸载 PSoC Programmer 和 PSoC Designer 并重新安装这两个工具的最新版本。如果驱动或者其
它调试相关的工具软件没有正确安装,则会导致连接问题。重新安装可确保所需的工具已正确安装
并完成了最新的错误修复集。
8
总结
赛普拉斯提供很多硬件和软件工具,帮助您调试 PSoC1 项目。本应用笔记应该可以帮助您更有信心地了解在调试项目
或解决问题时会用到的硬件、软件和调试技巧。
关于作者
姓名:
Dan Sweet
职务:
高级应用工程师
www.cypress.com
文档编号:001-79031 版本*C
32
Debugging with PSoC® 1 进行调试
A
附录 A:向 PCB 添加 OCD 部件
如果支脚套件和转接板不适用于目标 PCB 或选定的部件型号没有适用的转接板,则一种可行的调试解决方案是直接向
PCB 布局中添加一个支持片上调试器(OCD)的 PSoC1 器件。
与标准调试转接板相比,直接向 PCB 添加一个 OCD 部件具有以下优势:



部件成本更低,因为不需要支脚套件和完整的转接板装配。
比起为每个需要调试的电路板分别购买一个转接板,创建多个具备调试能力的电路板更易实现。
由于不需要支脚套件,因此,PSoC 芯片所需的 PCB 空间更少。连接器需要板上空间,但其可位于距 OCD 部件 4
英寸远的位置。
向 PCB 添加 OCD 部件所需的器件列于表 7 中。
表 7. 板上 OCD 调试器所需的组件
说明
常量
备注
AMP/Tyco Electronics 器件型号 5557785-1
RJ-45 连接器
1
PSoC OCD 器件
1
请参见片上调试器(OCD)器件
56 Ω 电阻
4
1/16 W,5%
1 kΩ 电阻
4
1/16 W,1%
330 pF 电容
1
5 V 陶瓷 NPO
0.1 µF 电容
3
5 V 陶瓷 Y5V
DigiKey 器件型号 A31457-ND
板上 OCD 调试器所需的原理图如图 29 所示。
图 29. 板上 OCD 调试器原理图
所有串联电阻均作为终端用于信号线上的阻抗匹配。
图中包含的旁路电容用于过滤出电路中关键元件的交流电噪声。
OCDHC、OCDCC、OCDDO 和 OCDDE 的走线长度应限制在 4 英寸以内。
www.cypress.com
文档编号:001-79031 版本*C
33
Debugging with PSoC® 1 进行调试
B
附录 B:堆栈溢出
B.1
不使用 ICE 检查堆栈溢出
本应用笔记在之前的内容中,我们讨论了使用 ICE 和事件检测堆栈溢出的方法(示例 3:堆栈溢出)。该方法可以有效
地捕获并中断堆栈溢出。但并不适用于没有调试能力的器件。
所幸,堆栈溢出还可以通过固件进行检测。此类检测方法之一就是使用已知值预填充堆栈页面的末端。如果堆栈到达堆
栈页面的末端并使用新值覆盖预填充的值,则表示可能存在堆栈溢出问题。
要在堆栈页面中设置预填充值,可以使用以下 C 代码:
char* StackPtr = (char*) 0x7FF;
*StackPtr = 0xAA;
上述代码创建了一个指向堆栈分页(这里为页面 7)最终 RAM 位置的指针,然后在该位置放置一个预填充值 0xAA。
带有单页 RAM 的 PSoC1 器件应使用预填充地址 0x0FF。第三个数字应始终与项目所用的堆栈分页匹配。
然后,可以使用以下代码检查代码在代码执行过程中是否有堆栈填充至该位置。
if (*StackPtr != 0xAA)
{
//Stack overflow
}
堆栈应该在代码初始化序列中及早填充预填充的值,以免堆栈过大。此后,可以随时检查预填充的值。最好将该段代码
放置于一段定期运行的代码中,例如主循环。如果堆栈在程序运行过程的任意时间到达页面底部,则会被该项检查操作
检测出来。
请注意,如果填充值(在本示例中为“0xAA”)与预填充位置的进栈值相同,则不会检测出溢出。如果您担心该问
题,可以使用不同的预填充值多次运行测试,也可以对一个以上的堆栈位置进行预填充和检查。还需注意,StrackPtr
位置可以修改为任一堆栈分页或者某一堆栈分页内的任一位置。这样,您便可以确定给定项目堆栈的可用空间。例如,
StackPtra 位置可以置于 0x780 或者 0x7C0,以查看页 7 中堆栈的使用率已达到了 50%还是 75%。
B.2
避免堆栈溢出的方法
以下部分将详细介绍几种不同的方法,通过编写和修改代码避免或修复堆栈溢出。并非每个方法都适用于所有项目。因
此,请从列表中选择满足您需求的方法。




B.2.1
由于编译器有所限制,请避免使用 CASE 语句。
如果可能,请避免使用复杂的 IF 语句。
限制传递变量的数量和大小。
限制本地变量的数量。
避免使用 CASE 语句
CASE 语句并非是最有效的代码实践。使用 CASE 语句会占用更大的堆栈空间,以存储每个可能的 SWITCH 语句的中
间结果。代码示例参见代码 1,该段代码可以替换为代码 2 中所示代码。
www.cypress.com
文档编号:001-79031 版本*C
34
Debugging with PSoC® 1 进行调试
代码 1. 会增加堆栈空间使用率的代码示例
switch ( bSwitchVariable )
{
case (0x01):
break;
case (0x02):
break;
default:
break;
// do something
// do something else
// do third thing
}
代码 2. 不会增加堆栈空间使用的代码示例
If ( bSwitchVariable == 0x01 )
{
// do something
}
else if (bSwitchVariable == 0x02 )
{
// do something else
}
else
{
// do third thing
}
B.2.2
避免使用复杂的 IF 语句
导致在堆栈中存储额外字节的另一原因是复杂的 IF 语句。与前一部分中说明的 CASE 语句问题类似,IF 语句中如果含
有若干个决策点,则在每次进行比较时,都会有一个字节进栈。因此,请尽量将这类语句替换为最简单的语句类型。
代码示例参见代码 3,该段代码可以替换为代码 4 中所示代码。
代码 3. 复杂 IF 语句的代码示例
if (!(( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
|| ( bVariable ==
{
// do something
0x00
0x10
0x20
0x30
0x40
0x50
0x60
0x70
)
)
)
)
)
)
)
)))
}
代码 4. 简单 IF 语句的代码示例
if (!(( bVariable & 0x8F ) == 0x00))
{
// do something
}
B.2.3
限制传递变量的数量和大小
在 C 语言的函数调用过程中,所有的传递变量均会进栈存储。因此,要减少堆栈的使用,则应限制传递变量的数量和
大小。一种解决方法是使用全局变量。全局变量储存在固定的 RAM 位置中,所有函数均可对其进行访问,并且不会占
用堆栈的容量。您可以将指针指向局部变量,而不用传递变量或声明全局变量,但是在 PSoC1 器件中,指针的大小为
2 个字节,反而加倍了堆栈的使用量。指针仅用于传递缓冲器或者阵列的首个地址,这样,只有 2 个字节地址被放置于
堆栈中,而不是阵列的全部内容。
www.cypress.com
文档编号:001-79031 版本*C
35
Debugging with PSoC® 1 进行调试
B.2.4
限制局部变量的数量
函数使用的每个局部变量会占用堆栈中的 1 个字节。因此,请务必限制函数所用的局部变量的数量。代码 5 中所示的
代码示例可以替换为代码 6 的代码。
代码 5. 含有很多局部变量的代码示例
void SampleFunction ( * abMessageBuffer, bMessageLength )
{
// local variables
BYTE bMessageAddress;
BYTE bMessageType;
BMessageAddr = abMessageBuffer[0];
if ( bMessageAddr == 0x01 )
// do something
bMessageType = abMessageBuffer[1];
if ( bMessageType == 0x01 )
// do something else
return;
}
代码 6. 含有有限局部变量的代码示例
void SampleFunction ( * abMessageBuffer, bMessageLength )
{
if ( abMessageBuffer[0] == 0x01 )
// do something
if ( abMessageBuffer[1] == 0x01 )
// do something else
return;
}
www.cypress.com
文档编号:001-79031 版本*C
36
Debugging with PSoC® 1 进行调试
C
附录 C:旧版硬件
本部分记录了一些旧版调试硬件,赛普拉斯现已不再支持这类硬件。赛普拉斯建议您将旧版硬件升级至本应用笔记中描
述的最新版本硬件。
C.1
ICE-4000
ICE-4000 是 ICE-Cube 的前身,自 PSoC Designer 4.4 和 PSoC Programmer 2.3 以后的版本均不支持该硬件。
ICE-4000 通过并行端口与计算机连接,主要用于调试旧版的 CY8C25xxx 和 CY26xxx 器件(不建议用于新设计)。
图 30. ICE-4000
C.2
CY3240 I2USB 桥接器套件
CY3240 套件支持 I2C 至 USB 的桥接,但不提供任何编程功能。赛普拉斯软件工具仍支持该套件,但是新用户最好选
购 CY8CKIT-002 MiniProg3 套件。MiniProg3 支持 I2C 至 USB 的桥接,是 CY3240 所有功能的超级集合。
图 31. CY3240 I2USB
C.3
Flex 转接板
Flex 转接板是另一种常见的旧版调试硬件。在柔性线缆的一端配有标准的 ICE 连接器,线缆本身装有一个 OCD 部件,
线缆的另一端则是一个 PDIP 连接器(用于原型设计)。
ICE 和 PSoC Designer 已不再支持该硬件。应将 Flex 转接板升级至最新版本的 CY3250 转接板或者 CY3210EvalPods。
图 32. 旧版 Flex 转接板
www.cypress.com
文档编号:001-79031 版本*C
37
Debugging with PSoC® 1 进行调试
文档修订记录
文档标题: AN73212 — 使用 PSoC® 1 进行调试
文档编号: 001-79031
版本
ECN
变更者
提交日期
**
3610419
VLX
05/09/2012
本文档版本号为 Rev**,译自英文版 001-73212 Rev**。
*A
3888973
VLX
01/29/2013
本文档版本号为 Rev*A,译自英文版 001-73212 Rev**。更改第一页上的 AN 编号
错误。
*B
4771922
YLIU
05/20/2015
无变更。最终检查 ECN。
*C
5040821
YLIU
12/15/2015
本文档版本号为 Rev*C,译自英文版 001-73212 Rev *B。
www.cypress.com
变更说明
文档编号:001-79031 版本*C
38
Debugging with PSoC® 1 进行调试
全球销售和设计支持
赛普拉斯公司具有一个由办事处、解决方案中心、厂商代表和经销商组成的全球性网络。要想查找离您最近的办事处,请访问
赛普拉斯办公所在地。
产品
PSoC®解决方案
汽车级产品
cypress.com/go/automotive
psoc.cypress.com/solutions
时钟与缓冲器
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
接口
cypress.com/go/interface
赛普拉斯开发者社区
照明与电源控制
cypress.com/go/powerpsoc
社区 | 论坛 | 博客 | 视频 | 培训
存储器
cypress.com/go/memory
技术支持
PSoC
cypress.com/go/psoc
触摸感应
cypress.com/go/touch
USB 控制器
cypress.com/go/usb
无线/射频
cypress.com/go/wireless
cypress.com/go/support
PSoC 是赛普拉斯半导体公司的注册商标,且 PSoC Creator 是赛普拉斯半导体公司的商标。此处引用的所有其他商标或注册商标归其各自所有者所有。
赛普拉斯半导体公司
198 Champion Court
San Jose, CA 95134-1709
电话
传真
网址
:408-943-2600
:408-943-4730
:www.cypress.com
©赛普拉斯半导体公司,2012-2015。此处所包含的信息可能会随时更改,恕不另行通知。除赛普拉斯产品内嵌的电路外,赛普拉斯半导体公司不对任何
其他电路的使用承担任何责任。也不会根据专利权或其他权利以明示或暗示方式授予任何许可。除非与赛普拉斯签订明确的书面协议,否则赛普拉斯不保
证产品能够用于或适用于医疗、生命支持、救生、关键控制或安全应用领域。此外,对于可能发生运转异常和故障并对用户造成严重伤害的生命支持系
统,赛普拉斯不授权将其产品用作此类系统的关键组件。若将赛普拉斯产品用于生命支持系统中,则表示制造商将承担因此类使用而招致的所有风险,并
确保赛普拉斯免于因此而受到任何指控。
该源代码(软件和/或固件)均归赛普拉斯半导体公司(赛普拉斯)所有,并受全球专利法规(美国和美国以外的专利法规)、美国版权法以及国际条约
规定的保护和约束。赛普拉斯据此向获许可者授予适用于个人的、非独占性、不可转让的许可,用以复制、使用、修改、创建赛普拉斯源代码的派生作
品、编译赛普拉斯源代码和派生作品,并且其目的只能是创建自定义软件和/或固件,以支持获许可者仅将其获得的产品依照适用协议规定的方式与赛普
拉斯集成电路配合使用。除上述指定的用途外,未经赛普拉斯明确的书面许可,不得对此类源代码进行任何复制、修改、转换、编译或演示。
免责声明:赛普拉斯不针对此材料提供任何类型的明示或暗示保证,包括(但不限于)针对特定用途的适销性和适用性的暗示保证。赛普拉斯保留在不做
出通知的情况下对此处所述材料进行更改的权利。赛普拉斯不对此处所述之任何产品或电路的应用或使用承担任何责任。对于可能发生运转异常和故障,
并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此类系统的关键组件。若将赛普拉斯产品使用于生命支持系统中,则表示制造商将
承担因此类使用而招致的所有风险,并确保赛普拉斯免于因此而受到任何指控。
产品使用可能受限于赛普拉斯软件许可协议。
www.cypress.com
文档编号:001-79031 版本*C
39