LAUNCHXL-F28379D用户手册[参考译文]与点灯
此文章仅在优快云发布,链接:https://blog.youkuaiyun.com/weixin_42772106/article/details/144726622
摘要:对于英文水平堪忧的人群第一次接触DSP开发板和CCS开发套件时,难免出现这样那样的问题。本文对LAUNCHXL-F28379D官方用户手册《F2837xD Firmware Development Package User’s Guide》进行了简要中文翻译,并结合自己理解加以注释,以供广大相关初学者参考学习。本文99%内容都是机器翻译,不保证翻译内容与原文内容的一致性。
本文关键词:DSP 用户手册 CCS F28379D 点灯
参考链接:
[1] 优快云博客-LAUNCHXL-F28379D点灯
[3] 优快云博客-DSP相关笔记_1:LaunchXL-F28379D的简单教程系列(一)GPIO输出
开发环境
环境说明 | 详细信息 | 备注 |
---|---|---|
操作系统 | Win10_x64 | |
CCS | 12.2.0.00009 | 官方网站 |
controlSUITE | 3.4.9 | 官方网站 |
C2000Ware | 4.03.00.00 | 官方网站 |
F28379D | TMS320F28379D | 官方网站 |
前言
本文对《F2837xD Firmware Development Package User’s Guide》进行简要中文翻译,英文原版封面如下图所示,获取方法参考链接[1]。
建议结合参考链接[1]学习。
——以下是译文
——
2 Getting Started and Troubleshooting(入门和故障排除)
2.1 Introduction(引言)
由于F2837xD设备的复杂性,新用户在首次启动设备时遇到困难的情况并不少见。本指南旨在为用户提供如何从头开始创建和调试项目的分步指南。本指南的重点是 F2837xD 控制卡的用户,但这些想法同样适用于其他电路板,只需进行少量转换。
2.2 Project Creation(项目创建)
典型的F2837xD应用程序由两个独立的CCS项目组成:一个用于CPU1,一个用于CPU2。这两个项目是完全独立的,就CCS而言,它们之间没有真正的联系。
CPU 1子系统项目创建
-
在 CCS 主窗口中选择文件 -> 新建 -> CCS 项目。为项目命名并选择存放位置。单击 “完成”,您的项目就创建完成了。
-
在成功构建项目之前,我们需要设置一些特定于构建的设置。右键单击项目并选择Properties。查看处理器选项并确保它们与下图匹配。
- 在C2000编译器项中查找并选择Include Options。单击添加目录图标,将目录添加到搜索路径中。单击“文件系统”按钮,浏览到controlSUITE安装的F2837xD_common\include文件夹。单击“确定”添加此路径,并重复此过程添加F2837xD_headers\include目录
- 展开“Advanced Options”(高级选项)并查找“Predefined Symbols”(预定义符号)项。添加一个名为“CPU1”的预定义名称。这确保了该CPU的头文件构建正确。如果使用Launchpad,还可以添加一个名为“_LAUNCHXL_F28379D”的预定义名称。这是设置正确的设备时钟所必需的。
博主所使用版本的CCS的“Predefined Symbols”项不在“Advanced Options”标签里,而是在“Advanced Options”标签上面
-
单击C2000 Linker -> File Search Path。将这些目录添加到搜索路径中:F2837xD_common\cmd和F2837xD_headers\cmd。然后,您还需要添加以下文件:rts2800_fpu32.lib,28X7x_RAM_lnk_cpu1.cmd和F2837xD_Headers_nonBIOS_cpu1.cmd。最后,删除libc.a,我们将使用rts2800_fpu32.lib作为我们的运行时支持库。
-
单击C2000 Linker->Advanced Options->Symbol Management。将程序入口点指定为code_start。保存关闭构建属性。
参考链接[1]中使用的程序入口点指定为_c_int00,而非code_start
参考链接[1]提到:还需要在General中把Linker command file改为< none >,否则后面编译的时候会报错,因为第5步include command的时候已经将cmd文件包含进去了。
- 接下来,我们需要链接头文件使用的几个文件。为此,请右键单击工作区中的项目并选择Add Files…, 导航至 F2837xD_headers\source 目录,然后选择 F2837xD_GlobalVariableDefs.c。选择文件后,您可以选择将文件复制到项目中或链接它。我们建议您将这样的文件链接到项目,因为您可能不会修改这些文件。
还需要链接以下文件
F2837xD_common\source\F2837xD_CodeStartBranch.asm
F2837xD_common\source\F2837xD_usDelay.asm
F2837xD_common\source\F2837xD_SysCtrl.c
F2837xD_common\source\F2837xD_Gpio.c
F2837xD_common\source\F2837xD_Ipc.c
此时,您的项目工作区应该如下所示:
- 通过右键单击项目并选择New -> File来创建一个新文件。将此文件命名为main.c,并将以下代码复制到其中:
#include "F28x_Project.h"
void main(void)
{
uint32_t delay = 0;
InitSysCtrl();
// Set pin direction
EALLOW;
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;
EDIS;
GPIO_SetupPinOptions(34, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(34, GPIO_MUX_CPU2, 0);
// turn off BLUE LED
GpioDataRegs.GPADAT.bit.GPIO31 = 1;
while(1)
{
delay++;
if (delay > 2000000)
delay = 0;
if (delay > 1000000)
GpioDataRegs.GPADAT.bit.GPIO31 = 0; // Turn on BLUE LED
if (delay < 1000000)
GpioDataRegs.GPADAT.bit.GPIO31 = 1; // Turn off BLUE LED
}
}
原文档中,main.c文件的GPIO10和GPIO14在LAUNCHXL中对应76和74引脚,这里改成了GPIO31和GPIO34,分别对应着LAUNCHXL上的蓝灯和红灯。该代码点灯逻辑与原文档不同,但是功能相同。
- 保存main.c,然后尝试通过右键单击并选择Build project来构建项目。后续项目构建完成后,在F2837xD设备上调试该项目,当代码运行时,可以看到GPIO 31切换,对应蓝灯以一定频率闪烁。
CPU 2子系统项目创建
-
在 CCS 主窗口中选择文件 -> 新建 -> CCS 项目。为项目命名并选择存放位置。单击 “完成”,您的项目就创建完成了。
-
在成功构建项目之前,我们需要设置一些特定于构建的设置。右键单击项目并选择Properties。查看处理器选项并确保它们与下图匹配。
-
在C2000编译器项中查找并选择Include Options。单击添加目录图标,将目录添加到搜索路径中。单击“文件系统”按钮,浏览到controlSUITE安装的F2837xD_common\include文件夹。单击“确定”添加此路径,并重复此过程添加F2837xD_headers\include目录
-
展开“Advanced Options”(高级选项)并查找“Predefined Symbols”(预定义符号)项。添加一个名为“CPU2”的预定义名称。这确保了该CPU的头文件构建正确。如果使用Launchpad,还可以添加一个名为“_LAUNCHXL_F28379D”的预定义名称。这是设置正确的设备时钟所必需的。
-
单击C2000 Linker -> File Search Path。将这些目录添加到搜索路径中:F2837xD_common\cmd和F2837xD_headers\cmd。然后,您还需要添加以下文件:rts2800_fpu32.lib,28X7x_RAM_lnk_cpu2.cmd和F2837xD_Headers_nonBIOS_cpu2.cmd。最后,删除libc.a,我们将使用rts2800_fpu32.lib作为我们的运行时支持库。
-
单击C2000 Linker->Advanced Options->Symbol Management。将程序入口点指定为code_start。保存关闭构建属性。
同CPU1,参考链接[1]中使用的程序入口点指定为_c_int00
与CPU1类似:还需要在General中把Linker command file改为< none >。
- 接下来,我们需要链接头文件使用的几个文件。为此,请右键单击工作区中的项目并选择Add Files…, 导航至 F2837xD_headers\source 目录,然后选择 F2837xD_GlobalVariableDefs.c。选择文件后,您可以选择将文件复制到项目中或链接它。我们建议您将这样的文件链接到项目,因为您可能不会修改这些文件。
共需要链接以下文件
F2837xD_headers\source\F2837xD_GlobalVariableDefs.c
F2837xD_common\source\F2837xD_CodeStartBranch.asm
F2837xD_common\source\F2837xD_usDelay.asm
F2837xD_common\source\F2837xD_SysCtrl.c
F2837xD_common\source\F2837xD_Gpio.c
F2837xD_common\source\F2837xD_Ipc.c
此时,您的项目工作区应该如下所示:
- 通过右键单击项目并选择New -> File来创建一个新文件。将此文件命名为main.c,并将以下代码复制到其中:
#include "F28x_Project.h"
void main(void)
{
uint32_t delay;
// turn off RED LED
GpioDataRegs.GPBDAT.bit.GPIO34 = 1;
while(1)
{
delay++;
if (delay > 2000000)
delay = 0;
if (delay > 1000000)
GpioDataRegs.GPBDAT.bit.GPIO34 = 0; // Turn on RED LED
if (delay < 1000000)
GpioDataRegs.GPBDAT.bit.GPIO34 = 1; // Turn off RED LED
}
}
将原文档中的GPIO14改成了GPIO34,对应着LAUNCHXL上的红灯。该代码点灯逻辑与原文档不同,但是功能相同。
- 保存 main.c,然后尝试右键单击并选择Build project来构建项目。如果项目已构建,请尝试在 F2837xD 设备上同时调试这两个项目,否则请仔细检查错误和上述步骤,以确定可能出错的地方。
2.3 Debugging Dual Core Applications(调试双核应用程序)
- 确保CCS5已经安装并且是最新的。您应该有C2000代码生成工具版本6.2.0或更高版本。
- 将 USB Mini 数据线从计算机连接到控制卡左侧的 USB 端口。Windows 将枚举并尝试安装驱动程序。只要安装了 CCS,Windows 就会自动查找并安装模拟器的驱动程序。
- 通过USB或扩展坞上的5V DC输入插孔供电。虽然板上的仿真器由主机的USB端口供电,但主板的其余部分不是。原因是F2837xD控制卡上的JTAG连接完全电气隔离。由于这些设备将用于的典型应用,因此有必要隔离JTAG连接。不过,对于台式调试和评估(低电压),电路板的两半可以由同一电源(即 USB)供电。每个电源域有一个相关的电源指示灯,可用于确保每个域都有电源。
- 启动CCS并选择要在其中调试的工作区。
- 创建一个新的目标配置。单击File -> New -> Target Configuration File,并适当命名文件(如 F2837xD_xds100.ccxml)。从下拉列表中选择要使用的仿真器(XDS100v2),然后选择板上存在的设备变体(F2837xD controlCARD具有F2837xD)。保存目标配置并关闭窗口。
这里我新建了一个文件夹“User Defined”用于存放F2837xD_xds100.ccxml。
6. 导入所需的示例项目(如果使用的是在Project Creation部分中创建的项目,则跳过此步骤)。单击File -> Import,然后在CCS文件夹中选择Existing CCS/CCE Eclipse Projects,然后单击Next。选中“选择搜索目录”,浏览到controlSUITE安装的根目录。设备规格软件和示例存储在 device_support/device_variant 文件夹中。导航至 F2837xD -> F2837xD_examples_Dual 目录。单击OK, CCS将解析此目录中的所有项目。将您希望运行的任何项目导入工作区。不要选择“Copy projects into workspace”,这些项目相对地链接到外部资源,因此将它们从controlSUITE中取出会破坏项目。
注意,博主所用版本的CCS的导入示例项目步骤与原文档中不同,单击File -> Import -> C/C++ -> CCS Projects
- 构建每个示例项目。右键单击每个(blinky_dc_cpu01和blinky_dc_cpu02)项目标题并选择Build Project。
- 启动之前创建的Target Configurations(目标配置)。单击View -> Target Configurations。在打开的窗口中,找到之前创建的目标配置,右键单击并选择Launch Selected Configuration(启动所选配置) 。
参考链接[1]提到:这里还需要链接到刚刚构建的两个项目,然后再选择选择Launch Selected Configuration。
- 连接到设备。右键点击调试窗口中的每个内核(CPU1和CPU2),选择Connect Target。这将把 CCS 连接到设备,并允许您加载代码和调试应用程序。
- 在每个内核上加载代码。在调试窗口中选择其中一个内核,然后单击Load-> Load Program。此时会出现一个对话框,允许您选择要加载的程序。要确保在适当的核心上加载了适当的.out文件。对另一个核心重复此过程,选择它并遵循相同的步骤。
- 此时,两个核心都应该加载了代码,并在main处停止。此时,用户就可以使用 CCS 调试代码了。请记住,您在 CCS 中进行的任何操作都只会对您当前在调试窗口中选择的内核产生影响。例如,如果选择CPU 1,内存窗口将显示CPU 1所看到的系统的内存映射。如果选择CPU 2,则情况正好相反。
到此,配置基本已经结束了,选择CPU1,点击绿色的运行按钮
就可以看见开发板上的蓝灯在闪。点击黄色的暂停按钮
,闪烁停止。
可以对CPU2进行相同的操作,则红灯闪烁。
2.4 Troubleshooting (故障排除)
在第一次启动调试会话时,有许多事情可能会给用户带来麻烦。本节将尝试为Delfino设备遇到的最常见问题提供解决方案。
- “当我导入示例项目时,出现 managed make error ”。
当导入一个没有代码生成工具的项目时,就会出现这种情况。请确保您至少拥有 6.2.0 版本的 C2000 代码生成工具。 - “无法构建示例项目”。
造成这种情况的原因是链接的资源不在项目期望的位置。例如,如果您导入项目并选择 “Copy projects to workspace”(将项目复制到工作区),项目将无法继续构建,因为它们引用的文件不是工作区的一部分。请始终直接在 controlSUITE 目录树中构建和运行示例。 - “我的 F2837xD 设备不在目标配置选择列表中”
可用于调试的设备列表是根据许多因素确定的,包括主机系统上可用的驱动程序和工具链。如果您的系统以前只用于在以前的C2000设备上进行开发,则可能没有所需的CCS设备文件。在CCS中,点击“帮助,检查更新”并按照对话框更新CCS安装。 - “我无法连接到目标”
造成这种情况的原因通常是目标配置不正确,或者只是仿真器的物理连接断开了。如果无法连接到目标,请检查以下事项:
1.确保目标配置对于您的设备是正确的。
2.确保仿真器同时插入计算机和要调试的设备。
3.确保目标设备处于上电状态。 - “我无法加载代码”
这通常是由于 GEL 脚本中的错误或代码链接不当造成的。如果在加载代码时遇到问题,请检查链接器命令文件和映射,确保它们与设备内存映射相匹配。如果它们看起来正确,则可能是 GEL 脚本出了问题。 - “内核收到中断时会报错”
确保中断向量表位于中断控制器认为的位置。在两个内核上,中断向量表可以映射到RAM或flash。请确保您的向量表位于中断控制器认为的位置。 - “当 CPU1 启动时,它还没有从复位中恢复”
F2837xD 器件支持多种启动模式,其中有几种模式允许通过器件的多个串行外设之一将程序代码加载到 RAM 中并从 RAM 中执行。如果启动模式引脚在上电时处于错误状态,可能会在连接调试器之前意外进入其中一种外设启动模式。这将使芯片处于不干净状态,并可能对多个外设以及中断向量表进行设置。如果出现奇怪的行为,请检查是否选择了 “Boot to Flash”或 “Boot to RAM”启动模式。
F2837xD设备支持几种引导模式,其中几种模式允许通过设备的许多串行外设之一将程序代码加载到RAM中并从RAM中执行。如果启动模式引脚在上电时处于错误状态,则可能在调试器连接之前意外地进入这些外设启动模式之一。这使得芯片处于不干净状态,可能会配置几个外设以及设置中断向量表。如果您看到奇怪的行为检查,以确保“启动到Flash”或“启动到RAM”启动模式被选中。 - “我正在使用 Launchpad,但设备时钟不正确”
与 controlCARD 相比,Launchpad 的振荡器速度不同。在Poject’s properties -> Advanced Options -> Predefined Symbols中添加预设名称“_LAUNCHXL_F28379D”。
以上是针对RAM调试,掉电之后程序就没有了。
参考链接[1]指出,要想将程序保留在开发板内,需要将代码烧写到flash里(RAM和flash的区别参考链接[2]),只需要将第5步中搜索的ram.cmd文件换成对应的flash.cmd文件即可。
博主经过尝试,并不是只改一个文件就能实现。后续博主将更新此方面的内容。
未完待续