C2000 Getting Started with Code Composer Studio v4/zh

From Texas Instruments Wiki
Jump to: navigation, search

简介

因为 Code Composer Studio v4.0 (CCSv4) 现在是基于 Eclipse 3.2 IDE 开源软件框架的新版本,所以与所有旧版 C2000 Collateral 所基于的 Code Composer Studio v3.x (CCSv3.x) 相比,两者之间存在多处差异。本 Wiki 页面详细介绍了如何将 C2000 Collateral 从 CCSv3.x 迁移到 CCSv4,并帮助用户开始使用他们的第一个 CCSv4.0 程序。

有关所有通用的、非 C2000 特有的 CCSv4 主题,或有关 CCSv4 的进一步详细信息,请访问 Code Composer Studio Wiki 网站:

启动 CCSv4

选择工作区

首次启动 CCSv4 时,将显示一个对话框,提示您选择工作区。该工作区是一个文件夹,用于保存特定个人计算机的所有 CCSv4 自定义设置。这些自定义设置中包括关闭 CCSv4 时的所有项目设置、宏和视图。例如,如果关闭 CCSv4 时您正同时处理多个项目,开着多个内存窗口和图形窗口,而且正在使用着多个监视变量,则当您重新打开 CCSV4 时,将显示与关闭前相同的项目和设置。

1 workspace launcher.jpg

关闭 CCSv4 时,工作区将自动保存。如果不希望覆盖当前工作区的设置,则可以通过转至以下菜单选项打开或切换到新的工作区:“File -> Switch Workspac(文件 -> 切换工作区)”。

请注意,在 CCSv4 中,工作区不可移植,因为工作区中包含您个人计算机系统的特定数据。所以,您不能保存一个工作区,进行压缩,然后再发送给另一位用户。

在 CCSv4 中运行第一个 C2000 项目

打开“C2833x/2823x C/C++ Header Files and Peripheral Examples”(v1.30 或更高版本)附带的 CCSv4 cpu_timer 项目

  • 转至“Project -> Import Existing CCS/CCE Eclipse Project(项目 -> 导入现有 CCS/CCE Eclipse 项目)”。


2 import existing.jpg


  • 单击“Select root directory:(选择根目录:)”旁边的“Browse(浏览)”按钮,浏览到“<header file base>/DSP2833x_examples_ccsv4/cpu_timer”目录文件夹,然后选择“OK(确定)”。请确保已在“Projects:(项目:)”文本框中选中“Example_2833xCpuTimer”。请勿选中“Copy projects into workspace(将项目复制到工作区)”复选框。单击“Finish(完成)”按钮。


3 import ccsv4 existing.jpg


  • 您现在位于 C/C++ 透视视图中,项目文件将显示在“C/C++ Projects(C/C++ 项目)”窗口中。
    • 在 Binaries 下 - 建立项目后,项目的 .out 文件位于此处。
    • 在 Includes 下 - 生成选项所引用的 Include 指令的所有目录都在此处列出。展开目录将列出这些目录中所有的 .h 和 .inc 文件,项目可能会也可能不会使用这些文件。
    • 在 Debug 下 - 所有调试文件(包括 .map 和 .obj 文件)都位于此处。
    • 之后将列出所有源文件。如果有任意源文件包含函数、include 文件或结构,选择位于源文件旁边的“+”号,将列出该文件中包含的所有函数、include 文件和结构名称。双击函数名,将转到在源代码中定义函数、include 文件和结构的位置。


4 example projectview.jpg


为设备仿真设置目标配置选项

  • 在当前示例中,要设置仿真器目标配置,请转至“Target -> New Target Configuration(目标 -> 新建目标配置)”。
  • 请键入目标配置文件的名称,该文件的后缀为“.ccxml”。选中“Use default location(使用默认位置)”复选框,然后选择“Finish(完成)”。

5 target configuration.jpg


  • 在显示的窗口中,通过“Connection(连接)”下拉列表选择仿真器,然后在“Device(设备)”列表中选择设备。在本示例中,已经选中“Spectrum Digital XDS510USB Emulator(光谱数字 XDS510USB 模拟器)”和“TMS320F28335”设备复选框。


6 basic target config setup.jpg


  • 然后,转至“File -> Save(文件 -> 保存)”。
  • 现在,转至“View -> Target Configuration(查看 -> 目标配置)”。
  • 在“User-Defined”下,将显示新的目标配置 .ccxml 文件,右键单击该文件。
    • 选择“Link File to Project -> Example_2833xCpuTimer(将文件链接到项目 -> Example_2833xCpuTimer”,将在工作区中的特定项目始终使用该目标配置。
    • 或者,选择“Set as Default(设置为默认值)”(该默认设置适用于:希望以后在所有工作区中打开的未指定目标配置的项目都默认使用此仿真器和设备 GEL 文件)。

7 link target config.jpg


生成和加载项目

  • 要构建项目,请首先连接到目标,将所有活动项目一次性全部加载到目标中,然后单击工具栏上的绿色昆虫图样按钮,即“Debug(调试)”。接着跳过下方的“重置 CPU”步骤。


8 debug toolbar.jpg


  • 要构建项目,但不自动连接目标并将活动项目对象代码加载到设备,请转至“Project -> Build Active Project(项目 -> 建立活动项目)”。


9 build active project.jpg


  • 然后,选择工具栏上绿色昆虫图样按钮旁边的向下箭头,然后选择“Launch TI Debugger(启动 TI 调试程序)”,此时将位于“Debug(调试)”透视视图中。


10 launch debugger.jpg


  • 转至“Target -> Connect Target(目标 -> 连接目标)”,连接到目标设备。


11 connect target.jpg


  • 转至“Target -> Load Program(目标 -> 加载程序)”,然后浏览到“Example_2833xCpuTimer.out”(位于“/cpu_timer/Debug”目录中)。

重置 CPU

依次选择“Target -> Reset -> Reset CPU(目标 -> 重置 -> 重置 CPU)”,重置设备。要重新启动程序,请依次选择“Target -> Restart(目标 -> 重新启动)”。

将监视变量添加到监视窗口

  • 如果“Example_2833xCpuTimer.c”尚未打开,请在屏幕的右上角,单击 C/C++ 小图标,切换回“C/C++”透视视图,然后打开源文件。此时,单击屏幕右上角绿色昆虫图样旁边的“Debug(调试)”小图标,切换回“Debug(调试)”透视视图。


12 debug perspective.jpg


  • 在“Example_2833xCpuTimer.c”中,在位于文件顶部的注释中向下滚动,直到到达“Watch Variables(监视变量)”。突出显示“CpuTimer0.InterruptCount”,单击右键,然后选择“Add Watch Expression(添加监视表达式)”。之后,请依次对“CpuTimer1.InterruptCount”和“CpuTimer2.InterruptCount”重复执行上述步骤。现在,这些变量将显示在监视窗口中。


13 add watch exp.jpg


启用实时模式以在监视变量发生变化时进行监视

  • 转至“Tools -> Debugger Options(工具 -> 调试程序选项)”。在打开的窗口中,向下滚动到“Realtime Options(实时选项)”,然后选择“Enable silicon real-time mode (service critical interrupts when halted, allow debugger accesses while running)(启用硅片实时模式(停止时关键服务中断,允许调试程序在运行时访问))”。如果弹出一个对话框,询问是否允许实时切换,请选择“Yes(是)”。

14 realtime options.jpg


  • 在监视窗口的右上角,单击白色向下箭头,然后选择“Customize Continuous Refresh Interval…(自定义持续刷新时间间隔…)”。将持续刷新时间间隔更改为“1”(秒),替换默认值“5”(秒)。

15 cont refresh interval.jpg

  • 在监视窗口的右上角,单击暂停符号上以环形旋转的黄色箭头图标,启用持续刷新模式,让系统在程序运行时持续刷新监视变量。

16 refresh icon.jpg

运行程序

  • 选择工具栏上的绿色箭头图标,或者转至“Target -> Run(目标 -> 运行)”。

17 run icon.jpg

  • 观察位于监视窗口中的变量在 CPU 定时器中断时每秒增加一次。

18 example watchwindow.jpg

  • 祝贺您!您刚刚在 CCSV4 中运行完第一个 C2000 项目!


将 C2000 项目从 CCSv3.3 迁移到 CCSv4

使用 Code Composer Studio v4,用户可以将项目从 CCSv3.3 迁移到 CCSv4,而且用户可根据需要一次迁移一个或多个项目。通过这种方式,如果在一个目录中存在多个需要从 CCSv3.x 迁移到 CCSv4 的项目,则可以轻松地一次性迁移所有项目。

要开始迁移进程,请转至“Project -> Import Legacy CCSv3.3 Project(项目 -> 导入旧版 CCSv3.3 项目)”,打开“Project Migration Wizard(项目迁移向导)”。

19 migrate project.jpg

将一个项目从 CCSv3.3 迁移到 CCSv4

  • 在“Project Wizard(项目向导)”中,选择“Select Project:(选择项目:)”单选按钮,然后浏览到要迁移的 CCSv3.3 .pjt 项目文件。在下图中,已选中 Example_2833xCpuTimer.pjt 文件。然后单击“Next(下一步)”按钮。

20 select pjt migrate.jpg

  • 下一步,请选择构建所选项目所需的“Code Generation Tool(代码生成工具)”的版本。

21 migrate codegentools.jpg

  • 如果旧版项目中包含对 DSP/BIOS 的引用,则请将其删除,即使项目并不使用 DSP/BIOS,也请执行此项操作(有关详细信息,请参阅 CN_C2000 Getting Started with Code Composer Studio v4#应用 DSP BIOS 导致源文件缺失)。此时,下方的屏幕将不会在迁移期间显示。如果要使用 DSP/BIOS,则请选择适用于项目的 DSP/BIOS 工具版本。默认条件下,虽然 C2000 示例不使用 DSP/BIOS,但由于 .PJT 文件中包含一个对“DspBiosBuilder”的空引用,迁移向导将选择默认的 DSP/BIOS 工具版本。单击“Next(下一步)”按钮。

22 migrate dspbios.jpg

  • 取消选中“Use common root for all migrated projects(对所有已迁移项目使用公共根目录)”,使 CCS 自动确定项目所引用的所有文件的唯一公共根目录,然后单击“Finish(完成)”。(有关为项目迁移和已生成的 macros.ini 文件定义“公用根目录”的详细信息,请参阅 CCSv4 中针对 C2000 的可移植项目)。

23 singleproject commonroot.jpg

  • 祝贺您!您已经将一个 CCSv3.x 项目成功迁移到 CCSv4。您现在可以从项目文件夹中删除所有文件,但下列文件除外:
  1. .cdtproject
  2. .cdtbuild
  3. .project
  4. 项目目录中的所有源文件和头文件(.c、.asm、.h、.inc、.cmd、.lib 等)

无需保存 CCSv3.3 .pjt 文件。


将多个项目同时从 CCSv3.3 迁移到 CCSv4

  • 在“Project Wizard(项目向导)”中,选择“Select search-directory:(选择搜索目录:)”单选按钮,然后浏览到要迁移的所有或部分 CCSv3.3 项目文件夹所在的目录。在下图中,选择的目录为:“C:/tidcs/c28/DSP2833x/v130/DSP2833x_examples/”。迁移向导随后将搜索所选目录下的所有旧版项目,而且这些项目也会显示在“Discovered Legacy Projects:(发现的旧版项目:)”框中。选中要迁移的项目,然后单击“Next(下一步)”按钮。
  • 下一步,选择构建所选项目所需的“Code Generation Tools(代码生成工具版本)”(与单个项目迁移相同)。
  • 如果旧版项目中包含对 DSP/BIOS 的引用,则请选择适用于项目的 DSP/BIOS 工具版本。默认情况下,虽然 C2000 示例不使用 DSP/BIOS,但由于 .PJT 文件中包含一个对“DspBiosBuilder”的空引用,迁移向导将选择默认的 DSP/BIOS 工具版本,单击“Next(下一步)”按钮。(与单个项目迁移相同)

Migrate multiple pjts.jpg

  • 下一步,选择构建所选项目所需的“Code Generation Tools(代码生成工具)”版本(与单个项目迁移相同)。
  • 如果旧版项目中包含对 DSP/BIOS 的引用,则请选择适用于项目的 DSP/BIOS 工具版本。默认情况下,虽然 C2000 示例不使用 DSP/BIOS,但由于 .PJT 文件中包含一个对“DspBiosBuilder”的空引用,迁移向导将选择默认的 DSP/BIOS 工具版本,单击“Next(下一步)”按钮。(与单个项目迁移相同)
  • 在“Set Advanced Options(设置高级选项)”窗口中,选中“Use a common root for all migrated projects(对所有迁移项目使用公用根目录)”复选框。对于包含多个项目且其文件共享公用根目录的情况,请选中此复选框。

Multiple pjts common root.jpg

例如,下图显示了要迁移项目的目录文件结构。此示例中,要迁移的所有项目都位于“DSP2833x_examples”目录中的单独文件夹中。所有这些项目在 DSP2833x_common 和 DSP2833x_headers 目录下包含公用头文件、源文件和库,这两个目录又位于“v130”根目录下。

Directory structure.jpg

因为所有迁移项目都使用“C:/tidcs/c28/DSP2833x/v130”根目录下的公用文件,所以指定的“路径”应为“C:/tidcs/c28/DSP2833x/v130”。同时也请选择一个唯一的“路径变量名”,代替键入整个路径的宏/替换名称。在此示例中,选择的是“INSTALLROOT_2833X_V130”。

注:在指定工作区中,对某个特定路径只能定义一次路径变量名/宏。也就是说,不能将同一工作区中不同路径下的另一项目再次定义为“INSTALLROOT_2833X_V130”。而必须定义不同的路径变量/宏。您可以在下一页面中更加详细地了解从用户到用户,或从个人计算机到个人计算机传输项目时有关宏及其无用情况的信息:Portable Projects in CCSv4 for C2000(CCSv4 中针对 C2000 的可移植项目)

完成后,单击“Finish(完成)”按钮。

  • 祝贺您!您已经将多个 CCSv3.x 项目迁移到 CCSv4。现在您可以从项目文件夹中删除所有文件,但是下列文件除外:
  1. .cdtproject
  2. .cdtbuild
  3. .project
  4. 项目目录中的所有源文件和头文件(.c、.asm、.h、.inc、.cmd、.lib 等)

无需保存任何 CCSv3.3 .pjt 文件。

已知迁移问题

“No rule to make target(不存在创建目标的规则)”错误

某些导入项目可能会发生以下生成错误:

C:\Program Files\Texas Instruments\ccsv4\utils\gmake\gmake -k all

C:\Program Files\Texas Instruments\ccsv4\utils\gmake\gmake: *** No rule to make target `myFile.obj', needed by `myApp.out'.

...

在这种情况下,右键单击出错的项目,然后从菜单中选择“Build Properties(生成属性)”。在“C2000 Compiler -> Directory Specifier:(C2000 编译器 -> 目录指定器:)”下,检查“Object file directory (default is .)(--obj_directory, -fr)(对象文件目录(默认值为 .)(--obj_directory, -fr))”的内容。如果该目录与“Temporary file directory(临时文件目录)”或“Assembly file directory(程序集文件目录)”的内容相同(即“<path>/Debug”),则会出现错误。

可通过以下方式解决此问题:

  1. 将此路径更改为任何其他位置。
  2. 删除框中的内容。
图 15:生成属性 - 对象文件目录

应用 DSP BIOS 导致源文件缺失

默认情况下,CCStudio v4.0.0 的微控制器核(代码大小受限)版本自发布到市场(2009 年 7 月 20 日发布)起,不再支持 DSP/BIOS。

问题如下:

  1. 如果使用的是 CCStudio v4.0 的微控制器核(代码大小受限)版本,而且迁移的项目在 .pjt 文件的顶部存在对 Tool="DspBiosBuilder" 的引用,则系统将显示一个屏幕,标题为“Select DSP/BIOS Tools(选择 DSP/BIOS 工具)”,还将在 0.0.0 的“Tool Version(工具版本)”旁显示您的示例名称。项目看上去已经完成迁移,但是所有源文件都尚未正确链接到项目,所以项目构建将失败。
  2. 如果使用的是 CCStudio V4.0 的完整铂金版本,则项目将迁移成功,并且迁移工具将使用已随 CCStudio v4.0 安装的 DSP/BIOS 的任意版本自动填写 DSP/BIOS 工具版本。项目也会成功构建。但是:如果您将 CCSv4 项目发送到使用 CCStudio v4.0 的微控制器核版本的任何用户,他们将不能构建项目。

如果您的 .PJT 文件中存在以下文本:Tool="DspBiosBuilder",靠近 [Project Settings] 类别下的顶部:

  1. 删除此文本之后在 Code Composer Studio v4.x 中运行项目迁移工具,或者
  2. 将 DSP/BIOS 5.40 和 XDCtools/RTSC 下载到与您的 /ccsv4/ 文件夹相同的目录(默认路径 C:/Program Files/Texas Instruments/),然后重新启动 CCSv4。下载链接为:在此处下载 DSP/BIOS 和 XDCtools/RTSC。

注:此问题将在通过自动通知补丁下载发行给 Code Composer Studio v4.0.0 用户的 Code Composer Studio v4.0.1 中予以解决。届时 Code Composer Studio 的微控制器核(代码大小受限)版本将不再有与包含对 DspBiosBuilde 工具引用的 CCSv3.3 项目有关的迁移问题。

使用 F281x 设备的“hello world”项目出错

尝试通过“Code Composer Studio v4 入门”生成通用的“hello world”模板项目,同时将任意 281x(2812、2811、2810)设备设置为目标处理器的用户,可能会遇到以下错误:

"../2812_RAM_lnk.cmd", line 86: error: placement fails for object ".text", size

0x182a (page 0).Available ranges:

PRAMH0 size: 0xffe unused: 0xf89 max hole: 0xf89

error: errors encountered during linking; "Test.out" not built

这是因为在“hello world”项目中使用的“printf”命令占用了 2812 设备上无法获得的大量内存。281x 链接器命令文件 2812_RAM_lnk.cmd 在默认情况下并不为了支持“printf”命令而为代码 (.text) 定义足够多的内存。

要在 2812 上开始,用户应从 2812 C/C++ 头文件和外围设备示例软件包中的 CCSv4 外围设备示例开始。根据本 Wiki 网页上用于 2833x 设备的相同说明,“CPU 定时器”项目是良好的入门级“首个项目”。

CCSv4 中针对 C2000 的可移植项目(宏/链接的变量等)

参阅:Portable Projects in CCSv4 for C2000)CCSv4 中针对 C2000 的可移植项目)

目标配置:设备目标和仿真设置

使用 Code Composer Studio v3.3,要为某个目标配置设备仿真设置,用户必须打开独立于 Code Composer Studio IDE 的 Setup CCStudio v3.3 实用程序,为 CCStudio 选择正确的仿真器和设备 GEL 文件。这就要求用户在每次目标或仿真器改变时关闭 CCStudio IDE 并运行设置实用程序。

Code Composer Studio v4 本身在 CCSv4 IDE 内含有仿真器目标配置。用户可以针对一般用途或特定项目为不同的仿真器和设备设置指定不同的目标配置。

要查看您计算机上的现有目标配置,请执行下列操作:

  1. 转至“View -> Target Configurations(查看 -> 目标配置)”。
  2. 所创建的所有目标配置都将位于“User Defined(用户定义)”下。

Target configurations view.jpg

要新建目标配置(必须完成此步骤之后才能在所有设备上进行操作),请执行以下操作:

  1. 转至“Target -> New Target Configuration(目标 -> 新建目标配置)”或在“Target Configurations(目标配置)”窗口中单击“新建”图标(窗口顶部工具栏中最左边的图标):Target config new icon.jpg
  2. 为您的目标配置选择一个文件名(例如 F28335_XDS510USB.ccxml,如果您正在使用 F28335 设备和 XDS510USB 仿真器的话)。
  3. 然后选中“Use shared location(使用共享位置)”复选框以将新的目标配置保存到您的个人计算机中的默认位置,CCSv4 在其中寻找目标配置文件,或者取消选中该复选框并选择一个项目,将目标配置文件关联到工作区中的某个项目。
  4. 单击“Finish(完成)”按钮并按照出现的“Cheat Sheet(速查表)”上的说明选择您的“Connection(连接)”(仿真器)和“Device(设备)”。

C28x 闪存编程

CCSv4 对 CCSv3.3 的一项改进是闪存编程器插件现在内建于 CCSv4 中。当调试针对闪存配置了源代码和命令链接器文件的项目时,不再需要仅加载符号,然后单独使用闪存编程器插件将代码写到闪存中。取而代之的是,只要加载正确的设备目标配置,如果 CCSv4 通过您项目中的命令链接器文件检测到闪存中有代码,在加载程序时,它会自动将相应代码写入闪存。

要在 CCSv4 中设置闪存编程设置并将程序写入闪存,请执行下列操作:

  1. 首先确保已经为您的设备正确设置了您的目标配置。
  2. 转至“Target -> Launch TI Debugger(目标 -> 启动 TI 调试程序)”
  3. 在“Debug(调试)”视图中,转至“Tools -> On-chip Flash(工具 -> 片上闪存)”
  4. 配置闪存设置 – 也可以在此处擦除闪存。
  5. 然后,可以:单击“Debug(调试)”昆虫图标,或转至“Target -> Debug Active Project(目标 -> 调试活动项目)”,或转至“Target -> Load program(目标 -> 加载程序)”并选择要编程的 .out 文件。CCSv4 IDE 将自动编程或将代码加载到闪存和/或 RAM 中相应的存储位置,类似于基于 RAM 的项目代码自动加载到 RAM 的方式。


Flash options.jpg


注:与 CCSv3.3 一样,源代码和链接器命令文件仍然需要预先针对闪存选项进行配置(有关如何操作的说明,请参阅安装包中 /docs 文件夹内的设备特定 C/C++ 头文件和外围设备示例快速入门自述文件)。

有关使用 CCSv4 针对 28x 进行闪存编程的更多信息,请访问 Code Composer Studio v4 Wiki 网页链接:Flash_Programming_F28x

C2000 GEL 文件迁移

来自 CCSv3.3 的设备 GEL 文件仍然能够用于 CCSv4.0。不再支持用于处理项目(即生成项目)的调用以及用于向监视窗口添加变量的“WatchAdd()”函数。GEL 热菜单项目现在出现在“Scripts(脚本)”下拉菜单中。

有关 GEL 文件的更多信息,包括如何加载 GEL 以及哪些 GEL 函数仍受支持,请访问 CCSv4 GEL Wiki 网页:GEL

设备 GEL 中的寄存器 WatchAdd() 由“View -> Registers(查看 -> 寄存器)”替换

C2000 设备 GEL 文件包括用于所有外围设备寄存器的“WatchAdd()”函数,允许用户在不使用 TI 提供的 C/C++ 头文件时将任何外围设备的寄存器快速添加到 CCSv3 中的监视窗口。因为 WatchAdd() 函数在 CCSV4 中不再有效,现在可以通过“Registers(寄存器)”窗口使用外围设备寄存器,该窗口可从“View -> Registers(查看 -> 寄存器)”访问。如果在调试时使用 TI 提供的 C/C++ 头文件(可从 TI 网站的设备产品文件夹下载),在头文件中定义的寄存器结构也可以如以前一样添加到监视窗口。展开这些寄存器结构可访问单独的位字段(例如将“AdcRegs”添加到监视窗口将显示全部 ADC 寄存器以及它们的位字段扩展)。

使用 CCSv4 为 C28x 设备启用函数分析

要使用 CCSv4 为 C28x 设备启用 HW 函数分析,请执行下列操作:

  • 浏览到 <INSTALL DIR>\ccsv4\DebugServer\bin\win32\SerializedProfileActivities
  • 在文本编辑器中打开“ProfileFunctionsHW.prof_ini”
  • 在 ISA 列表下,将“TMS320C28”添加到列表
  • 保存文件并重新启动 CCSv4
  • “ProfileFunctionsHW.prof_ini”现在会类似如下:

[Name]
Profile all Functions for CPU Cycles
[Events]
dataclass.pcdt.events.Cycles
dataclass.pcdt.events.CPU Cycles
dataclass.pcdt.events.cycle.Total
[EventClasses]
pcdt
[ISA]
TMS320C28
TMS320C56
TMS320C55
TMS320C621x
TMS320C641x
TMS320C671x
TMS470R1
TMS470R2
TMS470R3
TMS470Rd
TMS470Re

HW 函数分析是基于断点执行的,因此,在可用断点数量有限的情况下(如闪存等持久存储器中的代码),并不推荐此方法。

请注意,针对 C28x 的函数分析并不正式支持(未经测试)。