7.1.调试概述

本节概述了 CCS 调试系统和典型嵌入式软件程序的调试过程。

嵌入式软件调试是评估置于目标环境中并受不同边界条件制约的应用程序的过程。调试器及其支持的硬件有助于提供对目标系统的严格控制以及对目标环境中内部属性的可见性,因此可以利用调试器来检测错误或修改应用程序的行为。

在 CCS 环境中,调试是在工程编译之后执行,在成功执行汇编/编译/链接过程之后,可以将可执行文件加载到目标环境中进行调试。

有关工程的详细说明,请参阅参考资料一节中的工程构建和编译管理一章。

调试也可能发生在已经加载并运行代码的系统中,通常在产品设计的高级阶段或成品中。这两种方法基本相同,仅存在一些程序性差异,可通过启动调试会话一节进行了解。

CCS 还可以调试操作系统托管的可执行文件,这需要在目标器件/板上运行高级操作系统(最常见的是嵌入式 Linux)。不过,创建工程、编译和调试的过程超出了本文档的范围,但 Linux 调试参考资料一节中提供了参考资料。

7.1.1.基本构成

_images/ccs_debug-process.png

物理调试设置如上所示,调试会话期间涉及两个主要部件:

  1. 接头是运行 CCS 的主机 PC 与将执行代码的器件或电路板之间的硬件。在本文档中,接头也被称为调试器。
  2. 电路板或器件是包含可执行文件运行所需的一个或多个器件的硬件。在本文档中,该硬件也将被称为目标。

该设置与 CCS 一同使用时,使主机 PC 能够与目标进行通信,加载数据和代码,通过断点/观察点和控制所加载程序的执行,以及将数据读回到主机 PC 中,以显示在 Expressions/Memory/Disassembly 等视图中。

为了使 CCS 正确了解调试环境的物理属性,必须创建目标配置文件。该文件包含适用的调试器类型(XDS、ICDI 或 MSP-FET)和主机接口(USB 或以太网)。该文件还包含正使用的器件或电路板的确切规格。

创建目标配置文件且连接所有相应的硬件并为其通电后,调试器就可以启动了。

7.1.2.启动过程

_images/ccs_debug-files.png

调试子系统的构成如上所示,并按以下方式处理:

  1. 在启动时,CCS 将活动透视图切换至 CCS Debug 透视图,其中包含许多对调试过程很有用的视图。
  2. 然后,CCS 解析目标配置文件,创建调试配置,使用这两个文件中的信息连接到 JTAG 调试器并与目标中的器件进行通信。
  3. 建立该通信后,CCS 调试器开始通过 GEL 脚本执行一系列硬件初始化命令(如果在目标配置文件中配置了该脚本)。
  4. 如果加载可执行文件,CCS 调试器会拆分可执行文件的信息:
  • 代码和数据小节的内容通过 JTAG 发送并存储在器件/电路板的适当存储位置中。这些代码的放置遵循链接器命令文件中的指令。
  • 调试符号保存在主机 PC 上,从而使器件/电路板的存储器地址与工程的源代码相关联。
  • 无论是将代码下载到 RAM 还是闪存中,该过程都是相同的。对于基于闪存的器件,内置闪存编程器会自动处理刷写过程。
  1. CCS 调试器执行最后一个步骤:自动在与函数 main() 相对应的器件存储器地址中设置一个断点并运行器件,直至在该断点处中断。

最后一个步骤是可选的,具体取决于调试配置中的设置。

启动过程完成后,调试器便准备就绪。调试器会让目标保持暂停 - 等待用户进行额外的交互和检查。

  • 可以通过发出 ResumeSuspendStep IntoStep Over 等命令,设置断点/观察点等来实现交互
  • 可以通过打开 DisassemblyMemory BrowserExpressionsRegisters 等各种视图来进行检查

调试和修改应用程序的迭代过程可以通过简单地重新编译工程并将代码重新加载到目标中来完成。

7.2.配置调试器

本节详细介绍了 CCS 中负责调试器配置的两个元素:目标配置文件和调试配置。

7.2.1.目标配置文件

调试概述一节中所述,目标配置文件负责描述调试环境的物理方面。

目标配置文件是一个扩展名为 .ccxml 的纯文本 XML 文件,其中包含调试会话的所有必要信息:调试探针的类型、目标板或器件(甚至多个器件),以及(可选)GEL(通用扩展语言)脚本路径,该脚本负责执行器件和/或硬件初始化。

_images/ccs_debug-target_config_file.png

如上所示,目标配置文件包含一个或多个连接 XML 文件(每个内核和 JTAG 实体一个,但所有这些文件都与所选的调试探针相关联)和一个电路板 XML 文件(其中包含一个器件 XML 文件以及该电路板的 GEL 脚本)或直接包含一个器件 XML 文件(该文件可能包含一个 GEL 脚本,也可能不包含该脚本)。器件 XML 文件包含器件的内部 JTAG 结构,并且包含多个模块 XML 文件(可选),这些文件描述器件的外设寄存器。

尽管很复杂,但可以通过两种简单的方法来创建目标配置文件:自动方法和手动方法。

7.2.1.1.自动方法

该方法在创建工程或修改其属性时自动创建目标配置文件。

要创建目标配置文件,只需查明您的硬件使用的调试探针模型(XDS、ICDI、MSP-FET)和接口(USB、以太网),然后在 New Project WizardProject settings 中的 Connection 下拉菜单中设置该参数。

  • 有关 Connection 的常见选项,请参阅常见目标配置页面。只需搜索开发板的器件型号并查明相应的设置。

新建工程:

_images/ccs_debug-new_proj_connection.png

现有工程:

_images/ccs_debug-existing_proj_connection.png
  • 该文件放置在工程目录下名为 targetConfigs 的子目录中。
  • 该方法非常简单,因为它自动分配正确的器件并将其设置为工程的活动目标配置。
  • 几个示例工程已自动创建了该文件。
  • Verify 按钮执行测试例程以验证所选的配置,这与下面的测试连接一节中所述的内容类似。

7.2.1.2.手动方法

该方法通过手动调用目标配置编辑器来创建目标配置文件。

目标配置编辑器是 Code Composer Studio 中的一个 GUI,可用于创建和修改目标配置文件。它还可用于配置调试器和目标的高级方面,以及为复杂器件(具有多个内核)和电路板(具有位于同一扫描链中的多个器件)创建配置。

_images/ccs_debug-target_config_editor.png
  • 可以将该文件放置在系统中的任意目录中。默认情况下,该位置是用户区域中的 ti/CCSTargetConfigurations 子目录。可以通过 CCS 菜单 Window → Preferences → Code Composer Studio → Debug 来更改该位置。**
  • 可以通过该方法为更复杂的器件或电路板创建配置,如自定义目标配置页面中所示。
  • 目标配置编辑器也可用于编辑用前一种方法自动创建的文件。

若要手动创建目标配置文件,只需从 CCS 内的几个位置之一启动 Target Configuration Editor:

  • 菜单 File → New → Target Configuration File
  • Target Configurations 视图(菜单 View → Target Configurations)中,点击 New Target Configuration File 按钮 新建目标配置图像
  • 在工程本身中,右键点击工程并选择 New → Target Configuration File

7.2.1.3.测试连接

创建并保存目标配置文件后,可以使用 Test Connection 按钮来验证 JTAG 连接是否在最低级别工作。该按钮将在配置的器件上执行各种低级 JTAG 测试。

如果按钮显示为灰色,则表示目标配置文件尚未保存或正在使用的连接类型不受支持(例如非基于 XDS 的连接,如 MSP-FET430UIF 或 Jlink)。

  • 对于 MSP-FET430UIF,“Test Connection”按钮的替代按钮是 Identify… 按钮,该按钮位于 CCS Project Properties → CCS General → Main 下“Connection”的旁边。

要观看有关如何测试连接的视频演示,请查看参考资料一节中的如何测试 JTAG 与 CCS 的连接

7.2.1.4.高级目标配置选项

上述过程主要涵盖目标配置编辑器的 Basic 选项卡,但其他两个选项卡也很重要:

Advanced 选项卡可用于配置调试探针的重要参数(工作模式、时钟速度、特殊信号、字节序等)、器件的内部 JTAG 结构(地址、端口、内核)以及 GEL 启动文件的添加/删除。

  • 最为常见的调试器设置之一是时钟速度。参考资料一节中的快速提示视频 JTAG 时钟速度实验XDS110 JTAG 时钟速度实验对此进行了详细介绍。
  • GEL 文件通常为所有板配置和多个器件(适用时)自动配置,因此只有在有特定需求时才需要添加/修改。如果需要执行此类编辑,请查看将 GEL 文件添加到目标配置一节。
  • 另一项重要设置是所有 XDS 调试器(XDS100v1 和 XDS100v2 除外)的 JTAG 工作模式(JTAG、cJTAG 等)。有关其他详细信息,请参阅 XDS110XDS200 页面的调试和跟踪使用模式一节。
  • 还可以使用该选项卡手动指定板数据文件。尽管通常不使用,但该设置在某些情况下很重要。

Source 选项卡显示目标配置文件的 XML 代码以及对本节开头提到的 XML 文件的所有引用。这些 XML 源代码是自动生成的,不建议手动修改。

有关每个调试探针高级配置的完整列表,请查看高级调试探针配置一节。

7.2.1.5.启动上下文

可以将目标配置文件标记为 ActiveDefault。该标记会影响 Debug 启动按钮 绿色虫子图像 使用哪个配置。Debug 启动按钮将按以下顺序搜索并使用目标配置文件:

  • 使用作为工程一部分(物理或链接)的文件 - 被指定为 Active
  • 使用在 Target Configurations 视图中被设置为 Default 的文件。

一种例外情况是用户在编辑器中打开了一个目标配置文件并使其处于焦点中。在这种情况下,Debug 启动按钮将使用该文件,而不是标记为 DefaultActive 的目标配置文件。

  • 活动配置针对每个工程进行分配
  • 默认配置针对每个工作区进行设置

7.2.1.6.“Target Configuration”视图

Target Configuration 视图将显示与工作区相关联的所有目标配置文件。可以通过该视图轻松管理目标配置,包括重命名/打开/删除配置、将配置设置为 Default、将配置链接到现有工程等。

_images/ccs_debug-target_config_view.png

在页面顶部的工具栏包含以下按钮:

_images/ccs_debug-target_config_view_toolbar.png
  • 创建一个新目标配置文件
  • 删除选定的目标配置文件。
  • 刷新目标配置视图。
  • 折叠树。
  • 将视图最小化/最大化。

右键点击出的上下文菜单包含以下选项:

_images/ccs_debug-target_config_view_context.png

除了其中的三个选项之外,大多数选项都是不言自明的:

  • Set as Default。该选项将突出显示的目标配置文件设置为工作区的默认配置(如启动上下文一节中所述)。
  • Link File to Project。该选项将突出显示的目标配置文件设置为所选工程的活动配置,这会在该工程处于焦点中时覆盖所有默认配置。
  • Properties。这是用于打开 Debug Configurations 视图的各种调试属性的快捷方式。

演示视频:如何使用 CCS“Target Configurations”视图短视频演示了上面列出的各项功能。

提示

有关配置 LaunchPad 和其他开发套件所需设置的信息,请参阅常见目标配置页面

7.2.2.调试配置

调试配置(有时也称为启动配置)是标准 Eclipse(以及 CCS)描述如何在调试模式下启动程序的方式。请参阅有关启动配置的 Eclipse 常见问题解答:什么是启动配置?

每个工作区的调试配置都是唯一的。调试配置可以通过转至 Run → Debug Configurations 菜单进行手动创建,也可以在调试器启动时自动创建。可以缓存调试配置,并在将来供采用相同配置的会话重复使用。

调试配置的名称和物理位置由调试器的启动方式决定。

  • 如果在工程上自动启动调试器(使用 Debug 启动按钮 绿色虫子图像),则调试配置与工程具有相同的名称。对应的文件在物理上位于工程子目录 /.launches
  • 如果手动启动调试器,则调试配置与目标配置文件具有相同的名称。对应的文件在物理上位于工作区子目录 .metadata/.plugins/org.eclipse.debug.core/.launches

直接编辑调试配置的优势之一是在将代码加载到具有多个内核的复杂器件中时自动执行任务。轻松进行多核调试短视频展示了该过程。

您还可以为工程的每个编译配置创建和分配不同的调试配置。为不同的编译配置定制调试启动短视频展示了该过程。

调试配置包含由以下选项卡分隔的各种设置:

_images/ccs_debug-debug-config-tabs.png

Main:配置调试器的主要选项。

  • Target Configuration:指定“Target Configuration File”
  • Initialization Script:(可选)指向可用于初始化目标、传递参数等的 DSS JavaScript。如果您希望在调试启动期间运行一组自定义步骤,这将非常有用。有关使用初始化脚本的更多信息,请观看使用脚本自定义调试器启动短视频。
  • JTAG 实体复选框:允许选择在调试器的 Debug 视图中显示哪些 JTAG 元素(内核/CPU、路由器、DAP 等)。默认情况下,仅选中 CPU。
  • Synchronize the properties for all compatible CPUsUse the same console for the CIO of all CPUs:这两个选项适用于具有多个内核的目标。例如,如果您希望在不同视图中显示不同内核的控制台 CIO,请取消选中“CIO”复选框。
  • Reset Debug Probe Connection S/N:(仅限 XDS110)重置在 Target Configuration File 中预先配置的序列号参数。这在使用不同的调试探针时非常有用。

Program:配置程序加载的主要选项。

  • 器件: 每个 JTAG 元素(内核/CPU、路由器、DAP 等)的下拉选项,会影响以下所有选项中的选项。
  • Project and Program:用于选择当前工作区中的工程或要加载到上面选择的 JTAG 元素的可执行文件。
  • 加载选项:影响先前选择的可执行文件的加载方式:通过将数据传输到目标并将符号传输到调试器,或者仅加载符号。

Target:调试属性一节对该选项卡中的所有选项进行了说明。

SourceCommon:该选项卡中的所有选项都与在线 Eclipse 帮助(使用运行/调试配置)中介绍的标准 Eclipse 选项相匹配。

7.2.2.1.可移植调试配置

有时需要随工程一起共享工程调试/启动配置。在这种情况下,建议避免使用绝对路径以帮助实现“可移植性”。虽然调试/启动配置不支持相对路径,但可通过使用一些默认变量来引用与工程相关的文件,从而避免使用绝对路径。相关详细信息,请查看下面的主题:可移植目标和调试配置

7.2.3.调试属性

有许多用于定义调试属性的设置,例如 Program/Memory Load OptionsAuto Run and Launch OptionsOn-Chip Flash 设置等。本节介绍了最常用的调试设置。

可以通过以下方法来查看和自定义这些设置:

  • Project Properties → Debug(如果目标配置文件是工程的一部分),或
  • Target Configurations 视图中右键点击目标配置文件,然后选择 Properties

请注意,如果使用上面的第一个选项,则需要已经在工程属性中指定了一个 Connection,以便填充调试属性。如果您未明确指定 Connection,则系统可能会使用默认目标配置文件并显示基于该文件的属性,而该文件可能不正确/与您的器件不匹配,因此请确保为您的工程选择正确的 Connection

对于多核器件,请确保 Device 下拉列表显示相关内核,例如对于 IDK AM65x 如下所示:

_images/multi_core_device.png

当已经在调试会话中(并且在 CCS“Debug”透视图中)时,也可以通过以下方式访问这些设置:

  • 菜单 Run → Debug Configurations,然后转到 Target 选项卡或
  • 菜单 Tools → Debugger 选项和/或 Tools → On-Chip Flash

调试属性显示在多个类别下。每个类别都允许您控制与该类别相关的特定设置。大多数用户不需要修改默认设置。默认设置是根据被调试的处理器进行的理想选择,因此它们可能会因处理器而稍有不同。例如,MSP430 的默认设置可能与 F28x 的默认设置不同。

7.2.4.程序/存储器加载选项

该类别定义与程序/存储器加载、验证选项、连接选项、禁用中断和加载期间重置/重新启动目标相关的设置。

_images/program_load_options.png

Program/Memory Load Options:

  • Disable all breakpoints when loading a different program:在同一调试会话中加载不同的 .out 文件时,在保持先前设置的断点状态和禁用断点之间切换。该选项默认处于启用状态。
  • Halt at program exit for TI compilers (requires a breakpoint):(TI 编译器)启用后在程序末尾设置断点,以使调试器在此处停止。仅在使用 TI 编译器(具有预定义的符号 C$$EXITC$$EXITE)时该选项才起作用。对于闪存中的代码,启用该选项需要使用硬件断点资源。
  • Enable CIO function use (requires setting a breakpoint):(TI 编译器)启用后允许通过使用断点在“Console”视图中显示控制台 I/O 输出。对于闪存中的代码,启用该选项需要使用硬件断点资源。
  • Enable Semihosting (requires setting a breakpoint at SVC_Handler):(GCC 编译器)启用后允许通过使用断点在“Console”视图中显示控制台 I/O 输出。该选项仅适用于某些器件 (Cortex A/M)。更多信息,请参阅 CCS 半主机

Verification Options:将代码/数据加载到器件中后,设置对其执行的验证级别。这是通过从器件的存储器中读回代码/数据并将其与主机上的可执行文件进行比较来完成的。相关的选项为:

  • Full:读回加载到器件中的整个程序。这是 MSP430 的默认选项。
  • Fast:仅读回加载到器件中的前 20 个字和后 20 个字。这是所有其他器件的默认选项。
  • No verification:不执行任何验证。

Connection Options:这些设置控制在调试器连接到目标器件后立即执行的操作。相关的选项为:

  • Halt the target on a connect:停止内核执行。默认在所有器件上设置该选项。
  • Reset the target on a connect:在器件上发出软复位命令。
  • Auto connect if a child connects:实现与复杂 SoC 器件中内核的正确连接。只应在特定的情况下使用该选项。

Disable interrupts:这些设置控制在单步执行和/或运行代码时是禁用还是启用中断。这些选项是不言自明的。

Reset the target on a program load or restart:加载或重新启动程序时在目标器件上发出软复位命令。

Restart the target on a symbol load as well as program load:在符号或程序加载到目标器件时发出重新启动命令。Restart 只是将 PC 寄存器重新定位到入口点(通常为 ``_c_int00``(TI 编译器)或复位向量)。

7.2.5.自动运行和启动选项

该类别定义 Realtime OptionsAuto Run OptionsLaunch Options

_images/auto_run_options.png

Realtime Options:这些选项控制对目标器件的实时访问。

  • Halt the debugger before any debugger access:通过执行停止 ► 访问 ► 恢复的自动序列,启用从调试器到目标器件及其存储器的透明访问。该选项可能会影响时间关键型中断的服务,因此默认禁用该选项。
  • Enable realtime mode:对目标启用完整的存储器和控制访问,而无需停止目标。实时模式一节提供了更多详细信息。
  • Enable polite mode:启用尊重当前器件状态的礼貌实时模式。实时模式一节提供了更多详细信息。

Auto Run Options:这些选项控制哪个条件会导致调试器自动运行到预定义符号处并在此处停止。默认情况下,该符号被设置为在 On a program load or restart 条件下运行至 main() 处。

  • 可以将该符号设置为所需的任何其他 C 或汇编符号。
  • 如果将符号字段留空并禁用所有复选框,则在加载可执行文件后调试器将在代码入口点(通常为 _c_int00(TI 编译器)或复位向量)处停止。
  • 如果将符号字段留空但至少启用一个复选框,则调试器将在代码加载后立即运行目标并保持运行状态。

警告

如果指定了无效符号,或者目标无法到达指定的符号位置,则目标将在代码加载后立即运行并保持运行状态。

Launch Options:这些选项控制启动调试器时自动执行的操作。

  • Connect to the target on debugger startup:在执行手动启动时,默认跳过该步骤。由于大多数内核在调试器启动期间处于复位状态,因此不应对 SoC 启用该选项。
  • Restore breakpoints from previous session:从以前的调试会话中恢复所有断点及其状态。当在同一目标器件和硬件上执行顺序调试会话时,该选项对于缩短设置时间非常有用。
  • Continue debug launch if target connection or program load fails:如果出现错误,调试启动过程将继续正常进行。错误通常是由于工程无法编译或主机和目标器件之间的连接问题而导致的。

7.2.6.其他/其他选项

该类别定义 OS Aware debug Options(在执行 OS 感知调试时)和其他各种选项。

_images/misc_other_options.png

OS Aware Debug Options:当与高级操作系统(例如嵌入式 Linux 或 Android)一同使用时,这些选项控制调试器感知级别。

  • 若要正确使用该选项,需要在 OS 中内置器件驱动程序以正确关联源代码。

Automatically step over functions without debug information when source stepping:如果函数没有将符号和源代码加载到调试器中,则启用 Step Over 操作。如果禁用,则调试器为这些函数执行 Assembly Step Into 操作。

Allow power transitions while running if supported (low power running):当目标器件执行电源转换或复位时,使 JTAG 调试器保持连接状态。这在很大程度上取决于器件和电路板功能。

Add timestamp information to target output:向目标中可在“Console”视图中打印信息(GEL、控制台 I/O)的操作添加时间戳。

Allow software breakpoints to be used:允许使用高级事件触发 (AET) 资源,以便在目标器件允许时使用软件断点。考虑到硬件断点的数量受目标器件的限制,而软件断点完全不受限制,这是有利的。

Default directory for file IO:设置所有文件 I/O 操作的默认目录。

When added to a sync group:这些选项控制同步执行(同步组)启用时的交互级别。这取决于目标器件,并且对对称多处理 (SMP) 有效。请查看参考资料一节中的利用 CCS 进行 SMP 调试文档。

7.2.7.反汇编样式选项

7.2.7.1.ARM

该类别仅适用于 ARM7、ARM9、Cortex R/A 器件,用于设置指令在“Disassembly”视图中显示的模式。

Cortex R4、R5、A8、A9 和 A15:

_images/cortexr_dis_options.png

Cortex A53:

_images/cortexa53_dis_options.png

默认选项是 Mixed ARM/ThumbMixed A32/A64 并根据内核模式(CPSR/xPSR 寄存器)自动选择模式。

7.2.7.2.F28x

该类别仅适用于 F28x 器件,用于设置“Disassembly”视图的模式。

_images/f28x_dis_options.png

上面显示了默认选项。

7.2.8.Flash 设置

该类别定义几个与闪存相关的设置和操作,配置闪存设置一节对此进行了更详细的介绍。

7.2.9.MSP430 调试器选项

该类别仅适用于 MSP430,用于设置几个调试器选项:

_images/msp430_properties.png

Disable breakpoints on a free run:在使用 Free Run 选项时禁用所有断点。对于某些器件,Free Run 是一种通过电源转换和低功耗模式运行器件的不那么引人注意的模式。

Default breakpoint type:设置将使用的默认断点。对于位于闪存或 ROM 中的代码,硬件断点是强制性的,因此这是该器件的默认选项。

Connection Options:这些选项设置调试器在连接期间执行的操作。

Low Power Mode Settings:当目标器件进入 ULP 模式时,使 JTAG 调试器保持连接状态。

Clock Control:能够完全控制在仿真停止时停止的时钟。调试器必须连接到目标器件以获取可用时钟列表。

有关其他详细信息,请参阅文档适用于 MSP430 MCU 的 CCS IDE

7.3.启动调试会话

创建配置后,可以自动(自动启动)或手动(手动启动)启动调试过程:

7.3.1.自动启动

该过程启动基于工程的调试会话。只需在 Project Explorer 视图中突出显示该工程并执行以下操作之一:

  • 转至菜单 Run → Debug(或按 F11 键)。
  • 点击 Debug 启动按钮 绿色虫子图像

如果工程有多个目标配置文件,则会启动该工程的活动配置。

这将执行启动过程一节中所示的步骤序列。总结:

  1. 切换到 CCS Debug 透视图。
  2. 连接到调试探针。
  3. 提示需要加载程序的内核(如果器件具有采用同一 ISA 的多个内核,该操作通常只执行一次)。
  4. 自动连接到内核/器件。
  5. 运行所有 GEL 脚本以配置目标(如果在目标配置文件中配置了 GEL 脚本)。
  6. 将工程的可执行文件 (.out) 加载到内核/器件存储器中。代码将自动写入 MSP430、F28x 和 SimpleLink MCU 器件的片上闪存。
  7. 运行至函数 main()(如果在 Debug Configurations 中进行了配置)。

代码将自动写入 Simplelink MCU、MSP430、F28x、Hercules 和 Digital Power 器件的片上闪存。要配置闪存加载程序属性,请检查 Debug ConfigurationsFlash Settings

如果对源代码或编译选项进行了任何修改,则启动调试器将会使 CCS 编译活动工程。

7.3.2.手动启动

该过程启动无工程调试会话。只需在“Target Configurations”视图中突出显示某个目标配置文件并执行以下操作之一:

  • 右键点击所需的目标配置文件并选择 Launch Selected Configuration
  • 双击所需的目标配置文件以打开目标配置编辑器,然后点击 Debug 启动按钮 绿色虫子图像

如果未突出显示任何目标配置文件或工程,则会启动工作区的默认配置。

这将执行启动过程一节中所示的步骤序列。总结:

  1. 切换到 CCS Debug 透视图。
  2. 连接到调试探针。
  3. 手动启动过程此时停止,但可以执行额外的手动步骤:
  4. 可以通过右键点击某个内核并选择 Connect 来建立与该内核的连接。内核执行完其初始化 GEL 脚本(如果指定了该脚本)后,可以通过转到菜单 Run → Load → Load ProgramLoad Symbols 来加载代码或符号。Load Program 将通过编译工程生成的可执行文件加载到目标板中。Load Symbols 仅加载调试符号信息。在调试器不需要加载目标代码而只需调试闪存中的现有代码的调试环境中工作时,该操作很有用。在加载符号时,会在添加新符号之前清除现有符号表。
  5. 可以通过右键点击 Debug 视图并选择 Show All Cores 来实现到 JTAG 实体(ICEPICK 路由器、DAP 等)的连接。

手动启动调试器在许多情况下都很有用:

  • 如果您没有 CCS 工程或仅有一个要加载到目标中的可执行文件或二进制文件。
  • 该操作有助于排除任何 JTAG 连接问题。
  • 当连接到具有多个内核的目标时,该操作非常方便,因为其中一些内核在器件加电时保持复位状态。
  • 如果您不想将代码加载到目标中,而只想调试之前刷写的代码,该操作非常方便。在这种情况下,调试启动后通常会加载符号。
  • 通过直接通过调试访问端口 (DAP) 访问其存储器映射来调试 ARM Cortex 内核非常有用。参考资料一节中的如何使用 DAP 访问内存短视频展示了如何执行该操作。

对于无工程调试会话,CCS 有时可能无法定位源文件以进行源文件-反汇编关联。在这种情况下,可以通过几种方法告诉调试器在何处查找源文件。请参阅调试库代码一节。

7.4.调试应用

调试应用的过程需要多个能够完全控制目标执行状态的功能和辅助视图。此外,许多数据视图通过显示目标各个子系统的状态来完整呈现各项功能。本节介绍了其中的一些视图和功能。

7.4.1.启动后

启动之后,Eclipse 透视图从 CCS Edit “Edit”透视图图标 切换为 CCS Debug “Debug”透视图图标(在工作台的右上角进行指示),下面显示了视图的默认布局。

显示内容可能会有很大差异,具体取决于是否在先前运行中进行了更改,或者是否使用了不同的调试探针、目标和代码。

_images/ccs_debug-main_view.png
  • Debug 视图包含每个内核的目标配置和调用堆栈。
  • 源代码视图显示程序在 main() 开始处停止。
  • 为方便起见,VariablesExpressionsRegisters 视图也默认处于打开状态。
  • 如果目标配置需要在加载代码之前运行脚本,则会打开 Console 视图。

基本调试功能位于 Debug 视图顶部的栏中。

_images/ccs_debug-toolbar_basic.png
  • Resume:开始执行目标内核。
  • Suspend:停止执行目标内核。
  • Terminate:断开与所有硬件(内核、器件、调试探针)的连接并终止调试会话。关闭 CCS Debug 透视图并返回至 CCS Edit 透视图。
  • Step Into:执行单个源代码行,跳转至子例程或函数,允许您逐步运行其内部代码。
  • Step Over:与前一个选项类似,但跳过子例程或函数,立即运行其内部代码。
  • Step Return:与前一个选项类似,但运行所有行、子例程或函数,直到它到达调用方函数(由调用堆栈或 return() 提供)。

该栏中隐藏了一个称为 *Free Run 的附加选项。此选项将运行目标,然后断开调试连接。运行的行为类似于已断开物理 JTAG 连接。这种类型的运行行为会阻止调试器定期轮询目标状态。调试器在目标上设置的任何断点也会被禁用。

扩展栏显示了除上述基本工具之外的高级调试工具。

_images/ccs_debug-toolbar_complete.png
  • Terminal:打开“Terminal”视图
  • Runtime Object Viewer:启动 SYSBIOS 和 TI-RTOS 系统的运行时对象查看器。
  • Connect/Disconnect:连接下面的“Debug”视图中突出显示的内核或断开与该内核的连接。
  • Restore Debug State:从最近断开或终止的内核或器件恢复所有调试设置。恢复的设置包括硬件和软件断点、全局断点、分析状态等。
  • 负载: 将代码加载到下面的“Debug”视图中突出显示的内核中。使用小反转箭头可以选择其他操作:Reload ProgramLoad SymbolsAdd SymbolsVerify ProgramRemove All Symbols
  • Real-time modes:启用/禁用内核支持的实时模式
  • 复位:在内核或器件上执行复位。使用小反转箭头可以在可用的复位中进行选择。
  • Restart:在符号或程序加载到目标器件时发出重新启动命令。Restart 只是将 PC 寄存器重新定位到入口点(通常为 _c_int00 或复位向量)。
  • New Breakpoint:在鼠标光标指向的行添加或切换断点。使用小反转箭头可以在可用的断点类型中进行选择。
  • Debug As:启动一个新的调试会话,终止当前活动的调试会话。使用小反转箭头可以在之前启动的调试会话中进行选择。
  • Assembly Step Into:执行单条汇编指令,跳转到子例程或函数,允许您逐步运行其内部代码。
  • Assembly Step Over:与前一个选项类似,但跳过子例程或函数,立即运行其内部代码。
  • EnergyTrace:启动 EnergyTrace 会话。

也可以通过菜单 ViewsTarget 获取这些工具栏功能,这些菜单还提供了多个附加选项。

7.4.2.“Debug”视图

Debug 视图是调试器启动时最突显的视图。该视图默认处于打开状态。

未加载程序时的视图如下所示:

_images/ccs_debug-debug_view_noload.png

加载了程序时的视图如下所示:

_images/ccs_debug-debug_view.png

该视图包含多个区域:

  • 显示使用的目标配置文件和正在使用的调试会话类型(Code Composer Studio - Device Debugging 是默认类型)的树。

  • 一系列节点,显示了链接到目标的每个核心的调试器,后跟其状态:

    • Disconnected 或 Connected
    • Unknown、Suspended、Suspended
    • SW Breakpoint、Suspended
    • HW Breakpoint、Running、Free Running 是最为常见的状态。
  • 程序计数器的当前地址或当前加载的程序的调用栈。

右键点击该区域会显示以下上下文菜单:

_images/ccs_debug-debug_rclk.png

7.4.3.观察变量、表达式和寄存器

启动调试会话后,名为 VariablesExpressionsRegisters 的选项卡式视图组处于打开状态。

7.4.3.1.“Variables”视图

Variables 视图仅显示属于当前正在执行的函数的局部变量。

包含多个元素(例如数组、结构或指针)的变量会在表达式名称前显示一个加号 (+) 或减号 (-)。

  • (+) 符号表示该表达式包含可进一步扩展的元素。
  • (-) 符号表示该表达式已完全展开并可折叠以减少显示的信息。

自上次查看以来其值已改变的变量以黄色背景突出显示。只要情况允许,就可以通过点击 Value 列并输入新值来修改变量的值。

_images/ccs_debug-variables_view.png

该视图包含以下几列:

  • 名称:变量的名称。
  • 类型: 变量数据类型。
  • Value:变量的值。对于数组,该字段显示其元素的前几个值。
  • 地址:变量在器件存储器中的地址。
    • 在具有单独的程序页面和数据页面的器件中,该字段使用位于符号 (@) 后跟页面名称(Program、Data、IO)作为后缀。
    • 如果变量被分配给寄存器,则该字段显示 Register 字样,后跟其寄存器名称。

该视图不允许添加或删除行,因为它由所调试的程序上下文中存在的变量自动填充。

工具栏包含多个格式选项。

_images/ccs_debug-variables_toolbar.png

分别是:

  • Show type names:禁用列时显示类型名称。该选项在 CCS 调试会话中始终处于禁用状态。
  • Show logical structure:显示大变量(结构、对象等)的逻辑结构类型。该选项在 CCS 调试会话中无效。
  • Collapse All:折叠所有展开的变量或寄存器。
  • Open new view:打开一个新视图,以便并排比较值。
  • Pin to debug context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • Refresh:使用来自目标的数据更新视图的内容。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击给定的变量会显示以下上下文菜单:

_images/ccs_debug-variables_rclk.png

分别是:

  • Select All:选择视图中显示的所有变量。
  • Copy Variables:以制表符分隔的格式复制选定的变量。
  • Number Format:将选定变量的数字格式更改为十六进制、十进制、八进制或二进制。
  • Cast To Type:将选定变量的数据类型更改为任何 C 有效数据类型。
  • View Memory:在所选变量的位置打开“Memory Browser”视图
  • View Memory at Value:与前一个选项类似,但在所选变量指向的位置打开视图。
  • 查找: 搜索变量名称。
  • Q-Values:对于有符号整数,将变量的表示形式更改为 Q 格式。
  • Breakpoint (Code Composer Studio):向存储器中的变量位置添加观察点
  • Graph:使用所选行的参数打开图形。该选项不能用于多行。
  • 观看视频:将变量添加到“Expressions”视图

7.4.3.2.“Expressions”视图

Expressions 视图是一个典型的观察窗口,可以在其中监视变量(局部、全局、静态)、C 有效表达式,甚至寄存器。

包含多个元素(例如数组、结构或指针)的表达式会在表达式名称前显示一个加号 (+) 或减号 (-)。

  • (+) 符号表示该表达式包含可进一步扩展的元素。
  • (-) 符号表示该表达式已完全展开并可折叠以减少显示的信息。

自上次查看以来其值已改变的表达式以黄色背景突出显示。只要情况允许,就可以通过单击“Value”列并输入新值来修改表达式的值。

_images/ccs_debug-expressions_view.png

要添加变量,只需选择 Add new expression 列并键入有效的表达式。

该视图包含以下几列:

  • 名称:变量的名称。
  • 类型: 变量数据类型。
  • Value:变量的值。对于数组,该字段显示其元素的前几个值。
  • 地址:变量在器件存储器中的地址。
    • 在具有单独的程序页面和数据页面的器件中,该字段使用位于符号 (@) 后跟页面名称(Program、Data、IO)作为后缀。
    • 在具有存储器管理单元 (MMU) 的器件中,该变量将默认显示来自 CPU 上下文的地址。可以通过添加位于符号 (@) 后跟 PHY 字样(表示物理)将其地址映射到物理地址。
    • 如果变量被分配给寄存器,则该字段显示 Register 字样,后跟其寄存器名称。

工具栏包含多个格式选项。

_images/ccs_debug-expressions_toolbar.png

分别是:

  • Show type names:禁用列时显示类型名称。该选项在 CCS 调试会话中始终处于禁用状态。
  • Show logical structure:显示大变量(结构、对象等)的逻辑结构类型。该选项在 CCS 调试会话中无效。
  • Collapse All:折叠所有展开的变量或寄存器。
  • Create a new watch expression:与“Add new expression”的功能相同,但会打开一个对话框,以更轻松地编辑复杂的表达式。
  • Remove Selected Expressions/Remove All Expressions:删除视图中选定的表达式或所有表达式。
  • Continuous Refresh:使用来自目标的数据以恒定速率更新视图的内容(可通过“View Menu”选项进行配置)。
  • Open new view:打开一个新视图,以便并排比较值。
  • Pin to debug context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • Refresh:通过从目标加载内容来更新视图的内容。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击给定的变量会显示以下上下文菜单:

_images/ccs_debug-expressions_rclk.png

分别是:

  • Select All:选择视图中显示的所有变量。
  • Copy Expressions:以制表符分隔的格式复制选定的变量。
  • Remove/Remove All:删除视图中选定的表达式或所有表达式。
  • Number Format:将选定变量的数字格式更改为十六进制、十进制、八进制或二进制。
  • Add Expression Group:
  • View Memory:在所选变量的位置打开“Memory Browser”视图
  • View Memory at Value:与前一个选项类似,但在所选变量指向的位置打开视图。
  • 查找: 搜索变量名称。
  • Add Watch Expression:该功能与“Create a new watch expression”相同。
  • Disable/Enable:禁用或启用对所选表达式的更新。阻止来自目标的额外数据传输,这有助于在调试期间提高性能。
  • Edit Watch Expression:能够编辑选定的表达式并打开相同的对话框,从而更轻松地编辑复杂的表达式。
  • Q-Values:对于有符号整数,将变量的表示形式更改为 Q 格式。
  • Cast To Type:将选定变量的数据类型更改为任何 C 有效数据类型。
  • Add Global Variables:使用一个列出了加载到目标的所有全局变量的有用对话框来添加全局变量。可以按名称搜索全局变量。
  • Export/Import:导出或导入该视图的全部内容以简化将来配置调试会话的任务。
  • Breakpoint (Code Composer Studio):向存储器中的变量位置添加观察点
  • Graph:使用所选行的参数打开图形。该选项不能用于多行。
  • 观看视频:将变量添加到“Expressions”视图

7.4.3.3.“Registers”视图

Registers 视图用于查看和编辑器件的内核和外设寄存器的内容,包括位域和单个位。已改变的寄存器值以黄色背景突出显示。若要更改寄存器或寄存器位域值,请单击寄存器的值列并进行修改。只允许对非只读寄存器执行该操作。

_images/ccs_debug-registers_view.png

该视图包含以下几列:

  • 名称:寄存器、位域或位的名称。
  • Value:寄存器、位域或位的值。
    • 对于位域和位,该列可能提供一个自由格式框来直接输入值,也可能提供一个包含有效值的下拉列表。
  • 说明:寄存器、位域或位的简要说明。

该视图不允许添加或删除行,因为系统使用器件信息自动填充了这些行。

工具栏包含多个格式选项。

_images/ccs_debug-registers_toolbar.png

分别是:

  • Show type names:禁用列时显示类型名称。该选项在 CCS 调试会话中始终处于禁用状态。
  • Show logical structure:显示大寄存器的逻辑结构类型。该选项在 CCS 调试会话中无效。
  • Collapse All:折叠所有展开的寄存器。
  • Continuous Refresh:使用来自目标的数据以恒定速率更新视图的内容(可通过“View Menu”选项进行配置)。
  • Open new view:打开一个新视图,以便并排比较值。
  • Pin to debug context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • Refresh:通过从目标加载内容来更新视图的内容。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击给定的寄存器、位字段或位会显示以下上下文菜单:

_images/ccs_debug-registers_rclk.png

分别是:

  • Select All:选择视图中显示的所有变量。
  • Copy Registers:以制表符分隔的格式复制选定的寄存器。
  • Number Format:将选定寄存器的数字格式更改为十六进制、十进制、八进制或二进制。
  • Cast To Type:将选定寄存器的数据类型更改为任何 C 有效数据类型。
  • View Memory at Address:在所选寄存器的位置打开 :ref:memory-browser-view`。
  • View Memory at Value:与前一个选项类似,但在所选寄存器指向的位置打开视图。
  • 查找: 搜索寄存器名称。
  • Export:打开一个对话框,允许选择一个或多个要导出到 .txt 文件中的寄存器。
  • 观看视频:将变量添加到 :ref:expressions-view`。

7.4.4.“Disassembly”视图

Disassembly 视图用于将机器语言翻译成汇编语言,该视图是调试器不可或缺的一部分,因为它显示了调试所需的反汇编指令和符号信息。默认情况下该视图处于关闭状态,但可以通过转至 View → Disassembly 菜单来查看该视图,除非没有加载程序或没有与程序相关联的调试符号。

_images/ccs_debug-disassembly_view.png

Disassembly 视图的默认配置包含多个字段:

  • 视图的左侧显示了程序地址。
  • 如果加载的程序包含符号调试信息并且启用了 Show Symbols 选项,那么也会显示上下文中的源文件行号。
  • 视图的左侧还有一个蓝色的小箭头,用于指示程序计数器的位置 - 待执行的下一条指令。
  • 在地址的右侧,以十六进制格式显示了操作码,还显示了反汇编指令。
  • 如果操作码引用了一个函数或变量,则在存在调试符号时也会显示函数或变量的名称。
  • 将鼠标光标悬停在特定的函数名称上会显示其名称和地址。
  • 行号的右侧显示了实际的 C 源代码。

可以显示许多其他功能,具体取决于启用的选项。

工具栏包含多个功能:

_images/ccs_debug-disassembly_toolbar.png

分别是:

  • Address box:可以在该框中键入地址或符号名称以导航到目录。
  • Refresh view:通过从目标加载内容来更新视图的内容。
  • Go to Current Program Counter (Home):将视图滚动到当前程序计数器位置。
  • Link with Active Debug Context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • Show source:支持查看与汇编指令交织在一起的源代码。
  • Assembly Step Into:执行单条汇编指令,跳转至子例程或函数,允许逐步运行其内部代码。
  • Assembly Step Over:与前一个选项类似,但跳过子例程或函数,立即运行其内部代码。
  • Open new view:打开一个新视图,以便并排比较值。
  • Pin to debug context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击主视图会显示以下上下文菜单:

_images/ccs_debug-disassembly_rclk.png

分别是:

  • 副本:以文本形式复制所选内容。
  • Select All:选择视图中显示的所有内容。
  • Show Source:显示与反汇编指令交织在一起的源代码。
  • Show Symbols:显示相应地址处的调试符号。
  • Preferences… 打开包含显示选项的 Preferences 视图。
  • Patch Assembly…:允许编辑存储器以修改操作码。
  • Disassembly Style…:显示反汇编样式列表并允许在各种类型之间切换。该选项与器件相关。
  • Run to line:运行到鼠标光标指向的行。
  • Move to line:将 PC 寄存器移至鼠标光标指向的行。
  • Resume at line:将 PC 寄存器移至鼠标光标指向的行并从此处开始运行。

右键点击地址视图会显示以下上下文菜单:

_images/ccs_debug-disassembly_rclk2.png

分别是:

  • Breakpoint:在鼠标光标指向的行添加或切换断点
  • Enable/Disable Breakpoint:启用/禁用以前添加到鼠标光标指向的行的断点
  • Add Dynamid Printf:(仅限 C/C++ Eclipse 调试器)添加一个观察点,当程序计数器到达鼠标光标指向的行时,该观察点会输出一条消息。
  • Toggle Breakpoint:在鼠标光标指向的行添加或删除断点
  • Breakpoint Properties:打开用于设置断点属性的对话框。
  • Show Addresses:在每个反汇编行的左侧显示存储器地址。
  • Show Opcodes:(仅限 C/C++ Eclipse 调试器)显示汇编指令的操作码。
  • Show Function Offsets:显示相对于存储器中先前定义的函数符号的偏移量。该选项要求事先已将调试符号加载到调试器中。
  • 副本:以文本形式复制所选内容。

7.4.5.“Memory Browser”视图

Memory Browser 视图是调试器另一个不可或缺的部分,其中显示从指定地址开始的目标存储器内容,并提供各种数据格式化功能。存储器视图默认处于关闭状态,但可以通过转至 View → Memory Browser 菜单来查看该视图。

_images/ccs_debug-memory_view.png

该视图提供多种查看格式和类型:字符、整数(有符号/无符号)、浮点数和多种十六进制数据大小(8 到 64 位)。其他功能包括:用预定义的值填充存储器、保存到主机 PC 中的文件/从主机 PC 中的文件加载、可以查看所有变量和函数以及每个存储器位置都有一个上下文相关的信息框。

在某些架构中,该视图还可以显示高速缓存信息:

_images/ccs_debug-memory_view_cache.png

要使用该信息,只需在该视图顶部的地址文本框中输入起始地址,然后选择相应的器件存储器页面。

F28x MCU、C5500 DSP 和 PRU 内核具有单独的代码、数据和 I/O 存储器页面。

可以通过双击值来编辑所选存储器位置的内容。

Memory 视图的多个实例可以同时显示,从而能够比较存储器内容。

  • 在打开的存储器视图中所做的任何属性更改仅适用于该存储器视图。

工具栏包含多个功能:

_images/ccs_debug-memory_toolbar.png

分别是:

  • Load/Save/Fill Memory:通过该按钮可访问 Load and Save MemoryFill Memory 选项。
  • Virtual/Physical Memory View:在虚拟存储器内容和物理存储器内容之间切换。对于 C6600 内核,该选项绕过 MPAX 以实现完整的 36 位寻址。对于 Cortex A 内核,该选项绕过存储器管理单元 (MMU)。
  • Memory Analysis:该选项切换高速缓存颜色。该选项与器件相关。
  • Continuous Refresh:使用来自目标的数据以恒定速率更新视图的内容(可通过“View Menu”选项进行配置)。
  • Refresh:通过从目标加载内容来更新视图的内容。
  • Open new view:打开一个新视图,以便并排比较值。
  • Pin to debug context:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击存储器视图会显示以下上下文菜单:

_images/ccs_debug-memory_rclk.png

分别是:

  • Add Watchpoint (C/C++)…:向突出显示的地址添加一个观察点
  • Find and Replace:搜索和替换目标存储器中的数据模式。
  • Configure…:配置视图上显示的元素以及保存对目标存储器的修改时的行为。
  • Copy to Clipboard:将突出显示的地址或整个视图的内容复制到主机剪贴板中。
  • Copy to Memory:将突出显示的地址或整个视图的内容复制到目标存储器中的另一个地址区域。
  • Load Memory:将主机中某个文件的内容加载到目标存储器中。请查看加载和保存存储器数据一节。
  • Save Memory:将目标存储器的内容保存到主机中的一个文件中。请查看加载和保存存储器数据一节。
  • Fill Memory:用可配置的数据类型、地址和存储器长度填充目标存储器的内容。请查看填充存储器一节。
  • Print:将突出显示的地址或整个视图的内容发送至连接到主机的打印机。
  • Reference Buffer:捕获线性缓冲区(基准)并将其保存到存储器中,以便在代码执行过程中轻松将其与更改进行比较。
  • Tiler Display:对存储器内容进行格式化,使其显示为 4x4 或 8x2 排列的二维数据帧。该选项对于视频处理很有用。
  • Refresh:通过从目标加载内容来更新视图的内容。

7.4.5.1.加载和保存存储器数据

下面显示了 Load Memory 对话框。Save Memory 对话框非常相似。

_images/ccs_debug-memory_load_save.png

该对话框支持多种数据格式和设置:

  • TI Data:遵循 TI .dat 文件格式的文本文件。对于该数据格式,系统会解析文件并自动填充要复制的数据的目标存储器地址和长度。
  • TI Raw Data:不包含任何预先格式化的数据的文本文件。该数据格式要求提供复制数据的目标存储器地址和源文件的类型大小。
  • Binary:二进制数据位流。该数据格式要求提供复制数据的目标存储器地址。
  • COFF:遵循 TI COFF 文件格式的二进制文件。对于该数据格式,系统会解析文件并自动填充存储器。
  • ELF:遵循 ELF 文件格式的二进制文件。对于该数据格式,系统会解析文件并自动填充存储器。Save Memory 功能不支持该选项。
  • Hex:遵循十六进制文件格式的文本文件。对于该数据格式,系统会解析文件并自动填充存储器。Save Memory 功能不支持该选项。

有关 Save Memory 功能支持的各种数据格式的更多信息,请查看数据文件格式一节。

7.4.5.2.填充存储器

下面显示了 Fill Memory 对话框。

_images/ccs_debug-memory_fill.png

分别是:

  • Start Address:设置待填充的初始地址。
  • Length:设置待填充的存储器中的字数。可以通过“Type-size”设置来定义字大小。
  • 数据值:设置待填充的数据。其大小必须与“Type-size”设置相符。
  • Type-size:设置要写入目标存储器的数据大小。可以将其设置为由硬件 ISA 定义的默认大小或任意值。

7.4.6.“Console”视图

Console 视图是调试器另一个不可或缺的部分,其中显示调试会话的几条提示性消息。该视图默认处于关闭状态,但通常会在调试会话启动时显示,用于显示各种状态和进度消息。

_images/ccs_debug-console_view.png

该视图可以显示的几种消息包括:

  • 目标配置脚本(GEL 脚本)的输出。
  • 来自调试器或其协议栈的错误和警告。
  • 来自代码中 printf() 语句的任何控制台 I/O 输出。

对于多处理器环境,可能会将多个 Console 视图绑定到每个内核。

工具栏包含多个功能:

_images/ccs_debug-console_toolbar.png
  • Clear Console:清除 Console 视图的内容。
  • Scroll Lock:添加新内容时锁定自动滚动选项
  • Word Wrap:使文本输出中较长的行换行,以适应视图的宽度。
  • Pin Console:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • Display Selected Console:允许选择多种类型的可用控制台:编译、CIO 和 GEL 输出是最常见的类型。
  • Open Console:创建一个新的 Console 视图,该视图可用于监控多个内核或多个数据源的输出。
  • Minimize/Maximize:将视图最小化或最大化。

右键点击 Console 视图会显示以下上下文菜单:

_images/ccs_debug-console_rclk.png
  • Cut/Copy/Paste:将信息剪切、复制到剪贴板中/从剪贴板中粘贴信息。
  • Select All:选择视图中的所有文本。
  • Find/Replace:搜索并替换视图中的字符串。
  • Open Link:在外部 Web 浏览器中打开 URL 或 HTML 链接。
  • Clear:清除 Console 视图的内容。
  • Scroll Lock:添加新内容时锁定自动滚动选项
  • Word Wrap:使文本输出中较长的行换行,以适应视图的宽度。

7.4.7.断点

断点是任何调试器最基本的功能之一,可以使处理器或内核执行的操作在代码中的预定义位置停止。

可以在源文件中的某一行(该行被转换为器件存储器中的地址)设置断点,也可以直接在“Disassembly”视图中的某个地址上设置断点。也可以在 OutlineProject 视图中的某个方法上设置断点。

断点显示在源代码编辑器视图的左侧(与行号、代码折叠符号等一起显示在垂直编辑器标尺中)和“Breakpoints”视图中。

也可以通过所有视图中的上下文菜单启用或禁用断点。每当遇到断点时,启用的断点都会使线程挂起。启用的断点显示为蓝色,并在调试器成功设置后显示复选标记(软件断点:swbkpt,硬件断点:hwbkpt)。禁用的断点不会使线程挂起,这些断点在所有视图中显示为灰色。

有两种类型的断点:软件和硬件。

软件断点用于替代操作码。调试器通过在前一条指令所在的位置插入 estop_0 指令来修改操作码。程序计数器在执行软件断点指令之前立即停止。通常,该指令在主界面中处于隐藏状态,但在某些情况下,该指令会显示在“Disassembly”视图中。

只能在具有写访问权限的存储器区域中设置软件断点 (RAM),因此对于可以使用的软件断点数量没有理论上的限制。

硬件断点由目标硬件在内部实现。用于实现硬件断点的方法在很大程度上取决于器件或内核,但通常调试器会将地址写入器件上的寄存器并设置标志以启用断点。这些寄存器对 IDE 不可见。

可以在任何存储器类型(RAM、闪存或 ROM)中设置硬件断点,但硬件断点受器件上寄存器数量的限制。这对于控制台 I/O 器件类型而言具有强制性。

硬件断点也可以有一个计数,它确定在生成断点之前遇到某个位置的次数 - 例如,如果计数为 2,则每隔一次生成一个断点。

一类特殊的硬件断点称为观察点,此类断点由存储器访问(而不是指令获取)触发。

除了简单地停止代码之外,CCS 中的断点还添加了一系列其他操作(例如文件 I/O 传输、屏幕更新等),可以通过 Breakpoint Properties 进行访问。

若要设置断点,只需双击源代码视图中的行号或反汇编视图中的地址的左侧。调试器将检查调试器存储器映射以确定指定的位置是否可写 (RAM)。如果可写,那么将使用软件断点。如果确定该位置不可写(闪存、ROM),那么将使用硬件断点。

_images/ccs_debug-bkpt_placement.png

警告

在经过优化的代码中,断点可能未设置到 C 源代码中的确切行。这是因为优化器可能会将代码紧缩起来,从而影响汇编指令和 C 源代码之间的相关性。

7.4.7.1.断点属性

Breakpoint Properties 显示断点的所有详细信息(地址位置、相关源代码、类型)并允许修改相关的行为(操作、计数器、事件类型)。如果您已将光标置于 Breakpoint 视图窗口中,则可以右键点击断点并从上下文菜单中选择 Properties 以查看更详细的属性列表。断点属性保存在工作区中,因此您无需在调试会话之间重置它们。用户可以修改任何断点属性,即使在创建断点后也可以执行该操作。

_images/ccs_debug-bkpt_properties.png

除了简单地停止代码之外,CCS 中的断点还添加了一系列其他操作(例如文件 I/O 传输、屏幕更新等),可以通过断点属性的 Action 选项访问这些操作。

_images/ccs_debug-bkpt_actions.png

其中一些操作会在 Action 字段的正下方打开新的参数选项。参数的选择将取决于所选的操作。

主要操作包括:

  • Halt Target:创建断点时的默认操作是在触发时使目标停止。
  • Execute Expression (GEL):评估单个 GEL 表达式。选中之后,将打开一个新的选项字段,可以在其中输入 GEL 表达式。
  • Update View:更新调试会话单个视图的内容。选择之后,将打开一个新的选项字段,可以在其中选择一个特定的视图进行更新。更新后,目标执行恢复。
  • Read Data from File/Write Data to File:到达断点位置后,对主机执行读取/写入操作。数据传输完成后,目标执行恢复。选择之后,文件名、存储器地址、长度和数据格式的附加字段将可用。
    • 文件以 TI .dat 或 .coff 格式进行保存,数据文件格式一节对此进行了介绍。

其他可配置的断点属性包括:

  • Skip Count:设置执行断点操作之前跳过的次数。
  • Group:允许对断点进行分组以实现高级控制。

7.4.7.2.观察点

观察点是一类特殊的硬件断点,可以针对特定的存储器读取、存储器写入或存储器读取和写入而触发。观察点仅显示在“Breakpoints”视图中。

观察点对于捕获异常、无效的存储器边界访问、溢出的缓冲区等非常有用,并且可以设置为访问任何存储器区域,包括存储器映射寄存器 (MMR)。

要设置观察点,只需在源代码编辑器中突出显示某个变量,右键点击并选择 Breakpoint → Hardware Watchpoint。可以通过点击“Breakpoints”视图工具栏中的小蓝点来设置观察点。

7.4.7.3.条件断点

条件断点是一类仅在指定条件为真时触发的特殊断点。条件断点在显示时会在断点图标上叠加一层。

若要在断点上设置条件,请执行以下操作:

  • “Breakpoints”视图“Disassembly”视图或“Editor”视图中右键点击需要修改的断点。
  • 在断点的上下文菜单中选择 Breakpoint Properties
  • 在“Properties”对话框中,找到 Debugger Response 分支。
  • Condition 字段中,输入一个要计算的 GEL 表达式。请注意,如果表达式调用一个 GEL 函数,它必须已在加载的某个 GEL 文件中定义。
  • 选择t Apply and Close 关闭对话框并提交更改。

启用断点后,如果断点条件评估为真,则目标执行会在执行该代码行之前挂起。

7.4.7.4.“Breakpoints”视图

Breakpoints 视图是调试器不可或缺的一部分,用于对断点以及其他扩展(如观察点、事件计数器等)进行全面的管理。Breakpoints 视图默认处于关闭状态,但可以通过转至 View → Breakpoints 菜单来查看该视图。

_images/ccs_debug-bkpt_view.png

上面的视图包含所有断点的状态,并允许通过上下文菜单(右键点击)直接配置其属性。

_images/ccs_debug-bkpt_rclk.png
  • Breakpoint:扩展为一个断点、计数器或观察点列表。
  • Go to File:导航至断点所在的源文件。
  • Enable/Disable:启用/禁用选中的断点。禁用某个断点并不会将其删除,因此将来可以轻松地重新应用(启用)该断点。
  • Remove:删除突出显示的断点。
  • Remove All Triggers:禁用视图中的所有可见断点而不将其删除。
  • Remove All:删除视图中的所有断点。
  • Select All:选中视图中的所有断点。
  • Copy/Paste:将断点信息复制到剪贴板中/从剪贴板中粘贴断点信息。
  • Import/Export Breakpoints:从 XML 格式文件中导入断点信息/将断点信息导出到 XML 格式文件中。该选项对于设置了多个断点的复杂调试会话非常有用。

工具栏包含各种选项。

_images/ccs_debug-bkpt_toolbar.png
  • New breakpoint:通过打开一个对话框以指定存储器中的位置(地址)来创建一个新断点。该按钮旁边的小箭头用于从一列断点、计数器或观察点中进行选择。
  • Remove Selected Breakpoints:删除突出显示的断点。
  • Remove All Breakpoints:删除视图中的所有断点。
  • Show Breakpoints Supported by Selected Target:仅显示属于特定调试上下文的断点。区分在调试会话的各种内核或器件上设置的断点很有用。
  • Go to File for Breakpoint:导航至断点所在的源文件。
  • Skip All Breakpoints:禁用在该视图上设置的所有断点而不将其删除。
  • Expand/Collapse All:展开或折叠显示的所有断点。
  • Link with Debug View:将视图锁定至特定的调试上下文。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

7.4.8.“Terminal”视图

提供了简单的 Terminal 视图,以从 CCS IDE 内部执行串行或网络通信。有关该视图的详细信息,请参阅以下参考文献:

7.4.9.高级数据可视化

CCS 中提供了高级图形和图像可视化工具。这些工具可以在时域和频域中以图形格式显示数据数组,并接受各种数据类型(整数、浮点数、Q 值、实数、复数等)以及图像分析器。

请查看以下页面:

7.4.9.1.“Cache”视图

Cache 视图显示 C6000 DSP 内核的高速缓存配置,按高缓存类型分隔并按存储器地址排序。该视图包含以电子表格格式显示的各种字段。

_images/ccs_debug-cache-view.png

列包括:

  • Cache:行中使用的高速缓存类型。
  • Line Start/End Adrs:行的初始地址和最终地址。
  • 设置:高速缓存组的 ID。
  • Way:高速缓存组的路。要求高速缓存以 N 路相联模式运行。
  • Valid:指示数据是有效的。
  • Dirty:指示数据是无效的。
  • LRU Way:指示高速缓存组最少使用的路。
  • Symbols in Cache:显示在高速缓存行中分配的调试符号列表。

右键点击 Cache 视图会显示以下选项:

_images/ccs_debug-cache-rclk.png
  • View cache line contents in Memory View:切换“Memory Browser”视图中每个高速缓存行的行分隔符。
  • Copy selected cell:将单元格的内容以文本格式复制到剪贴板中。
  • Show Dashboard:显示高速缓存仪表板,重置任何其他视图修饰符。
  • Highlight Cache Lines with Memory Differences:将具有差异的高速缓存行设置为粗体,以便更轻松地实现可视化。
  • Show each symbol in a separate row:展开 Symbols in cache 列中显示的符号,以在其自己的行中显示每个符号。

工具栏包含各种选项:

_images/ccs_debug-cache-toolbar.png
  • Address bar:一个自由文本字段,用于输入所需的要由 Cache 视图评估的地址。
  • Show cache line details:展开突出显示的高速缓存行,以显示当前分配给该行的所有符号。
  • Filter:Cache 视图设置不同的视图配置。
  • Refresh:通过从目标加载内容来更新视图的内容。
  • Pin to current device:调试具有多个内核的器件时,该选项会将视图锁定到上下文中的内核。
  • New cache view:打开一个新视图,以便并排比较值。
  • View Menu:具有多个选项的下拉菜单,用于自定义数据在视图中的显示方式。
  • Minimize/Maximize:将视图最小化或最大化。

7.4.10.衡量性能

配置文件时钟工具提供了通过对周期进行计数来衡量低级代码性能的功能。有关该功能的详细信息,请参阅以下参考文献:

7.4.11.数据文件格式

CCS 能够以几种文件格式导入和导出数据,这些文件格式包括 COFF、平面二进制格式和 TI DAT。

7.4.11.1.通用目标文件格式

通用目标文件格式(简称为 COFF)是一种起源于 Unix 系统的二进制文件格式,用于目标代码、库和可执行文件。TI 使用该文件格式并针对嵌入式系统进行了优化修改。

有关其他详细信息和参考资料,请参阅 TI 的汇编语言工具用户指南COFF Wikipedia 页面。

7.4.11.2.二进制格式

二进制格式没有指定的标头或转换方式。该格式是一个简单的数据位流,没有任何关于符号、地址放置或重定位的信息。数据长度等于文件长度。

一个重要的方面:当使用 tiobj2binobjcopy 通过工程创建二进制文件时,必须注意将所有初始化代码/数据放置在相邻的存储器位置中。任何间隙都用零填充。如果将具有零填充间隙的文件加载到器件中,则可能会触发无效存储器访问错误。

7.4.11.3.TI 原始数据格式

TI 原始数据格式与上述的二进制格式相同。

7.4.11.4.TI DAT 格式

包含一行标头信息并以每行一个样本的形式存储数据的文本文件。

数据文件的标头信息使用以下语法:

MagicNumber 格式 StartingAddress PageNum 长度 SubFormat
  • MagicNumber:固定为 1651。
  • Format:格式类型:
    • 1:十六进制
    • 2:整数
    • 3:
    • 4:浮点
    • 9:扩展类型
  • StartingAddress:以十六进制表示的起始地址
  • PageNum:存储器页面:
    • 0: 编程
    • 1:数据
    • 2:I/O
  • Length:以十六进制表示的块数量
  • SubFormat:Format 设置为 9 时的扩展数据类型。

格式类型 1 至 4 由旧版本的 CCS 使用,应仅用于与旧版兼容的情形。当前版本仅使用具有扩展数据类型的格式类型 9。

下表显示了每个目标支持的扩展数据类型列表。

可以通过连接到器件或内核,然后打开脚本控制台并发出以下命令来获取该列表: eval('GEL_MemoryListSupportedTypes(0)');

  ARM Cortex 32 位 ARM Cortex 64 位 F28x、PRU C66x MSP430
0 32 位十六进制 - TI 样式 64 位十六进制 - TI 样式 8 位十六进制 - TI 样式 64 位十六进制 - TI 样式 32 位十六进制 - C 样式
1 32 位十六进制 - C 样式 64 位十六进制 - C 样式 8 位十六进制 - C 样式 64 位十六进制 - C 样式 32 位十六进制 - TI 样式
2 32 位有符号整数 64 位浮点数 8 位有符号整数 64 位浮点数 32 位有符号整数
3 32 位无符号整数 64 位指数浮点数 8 位无符号整数 64 位指数浮点数 32 位无符号整数
4 32 位二进制 32 位十六进制 - TI 样式 8 位二进制 32 位十六进制 - TI 样式 32 位二进制
5 32 位浮点数 32 位十六进制 - C 样式 字符 32 位十六进制 - C 样式 32 位浮点数
6 32 位指数浮点数 32 位有符号整数 紧密字符 32 位有符号整数 32 位指数浮点数
7 16 位十六进制 - TI 样式 32 位无符号整数 16 位十六进制 - C 样式 32 位无符号整数 16 位十六进制 - C 样式
8 16 位十六进制 - C 样式 32 位二进制 16 位十六进制 - TI 样式 32 位二进制 16 位十六进制 - TI 样式
9 16 位有符号整数 32 位浮点数 16 位有符号整数 32 位浮点数 16 位有符号整数
10 16 位无符号整数 32 位指数浮点数 16 位无符号整数 32 位指数浮点数 16 位无符号整数
11 16 位二进制 16 位十六进制 - TI 样式 16 位二进制 16 位十六进制 - TI 样式 16 位二进制
12 8 位十六进制 - TI 样式 16 位十六进制 - C 样式 32 位有符号整数 16 位十六进制 - C 样式 8 位十六进制 - C 样式
13 8 位十六进制 - C 样式 16 位有符号整数 32 位无符号整数 16 位有符号整数 8 位十六进制 - TI 样式
14 8 位有符号整数 16 位无符号整数 32 位十六进制 - C 样式 16 位无符号整数 8 位有符号整数
15 8 位无符号整数 16 位二进制 32 位十六进制 - TI 样式 16 位二进制 8 位无符号整数
16 8 位二进制 8 位十六进制 - TI 样式 32 位浮点数 8 位十六进制 - TI 样式 8 位二进制
17 字符 8 位十六进制 - C 样式 32 位指数浮点数 8 位十六进制 - C 样式 字符
18 64 位十六进制 - TI 样式 8 位有符号整数 32 位 IEEE 浮点数 8 位有符号整数  
19 64 位十六进制 - C 样式 8 位无符号整数 32 位 IEEE 指数浮点数 8 位无符号整数  
20 64 位有符号整数 8 位二进制 64 位十六进制 - C 样式 8 位二进制  
21 64 位无符号整数 字符 64 位十六进制 - TI 样式 字符  
22 64 位浮点数 紧密字符 64 位浮点数 紧密字符  
23 64 位指数浮点数   64 位指数浮点数    

7.5.高级调试主题

7.5.1.调试库代码

在调试应用时,目标可能会在链接到应用的其中一个库的例程中(有意或无意地)停止。在这种情况下,编辑器视图将显示消息 Can’t find a source file at…No source available for…。在大多数情况下,还会显示两个名为 View Disassembly…Locate File… 的按钮。

_images/nosource.png

显示该消息的原因是程序在调试器无法定位相应源文件的位置停止。当在当前工程之外编译的库中停止时,通常会发生这种情况。

当在任何库(包括 C 运行时库、BIOS 库、驱动程序库或链接到工程的其他自定义库)中停止时,都可能会出现此类消息。

以下是会出现该消息的一些情况:

  • 按下 Halt 按钮并且程序计数器位于库例程中。
  • 在库例程内的某个标签处设置了断点,调试器在该断点处停止。
  • 某种意外的原因造成代码在库例程中停止。

通常情况下,该消息本身是无害的,可以将其忽略。如果需要对库代码进行源代码级调试,则可以通过点击 Locate File… 并浏览到源文件所在的位置(目录、已加载的远程驱动器等)使调试器指向源文件位置。

TI 提供的库(例如 C 运行时库、driverlib(SimpleLink SDK、C2000Ware、MSPWare、TivaWare 等的一部分))通常随源文件一起提供,因此可以将这些目录指定给调试器。

如果您无法访问源文件,您仍然可以通过点击 View Disassembly… 来查看和逐步执行反汇编代码。

如果没有关联源文件,调试器也无法通过编辑器视图在库例程中设置断点。例如,如果用户打开作为库一部分的源文件并尝试通过编辑器视图在其中设置一个断点,但没有在调试器和源文件之间建立关联,则该断点将不会被启用。您仍然可以通过指定符号名称或关联地址在 Breakpoints 视图中设置断点。然后,当程序在断点处停止时,您可以点击 Locate File… 按钮告诉调试器源文件所在的位置。与源文件建立关联后,用户应能够通过编辑器视图设置未来的断点。

除了 Locate File… 按钮,还可以通过其他几种方法来告诉调试器在何处查找不属于工程的源文件。请参阅 CCSv6 提示和技巧演示文稿的幻灯片 53-58。

7.5.2.调试经优化的代码

如果相关程序在编译时启用了优化,则会影响调试体验。优化级别越高,调试就越困难。请参阅下面这篇关于在调试和优化之间进行权衡的文章:《调试与优化之间的权衡》

7.5.3.跟踪

如果用户认为需要为平台使用跟踪调试功能,可以参阅我们专为每个器件系列提供的一些参考资料(外部链接):

7.5.3.1.Sitara、Keystone、OMAPL、Hercules、C6000 DSP:

7.5.4.多核调试

CCS 具有支持多核调试的高级功能,包括以对称或非对称方式控制多个内核和器件的功能。以下资料提供了详细信息:

7.5.5.配置闪存设置

CCS 具有集成式片上闪存编程器。当工程配置为使用器件的闪存区域时,调试器会自动为这些部分对闪存进行编程。

只有具有内部存储器的器件才能通过内置闪存编程器进行自动编程。必须使用自定义方法对外部闪存 IC 器件(I2C、SPI、并行 NAND/NOR)进行编程。

可以通过以下几种方式访问与闪存相关的设置和操作:

  • CCS Debug 透视图中,转到菜单 Tools → On-Chip Flash
  • CCS Edit 透视图中,右键点击工程,然后选择 Project Properties → Debug → Flash Settings。该操作假设正在使用和调试一个工程。
  • 某些操作(如擦除、保护、编程)只有在连接到器件后才能执行。

要在加载程序之前或甚至在不加载程序的情况下连接到器件,请参阅手动启动一节。

接下来的几节汇总了适用于每个器件型号的选项,但请参阅器件文档以获取更多信息。

7.5.5.1.CC32xx (Cortex M4)

CC32xx 器件支持以下设置/操作:

Flash Settings:

  • Crystal frequency:设置闪存算法所需的晶体频率。该设置需要匹配目标板硬件,并设置为与常见开发套件相匹配的默认值。
  • Reset target during program load to Flash memory:在对闪存进行编程之前启用/禁用系统复位信号。

Program Load - Erase Method:设置对器件进行编程时使用的擦除方法。

  • Necessary Pages Only:仅擦除链接器已分配存储空间的闪存区域。
  • Use the Erase Options Specified Below:启用下面 Erase 部分下的选项。
  • Do Not Erase Flash Memory:不擦除任何闪存。

Erase:手动擦除器件的闪存。

  • Entire Flash:擦除整个闪存。
  • By Address Range:指定要擦除的闪存的起始地址和结束地址。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.5.2.CC13xx/CC26xx (Cortex M3/M4)

CC13xx 和 CC26xx 器件支持以下设置/操作:

Program Load Settings:设置擦除方法,并提供在执行操作后立即在闪存上执行空白检查和计算 CRC32 的选项。

  • All Unprotected Sectors:擦除之前未设置为受保护区域的所有区域。
  • Necessary Sectors Only:将仅擦除链接器已分配存储的闪存区域。
  • Necessary Sectors Only (Retain untouched content within sector):为差分闪存编程执行更高级别的粒度。该设置可用于加载驻留在不同存储器扇区中的多个可执行文件。
  • Specific Sectors:仅允许使用下面的 Sectors 选项擦除特定的扇区。
  • Do not erase sectors (program load only):仅执行闪存编程。有助于加快特意空白器件的过程,但可能会导致预先刷写的器件出现问题。
  • Use CRC Verification during program load:对整个闪存内容执行 CRC 计算和验证。
  • Perform Blank Check:验证整个闪存是否为空白。

Skip Sectors during Program Load:能够指定在闪存擦除/编程/验证期间保持不变的扇区。该设置也可以根据之前的内容排除对应的部分。

Customer Configuration (CCFG):能够设置各种附加器件的配置:- Keep CCFG data:保留器件 CCFG 的 N 个高字节。更多详细信息,请参阅器件文档。- Disable Bootloader:禁用器件的内置引导加载程序 - Lock debug interface:阻止在编程后访问调试接口。这是不可逆的,不应在调试阶段使用。- Write-protect sectors:使用下面的 Sectors 选项防止覆盖特定的扇区。

Erase Actions:手动擦除器件的闪存。- Erase entire flash:擦除整个闪存。执行该操作后必须重新连接器件。- Erase specific flash sectors:擦除由下面的 Sectors 选项指定的扇区。- 可以通过点击 Erase Flash 按钮来手动擦除闪存。

器件信息:连接后,能够收集有关已连接器件的信息。

Device MAC Addresses:连接后,能够读取和设置主要 BLE、次要 BLE、主要 IEEE 和次要 IEEE 地址。更多详细信息,请参阅器件文档。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.5.3.MSP432 (Cortex M4)

MSP432 器件支持以下设置/操作:

Program Load Settings:设置擦除方法,并提供在执行操作后立即在闪存上执行空白检查和计算 CRC32 的选项。

  • Necessary Pages Only:仅擦除链接器已分配存储空间的闪存区域。
  • Use the Erase Options Specified Below:启用下面 Erase 部分下的选项。
  • Do Not Erase Flash Memory:不擦除任何闪存。

Erase Configuration:指定在闪存编程期间要擦除的各种存储器类型。

  • Erase main memory only:仅擦除主存储器。

  • Erase main and information memory:擦除两个存储器区段。

  • Factory Reset:将所有存储器和用户寄存器恢复为默认设置。

  • Erase and download necessary segmnents only (Differential Download):跟踪先前加载的可执行文件,在两者之间进行比较,确定增量更改,然后仅下载经过修改的存储器部分。这对于在大型可执行文件上仅进行微小更改的开发阶段尤其有用。

    警告

    不应将该选项用于加载两个不同的程序(例如引导加载程序和应用程序),因为它可能会在加载第二个程序时擦除第一个程序,并且还会减慢编程速度,因为它会不必要地尝试比较两个完全独立的程序。

  • Replace written memory locations, retain unwritten memory locations:可用于加载驻留在存储器的不同部分的多个可执行文件。

    • 如果存在重叠的部分(例如向量表),则最后要下载的可执行文件是需要保留向量表的那个可执行文件,从而在目标器件上保留正确的可执行文件。
  • By Address Range (specify below):指定要擦除的闪存的起始地址和结束地址。

Allow BSL information memory erase:能够访问 BSL 存储器区域。该选项用于创建自定义 BSL 代码。

Perform CRC verification:对整个闪存内容执行 CRC 计算。

Perform Blank Check:验证整个闪存是否为空白。

Device Security Configuration:永久或单次锁定器件。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.5.4.TM4C (Cortex M4)

TM4C 器件支持以下设置/操作:

Flash Settings:

  • Crystal frequency:设置闪存算法所需的晶体频率。该设置需要匹配目标板硬件,并设置为与常见开发套件相匹配的默认值。
  • Reset target during program load to Flash memory:在对闪存进行编程之前启用/禁用系统复位信号。

Program Load Settings:设置擦除方法,并提供在执行操作后立即在闪存上执行空白检查和计算 CRC32 的选项。

  • Necessary Pages Only:仅擦除链接器已分配存储空间的闪存区域。
  • Use the Erase Options Specified Below:启用下面 Erase 部分下的选项。
  • Do Not Erase Flash Memory:不擦除任何闪存。

Erase:指定在闪存编程期间要擦除的各种存储器范围。

  • Entire Flash:擦除所有闪存。
  • By Address Range:指定要擦除的闪存的起始地址和结束地址。

Blank Check:验证闪存是否为空白。默认验证整个闪存,但可以设置为验证指定的地址范围。

CRC32:对闪存内容执行 CRC32 计算。默认对整个闪存执行该操作,但可以设置为对指定的地址范围执行该操作。

User Register Programming:允许直接对非易失性用户寄存器(USER_REG0 和 USER_REG1)进行编程。

MAC Address Mode:以以太网 MAC 地址格式对上述用户寄存器进行编程。

Debug Port Unlock:如果将引脚配置为 GPIO 或存在导致器件锁定的其他问题(例如配置超出规格的系统时钟),则允许解锁 JTAG/SWD 调试引脚。

ICDI Firmware Update:可用于更新使用基于 TM4C123 的 ICDI 调试器的电路板 ICDI 固件。对于最后三项设置,请参阅 LMFlash 编程器帮助,以获取更多信息。

器件信息:连接后,能够收集有关已连接器件的信息。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.5.5.F28x

F28x 器件支持以下设置/操作:

Clock/PLL Settings:这些选项对于为闪存操作配置器件的系统频率而言至关重要。

  • 在使用 Piccolo 器件时,这些字段不可修改,因为时钟控制完全基于器件的片上振荡器。

Download Settings:这些选项控制要执行的操作。

  • Erase and Program:执行擦除操作,然后对器件进行闪存编程。这是对器件进行编程的更安全的方法。
  • Program Only:仅执行闪存编程。有助于加快特意空白器件的过程,但可能会导致预先刷写的器件出现问题。
  • Verify Only:对刷写到器件中的数据执行完整性检查。
  • Perform Blank Check before loading data to Flash memory:在开始对闪存编程之前执行空白验证。
  • Verify Flash after Program:对写入目标器件的数据执行完整性检查。
  • Auto ECC Generation:能够为刷写到器件中的数据生成纠错码。

Range Avoidance Settings:能够指定闪存编程器不作改动的范围。

Performance Settings:通过组合存储器的各个部分来实现更快的闪存编程。在使用该选项时,会在对话框中显示多项权衡因素。更多详细信息,请参阅器件文档。

Erase Settings:指定在闪存编程期间要擦除的各种存储器范围。

  • Entire Flash:擦除所有闪存。
  • Necessary Sections Only:仅擦除链接器已分配存储空间的闪存区域。
  • Selected Sectors Only:指定要擦除的闪存组和扇区。可以通过点击 Erase Flash 按钮来手动擦除闪存。
  • 可以通过点击 Erase Flash 按钮来手动擦除闪存。

Blank Check Settings:验证闪存是否为空白。

  • Checksum:显示各种存储器类型的校验和结果。
  • 点击 Calculate Checksum 按钮可以执行计算。

Security Settings:用于为各种外设和存储器进行代码安全密码和其他安全设置编程。

Enable Verbose Output:设置“Console”视图的详细模式输出。

Backup RAM during Flash Programming/Operations:在闪存操作期间创建 RAM 内容的备份副本。

7.5.5.6.MSP430

MSP430 器件支持以下设置/操作:

Target Voltage (mV):设置目标器件使用的电压。

Download Options:设置特定于某些器件的选项。

  • Copy application to external SPI memory after program load:将应用复制到外部 SPI 存储器中。某些器件中的加载程序 ROM 代码会使用该选项。
  • Allow Read/Write/Erase access to BSL memory:能够访问 BSL 存储器区域。该选项用于创建自定义 BSL 代码。

闪存设置

  • Crystal frequency:设置闪存算法所需的晶体频率。该设置需要匹配目标板硬件,并设置为与常见开发套件相匹配的默认值。
  • Reset target during program load to Flash memory:在对闪存进行编程之前启用/禁用系统复位信号。

Program Load Settings:设置擦除方法,并提供在执行操作后立即在闪存上执行空白检查和计算 CRC32 的选项。

  • Necessary Pages Only:仅擦除链接器已分配存储空间的闪存区域。
  • Use the Erase Options Specified Below:启用下面 Erase 部分下的选项。
  • Do Not Erase Flash Memory:不擦除任何闪存。

Erase Options:指定在闪存编程期间要擦除的各种存储器类型。

  • Erase main memory only:仅擦除主存储器。

  • Erase main and information memory:擦除两个存储器区段。

  • Erase main, information and protected information memory:擦除器件的整个存储器。

  • Erase and download necessary segmnents only (Differential Download):跟踪先前加载的可执行文件,在两者之间进行比较,确定增量更改,然后仅下载经过修改的存储器部分。这对于在大型可执行文件上仅进行微小更改的开发阶段尤其有用。

    警告

    不应将该选项用于加载两个不同的程序(例如引导加载程序和应用程序),因为它可能会在加载第二个程序时擦除第一个程序,并且还会减慢编程速度,因为它会不必要地尝试比较两个完全独立的程序。

  • Replace written memory locations, retain unwritten memory locations:为差分闪存编程执行更高级别的粒度。该设置可用于加载驻留在存储器的不同部分的多个可执行文件。
    • 如果存在重叠的部分(例如向量表),则最后要下载的可执行文件是需要保留向量表的那个可执行文件,从而在目标器件上保留正确的可执行文件。
  • By Address Range (specify below):指定要擦除的闪存的起始地址和结束地址。

Erase Settings:选择上述 By Address Range 选项后设置 Start AddressEnd Address

器件信息:连接后,能够收集有关已连接器件的信息。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.5.7.Hercules (Cortex R)

Hercules 器件支持以下设置/操作:

Flash Settings:

  • OSCIN Frequency (MHz) 设置闪存算法所需的晶体频率。该设置需要匹配目标板硬件,并设置为与常见开发套件相匹配的默认值。
  • Enable Programming to OTP Memory:使能对器件的 OTP 存储器区域的写入操作。应避免在调试阶段启用该选项。
  • Auto ECC Generation:能够为刷写到器件中的数据生成纠错码。
  • Align program segments to 64-bit memory regions (for ECC calculation):强制对齐到 64 位边界,从而准确地进行 ECC 计算。
  • System Reset on Connect:在连接器件之前启用/禁用系统复位信号。

Flash verification settings:

  • Verify Only:对刷写到器件中的数据执行完整性检查。
  • Fast Verify:执行擦除操作,然后对器件进行闪存编程。这是对器件进行编程的更安全的方法。
  • 无: 仅执行闪存编程。有助于加快特意空白器件的过程,但可能会导致预先刷写的器件出现问题。

Program Load Settings:设置擦除方法,并提供在执行操作后立即在闪存上执行空白检查和计算 CRC32 的选项。

  • Necessary Pages Only:仅擦除链接器已分配存储空间的闪存区域。
  • Use the Erase Options Specified Below:启用下面 Erase 部分下的选项。
  • Do Not Erase Flash Memory:不擦除任何闪存。

Blank Check Options:验证闪存是否为空白。可以通过 Blank Check 按钮手动完成,或在刷写程序之前启用自动验证。

Erase Options:指定在闪存编程期间要擦除的各种存储器范围。

  • Entire Flash:擦除所有闪存。
  • Necessary Sections Only (for Program Load):仅擦除链接器已分配存储空间的闪存区域。
  • Selected Sectors Only:指定要擦除的闪存组和扇区。
  • 可以通过点击 Erase Flash 按钮来手动擦除闪存。

Flash Profiling:能够对之前加载到闪存中的代码执行完整的配置文件,并在与正确的可执行文件进行比较时跟踪可能的错误或不一致之处。该选项对于验证 CCS 以外的闪存编程工具也很有用。更多详细信息,请参阅器件文档。

Enable Verbose Output:设置“Console”视图的详细模式输出。

7.5.6.连接 SoC 器件的辅助内核

大多数器件只有一个内核。不过,在 SoC 器件中,通常其中一个内核是主内核(通常是 ARM),该主内核控制一个或多个附加(辅助)内核。在这些情况下,如果没有主内核的事先干预,则不可能在辅助内核中加载和调试代码,主内核不仅负责使辅助内核解除复位状态,还可以初始化 PLL 和外部存储器接口 (EMIF)。

  1. 首先确保目标配置文件包含正确的 GEL 文件 - 通过选择板或使用高级目标配置选项手动将其添加到器件中。
  2. 手动启动调试器并连接器件的主内核。
  3. 执行该操作后,Scripts 菜单将包含许多用于连接辅助内核的选项。这些选项可能在不同器件之间有很大的差异,下面提供了一些示例:
  • 对于 OMAPL138,该菜单显示为 DSP Wakeup
  • 对于 AM3359,该菜单显示为 PRU_ICSS → PRU_ICSS_Init
  • 对于 AM57xxAM65xx 等多款器件,在连接主内核时已使辅助内核解除复位状态。
  1. Debug 视图中右键点击辅助内核,然后选择 Connect Target
  2. 可以选择将代码加载到该内核中,方法为转至菜单 Run → Load… → Load Program…

7.5.7.内核状态

可以使用 Target Status 视图来检查 SoC 内核的状态。

  1. 启动调试器后,转到 Debug 视图,右键点击该视图,然后选择 Show All Cores
  2. 展开 Non Debuggable Devices 下的树,选择第一个内核(以 IcePick_CIcePick_D 结尾的内核)并连接该内核(按 Ctrl+Alt+C 或选择 Run → Connect Target 菜单)。
  3. 转至 View → Other 菜单,然后在“Type filter”文本框中键入 Target Status
  4. 选择 Target Status,然后点击 OK
  5. 此时将显示 Target Status 视图。展开选择项并检查器件所有内核的状态。
  • 处理器内核将显示在不可调试内核(通常被命名为 CS_DAP_xx)的树形结构下。必须连接这些不可调试内核才能显示处理器内核状态。
  • 已经为连接做好准备的内核将显示为 Clk On, Power On, CLK Down inactive, Power Down inactive, Not In Reset, Reset (None)
  • 没有为连接做好准备的内核将显示为 Clk Off, Power Off, CLK Down inactive, Power Down inactive, In Reset, Reset (None)
  • 被故意断电的内核将显示为 Clk Off, Power Off, CLK Down active, Power Down active, In Reset, Reset (None)

7.5.8.实时模式

实时模式是选定器件的一项特殊功能,可通过 CCS 调试器进行配置,使开发人员能够停止和检查程序及其存储器,而不会阻碍任何关键的预配置中断服务。

支持实时模式的器件包括所有的 TI C55x、C64x、C674x、C66x 和 F28x 器件(通过称为 ICEMaker 的内置模块来支持该功能)。基于 ARM Cortex 的器件不支持全实时模式。但这些器件确实支持实时(非侵入式)存储器访问。

实时模式主要由操作高功率系统的 F28x 开发人员使用,因此可以在以下主题中查看该器件系列的使用范例:

7.5.9.高级调试探针配置

目标配置编辑器“Advanced”选项卡具有一组常用的配置和一些特定于每个调试探针的项目。下面是有关每个型号和变体的配置的简短列表。

7.5.9.1.XDS110

_images/ccs_debug-xds110_advoptions.png
  • Board Data File:CCS 需要使用一个小型文本文件来正确表征调试探针以及连接到探针的电路板或器件。该选项控制此文件的生成。除非在非常特殊的情况下,否则将该选项的值保留为 auto generate

  • Debug Probe Selection:如果有一个或多个调试探针连接到主机,则通知 CCS。该配置具有选项 Only one XDS110 installedSelect by serial number

    • 选择 Select by serial number 选项后,系统会打开另一个选项 Enter the serial number,从而允许键入要使用的调试探针的序列号。
  • Power Selection:配置应用于目标的电源方法类型:Target supplied powerProbe supplied power (EnergyTrace)。

    • 选择 Probe supplied power 选项后,系统会打开另一个选项 Enter voltage:,其中包含用于输入 XDS110 向目标提供的电压的表单。
  • Power isolation:设置 CCS 调试会话与目标器件/板断开连接后 XDS110 探针的行为:Remove power at final disconnectKeep power at final disconnect。有关更多详细信息,请查看 <em>XDS110 用户指南附录和勘误表</em> 的第 3.1.2.2 节(位于 XDS110 页面中)。

  • JTAG TCLK Frequency (MHz):将 JTAG TCLK 频率设置为 Fixed default 8.5MHz frequencyFixed with user specified valueFixed with user selected faster value

    • 最后两个选择项会打开另一个选项,用于输入所需的频率或在三个预设的选项中进行选择。
  • JTAG/SWD/cJTAG Mode:配置要使用的信令类型:4 引脚 JTAG (IEEE1149.1)、启用辅助 UART 或 SWO 跟踪的 SWD 模式、4 引脚 cJTAG (IEEE1149.7) 和 2 引脚 cJTAG (IEEE1149.7)。有关所使用器件支持的模式,请参阅器件的技术参考手册。

    • 2-pin cJTAG 选项会打开另外两个选项:

      • Target Scan Format,该选项配置 cJTAG 模块的工作模式。
      • Auxiliary COM Por Connection,该选项启用 UART 通信端口或 SWO 跟踪。

7.5.9.2.XDS200

_images/ccs_debug-xds200_advoptions.png
  • Board Data File:CCS 需要使用一个小型文本文件来正确表征调试探针以及连接到探针的电路板或器件。该选项控制此文件的生成。除非在非常特殊的情况下,否则将该选项的值保留为 auto generate

  • Debug Probe I/O Port Number:针对“必须使用哪个绑定到主机的调试探针”进行配置。每个 I/O 端口都是动态分配的,并按照调试探针插入主机的顺序进行设置。

    • 选择 User Defined Port Number 选项后,系统会打开另一个选项 Enter a User Defined Port Number,从而能够键入大于 3 的端口号。
  • The JTAG nTRST Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以允许在 TRST 信号开关时对特殊边界扫描模式进行采样。有关所使用器件支持的模式,请参阅器件的技术参考手册。

  • The Power On-Reset Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以便在加电时对特殊器件引导模式进行采样。有关详细信息,请阅读器件的技术参考手册。

  • JTAG TCLK Frequency (MHz):将 JTAG TCLK 频率设置为 Fixed with user specified faster valueAdaptive with user specified limit

    • Enter a value 选项始终处于启用状态,从而允许键入所需的频率。
  • The JTAG Signals Isolation Upon Disconnect:设置 CCS 调试会话与目标器件/板断开连接后调试探针的行为:Do not isolate JTAG signals when last client disconnectsIsolate JTAG signals when last client disconnects

  • Apply nRESET/SRST pin on the debug header:配置要在每个调试会话开始时置位的 nRESET 引脚的行为。

  • JTAG/SWD/cJTAG Mode:配置要使用的信令类型:4 引脚 JTAG (IEEE1149.1)、启用辅助 UART 或 SWO 跟踪的 SWD 模式、4 引脚 cJTAG (IEEE1149.7) 和 2 引脚 cJTAG (IEEE1149.7)。有关所使用器件支持的模式,请参阅器件的技术参考手册。

    • 4-pin cJTAG 选项会打开另外两个选项:

      • The Converter 1149.7 Frequency Source:调整 cJTAG 操作的时钟源和类型。
      • The Target Pin Width:调整目标硬件的总线宽度。
    • 2-pin cJTAG 选项会打开另外四个选项:

      • Target Scan Format:配置 cJTAG 模块的工作模式。
      • The Target Pin Width:调整目标硬件的总线宽度。
      • User COM Por Connection,该选项启用 UART 通信端口或标准 TDO 数据引脚。

7.5.9.3.XDS560v2

_images/ccs_debug-xds560v2_advoptions.png
  • Board Data File:CCS 需要使用一个小型文本文件来正确表征调试探针以及连接到探针的电路板或器件。该选项控制此文件的生成。除非在非常特殊的情况下,否则将该选项的值保留为 auto generate

  • Emulator I/O Port Number:针对“必须使用哪个绑定到主机的调试探针”进行配置。每个 I/O 端口都是动态分配的,并按照调试探针插入主机的顺序进行设置。

    • 选择 User Defined Port Number 选项后,系统会打开另一个选项 Enter a User Defined Port Number,从而能够键入大于 3 的端口号。
  • JTAG TCLK Frequency (MHz):将 JTAG TCLK 频率设置为以下值之一:

    • Automatic with faster 35.0MHz limit:调试器执行信号完整性测试,直到达到速度上限(高达 35.0MHz)。
    • Automatic with legacy 10.368MHz limit:调试器执行信号完整性测试,直到达到速度上限(高达 10.368MHz)。该选项有助于在较嘈杂的环境中连接到电路板。
    • Automatic with user specified limit:调试探针执行信号完整性测试,直到达到最高速度(高达传递到 Enter a value 选项的用户所定义的值)。
    • Adaptive with user specified limit:调试探针执行信号完整性测试,直到达到最高速度(高达传递到 Enter a value 选项的用户所定义的值)。
    • Adaptive without any limit at all:调试器执行信号完整性测试,直到达到可能的速度上限。
    • Fixed with user specified faster value:调试探针尝试以用户定义的值(传递到 Enter a value 选项)所定义的速度进行连接。如果连接不可靠,那么调试器会小范围的减小 TCLK 速度以实现可靠连接。
    • Fixed with user specified slower value:调试探针尝试以用户定义的值(传递到 Enter a value 选项)所定义的速度进行连接。如果连接不可靠,那么调试器会增大 TCLK 速度以实现可靠连接。
    • TCLK looped-back with user specified limit:调试器在内部将 TCK 和 RTCK 短路,以能够连接到未配置该连接的目标。
  • TMS/TDO Output Timing:调整 TMS 信号的工作模式以允许更快但兼容性较差的工作模式。

  • The JTAG nTRST Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以允许在 TRST 信号开关时对特殊边界扫描模式进行采样。有关所使用器件支持的模式,请参阅器件的技术参考手册。

  • The Power On-Reset Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以便在加电时对特殊器件引导模式进行采样。有关详细信息,请阅读器件的技术参考手册。

  • The Boot-Mode Pin Map:设置每个 EMU0 和 EMU1 引脚的功能,对这些引脚提供有限的 GPIO 控制以设置模式和硬件功能(如果目标板被路由这样做)。

  • The JTAG Signals Isolation Upon Disconnect:设置 CCS 调试会话与目标器件/板断开连接后调试探针的行为:Do not isolate JTAG signals when last client disconnectsIsolate JTAG signals when last client disconnects

  • The cJTAG Converter Features:配置要使用的信令类型:4 引脚 JTAG (IEEE1149.1)、4 引脚 cJTAG (IEEE1149.7) 或 2 引脚 cJTAG (IEEE1149.7)。有关所使用器件支持的模式,请参阅器件的技术参考手册。

    • 4-pin cJTAG 选项会打开另外两个选项:

      • The Converter 1149.7 Frequency Source:调整 cJTAG 操作的时钟源和类型。
      • The Target Pin Width:调整目标硬件的总线宽度。
    • 2-pin cJTAG 选项会打开另外四个选项:

      • The Converter 1149.7 Frequency Source:调整时钟源。
      • The Converter 1149.7 Frequency Value:调整时钟频率。
      • The Target Pin Width:调整目标硬件的总线宽度。
    • Target Scan Format:配置 cJTAG 模块的工作模式。

7.5.9.4.XDS 560v2 ProTrace

_images/ccs_debug-protrace_advoptions.png
  • Board Data File:CCS 需要使用一个小型文本文件来正确表征调试探针以及连接到探针的电路板或器件。该选项控制此文件的生成。除非在非常特殊的情况下,否则将该选项的值保留为 auto generate

  • Emulator I/O Port Number:针对“必须使用哪个绑定到主机的调试探针”进行配置。每个 I/O 端口都是动态分配的,并按照调试探针插入主机的顺序进行设置。

    • 选择 User Defined Port Number 选项后,系统会打开另一个选项 Enter a User Defined Port Number,从而能够键入大于 3 的端口号。
  • JTAG TCLK Frequency (MHz):将 JTAG TCLK 频率设置为 AdaptiveFixed with specified valueTCLK looped-back with user specified limit

    • 最后两个选项会启用 Choose a value 选项,该选项允许在 SlowTypicalFast(最大为 6.5MHz)之间进行选择。
  • TMS/TDO Output Timing:调整 TMS 信号的工作模式以允许更快但兼容性较差的工作模式。

  • The JTAG nTRST Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以允许在 TRST 信号开关时对特殊边界扫描模式进行采样。有关所使用器件支持的模式,请参阅器件的技术参考手册。

  • The Power On-Reset Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以便在加电时对特殊器件引导模式进行采样。有关详细信息,请阅读器件的技术参考手册。

  • The Boot-Mode Pin Map:设置每个 EMU0 和 EMU1 引脚的功能,对这些引脚提供有限的 GPIO 控制以设置模式和硬件功能(如果目标板被路由这样做)。

  • The JTAG Signals Isolation Upon Disconnect:设置 CCS 调试会话与目标器件/板断开连接后调试探针的行为:Do not isolate JTAG signals when last client disconnectsIsolate JTAG signals when last client disconnects

  • The cJTAG Converter Features:配置要使用的信令类型:4 引脚 JTAG (IEEE1149.1)、4 引脚 cJTAG (IEEE1149.7) 或 2 引脚 cJTAG (IEEE1149.7)。有关所使用器件支持的模式,请参阅器件的技术参考手册。

    • 4-pin cJTAG 选项会打开另外两个选项:

      • The Converter 1149.7 Frequency Source:调整 cJTAG 操作的时钟源和类型。
      • The Target Pin Width:调整目标硬件的总线宽度。
    • 2-pin cJTAG 选项会打开另外四个选项:

      • The Converter 1149.7 Frequency Source:调整时钟源。
      • The Converter 1149.7 Frequency Value:调整时钟频率。
      • The Target Pin Width:调整目标硬件的总线宽度。
    • Target Scan Format:配置 cJTAG 模块的工作模式。

7.5.9.5.XDS100v2 和 XDS100v3

_images/ccs_debug-xds100v2_advoptions.png _images/ccs_debug-xds100v3_advoptions.png
  • Board Data File:CCS 需要使用一个小型文本文件来正确表征调试探针以及连接到探针的电路板或器件。该选项控制此文件的生成。除非在非常特殊的情况下,否则将该选项的值保留为 auto generate

  • Debug Probe Selection:如果有一个或多个调试探针连接到主机,则通知 CCS。该配置具有选项 Only one XDS100 installedSelect by serial number

    • 选择 Select by serial number 选项后,系统会打开另一个选项 Enter the serial number,从而允许键入要使用的调试探针的序列号。
  • The JTAG nTRST Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以允许在 TRST 信号开关时对特殊边界扫描模式进行采样。有关所使用器件支持的模式,请参阅器件的技术参考手册。

  • The Power On-Reset Boot-Mode:设置 EMU0 和 EMU1 引脚的状态,以便在加电时对特殊器件引导模式进行采样。有关详细信息,请阅读器件的技术参考手册。

  • JTAG TCLK Frequency (MHz):将 JTAG TCLK 频率设置为以下值之一:

    • Fixed default 1.0MHz frequency:以 1.0MHz 的固定频率进行连接。
    • Adaptive with user specified limit:使用自适应时钟(使用传递到 Enter a value 选项的用户所定义的 TCLK 值)进行连接。
    • Fixed with user specified faster value:调试探针尝试以用户定义的值(传递到 Enter a value 选项)所定义的速度进行连接。如果连接不可靠,那么调试器会在很小的范围内减小 TCLK 速度以实现可靠连接。
    • Fixed with user specified slower value:调试探针尝试以用户定义的值(传递到 Enter a value 选项)所定义的速度进行连接。如果连接不可靠,那么调试器会在很小的范围内增大 TCLK 速度以实现可靠连接。

XDS100v3 添加了以下选项:

  • The JTAG Signals Isolation Upon Disconnect:设置 CCS 调试会话与目标器件/板断开连接后调试探针的行为:Do not isolate JTAG signals when last client disconnectsIsolate JTAG signals when last client disconnects

  • The Converter Usage:配置要使用的信令类型:4 引脚 JTAG (IEEE1149.1)、4 引脚 cJTAG (IEEE1149.7) 或 2 引脚 cJTAG (IEEE1149.7)。有关所使用器件支持的模式,请参阅器件的技术参考手册。

    • 2-pin cJTAG 选项会打开另外三个选项:

      • The Converter 1149.7 Frequency:调整 cJTAG 转换器的时钟源。
      • The Debug Probe 1149.1 Frequency:调整 4 引脚 JTAG/cJTAG 的时钟频率。
    • Target Scan Format:配置 cJTAG 模块的工作模式。