DSP_基于TMS320F28377D双核芯片和CCS7.40的编程入门

这篇具有很好参考价值的文章主要介绍了DSP_基于TMS320F28377D双核芯片和CCS7.40的编程入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开始之前明确一个东西裸机程序和RTOS程序的差别:参考下面三个连接瞅瞅

 

​​​​​​理解实时操作系统与裸机的区别-----Free RTOS 简介_书中倦客的博客-CSDN博客_裸机操作系统

裸机与RTOS的理解和并发带来的问题-电子发烧友网 (elecfans.com)

​​​​​​类似于STM32之类的单片机,RTOS比裸机真有那么大优势? (baidu.com)

总得来说呢,就是RTOS会损失部分DSP的运算效率,建议还是开发裸机程序吧。

DSP_基于TMS320F28335和CCS7.2的编程入门_heqiunong的博客-CSDN博客

在上一篇关于DSP的文章中,我们讲到了TMS320F28335芯片的编程入门,这款芯片是单核的,而本文涉及的TMS320F28377D是多核的。那么单核和多核编程直接是啥区别呢?对于TMS320F28377D,我感觉网上的资料不多,而且之前从来没有多核编程的经验,回想当初,我还是有些许的害怕的,其实掌握了还是很简单的,下面记录一下单核到多核的摸索之路。不要慌,循序渐进即可。

1. 仅用28377D的CPU1实现“单核”+ 在线模式(RAM)

在线模式程序烧写到RAM里运行,CPU1和CPU2的启停都受到仿真器的控制,断电重启后上次运行的程序会丢失,需要重新烧写。需要注意的重点是cmd文件要选对,因为是烧写到RAM,因此选择2837xD_RAM_lnk_cpu1.cmd。另外由于我们用的是裸机程序而非RTOS,因此还需要选择F2837xD_Headers_nonBIOS_cpu1.cmd。

DSP_基于TMS320F28335和CCS7.2的编程入门_heqiunong的博客-CSDN博客,前面我们讲过建议去TI官网去下载controlSUITE软件,所提及的cmd文件和各种源文件 库文件这个软件都能够提供。

下面详细介绍从打开CCS到把CPU1运行起来。 (warning:大量无情截图,毫无感情可言)

ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

/*
 * main.c
 *
 *  Created on: 2021年11月16日
 *      Author: Heqiunong
 */

#include "F28x_Project.h"

void main(void)
{

   InitSysCtrl();
   DINT;
   InitPieCtrl();

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();

   EALLOW;
   GpioCtrlRegs.GPDPUD.bit.GPIO111  = 0;
   GpioCtrlRegs.GPDMUX1.bit.GPIO111 = 0;    // GPIO111 = GPIO111
   GpioCtrlRegs.GPDDIR.bit.GPIO111  = 1;    // GPIO111 = output
   EDIS;


    while(1){
        GpioDataRegs.GPDSET.bit.GPIO111 = 1;
        DELAY_US(1000000);
        GpioDataRegs.GPDCLEAR.bit.GPIO111 = 1;
        DELAY_US(1000000);
    }

}

 ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP

ccs双核芯片下载,DSP,DSP ccs双核芯片下载,DSP,DSP

 2. 仅用28377D的CPU1实现“单核”+ 离线模式(FLASH)

 离线模式指用把程序烧写到Flash里运行,断电重启后,程序仍可正常运行。在线模式下,CPU1和CPU2的启动和停止都受仿真器控制。离线模式下,CPU2的启动受CPU1控制

首先,代码需要做一个拷贝 memcpy。【注意:以下操作有效的前提是代码框架是按第一步那样搭建的

ccs双核芯片下载,DSP,DSP

其次,cmd文件需要换一个

ccs双核芯片下载,DSP,DSP

 编译上传后,断电,把仿真器拔掉,再上电。 程序依然正常运行,可以改变呼吸灯的频率简单验证程序是否离线运行正常。

3. CPU1 + CPU2 实现“双核”+ 在线模式(RAM)

为了验证双核的程序,基于双核实现不同频率的呼吸灯。TMS320F28377D的双核CPU1和CPU2,是近乎可视为各自独立的,从某种程度上,你可以把它视为两块单核的dsp来用。如果想要跑双核的程序,需要给CPU1和CPU2分别建一个工程。

3.1 CPU1和CPU2分别各建一个工程

首先需要说明的是CPU1和CPU2都需要设置一个 Predefined Symbols, CPU1就设置个CPU1,CPU2就设置个CPU2。 前文我们是在源文件里面#define CPU1。现在是我们换了一种更official的方法。

ccs双核芯片下载,DSP,DSP

3.2 CPU1CPU2虽近乎独立,但它们应是主从关系

3.2.1 比如CPU2是无法配置GPIO的,它只能CPU1来配置

下面是CPU2的代码,里面尝试配置GPIO的上拉,复用和输出方向

ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

因此GPIO的配置,则必须放在CPU1的工程里面。 我们的程序配置只需要配置两个连LED灯的GPIO MUX功能为GPIO,方向配置成输出。

3.2.2 另外还有一个证据说明CPU1 CPU2是主从关系

CPU1能够使用官方提供的所有source文件,而CPU2却有部分source文件是不支持的。如下图所示。

ccs双核芯片下载,DSP,DSP

 把图中出现问题,带有小红×的.c源文件删除,CPU2的工程即可正常编译。

3.3CMD文件的选择

CPU1工程

ccs双核芯片下载,DSP,DSP

CPU2工程

ccs双核芯片下载,DSP,DSP

3.4 仿真时,工程启动顺序(很关键) 

首先用CPU1的工程来连接,并且把CPU1和CPU2两个都勾选上。 这特别关键,必须选对,它只给你选一次的机会,后面就不让你选了。我真的找了好久的接口,会的朋友可以教教我

ccs双核芯片下载,DSP,DSP

然后,就会出现下图的情况

ccs双核芯片下载,DSP,DSP

我们发现, 此时CPU2上目前加载的是CPU1工程的代码,因此我们需要替换成CPU2本身的代码,所以需要重新load。

ccs双核芯片下载,DSP,DSP ccs双核芯片下载,DSP,DSP

好,现在CPU1是跑的是CPU1工程的程序,CPU2跑的CPU2程序。 现在还需要注意的是 先跑CPU1的程序,再跑CPU2的程序。

ccs双核芯片下载,DSP,DSP ccs双核芯片下载,DSP,DSP

 这样,就是双核在线模式的主要流程了

另外还有一个段代码需要注意

GPIO_SetupPinMux(111, GPIO_MUX_CPU2, 0);

这句话的意思应该是说,CPIO111复用给CPU2,里面各种指针满天飞,主要是设置偏移地址。

没这句话, CPU2里面对GPIO置位和清零操作是不起作用的。

4. CPU1 + CPU2 实现“双核”+ 离线模式(FLASH)

代码还是用双核在线模式的代码为基础,主要看一下怎么烧写到FLASH里面。

4.1 CMD文件的选择

CPU1工程的CMD

ccs双核芯片下载,DSP,DSP

CPU2工程的CMD

ccs双核芯片下载,DSP,DSP

4.2 代码需要注意的地方

CPU1工程添加两个预定义宏, CPU2工程需要添加一个预定义宏

ccs双核芯片下载,DSP,DSP

 ccs双核芯片下载,DSP,DSP

 强烈建议用上述方式去配置。

为什么呢? 因为你直接在main.c里面配置的话,包含InitSysCtrl的这个文件找不到_FLASH这个宏。

ccs双核芯片下载,DSP,DSP

 这个灰色的块,意思就是_FLASH没有被定义。

我尝试写一个main.h文件,把宏定义放在那里面。同时,Include Options把main.h的路径添加进去,但是还是找不到。

ccs双核芯片下载,DSP,DSP

但在F2837xD_SysCtrl.c文件里面#include "main.h"就可以,后面再酌情优化一下吧。

以下是关键代码:

CPU1里的

#include "F2837xD_Ipc_drivers.h"
#ifdef _STANDALONE
#ifdef _FLASH
    //
    //  Send boot command to allow the CPU02 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH); 这行会被执行
#else
    //
    //  Send boot command to allow the CPU02 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
#endif
#endif

CPU2工程里的

#ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    InitFlash();
#endif

烧写和在线模式一样, CPU1工程启动绿色小爬虫, 然后再把CPU2的程序换成已编译好的CPU2工程的.out文件。

值得注意的是,这种模式无法在线调试,加断点什么的。 拔掉仿真器,然后断电重启,就可以正常跑起来了。

那如果要在线调试呢? 可以把_STANDALONE的预定义去掉,就可以了。文章来源地址https://www.toymoban.com/news/detail-640477.html

到了这里,关于DSP_基于TMS320F28377D双核芯片和CCS7.40的编程入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DSP_TMS320F28377D_算法加速方法1_拷贝程序到RAM运行

    TI C2000系列的DSP芯片算力有限,用于来控制有时候常会出现控制程序无法实现实时运行的情况,因此从本文开始,将陆续推出几篇DSP算法加速的方法 此方法只需要添加 一行代码 和 一个预定义 ,即可达到算法整体加速的目的。先声明本文是讲的是TMS320F28377D,其他C2000系列芯片

    2024年02月10日
    浏览(65)
  • DSP_TMS320F28377D_算法加速方法2_添加浮点运算快速补充库rts2800_fpu32_fast_supplement.lib

    继上一篇博客DSP_TMS320F28377D_算法加速方法1_拷贝程序到RAM运行_江湖上都叫我秋博的博客-CSDN博客之后,本文讲第二种DSP算法加速的方法,该方法的加速效果很明显,但是加速范围仅限于32位浮点数下面这几种函数: 下面稍微解释一下一些可能有疑问的点 1 电机控制中经常对同一

    2024年02月10日
    浏览(38)
  • TMS320F28374S之X-BAR

    X-BAR可翻译为 交叉开关 或者 交换总线 ,在DSP中有四种 X-BAR,分别是: Input X-BAR、 Output X-BAR、 CLB X-BAR 和 ePWM X-BAR。Input X-BAR可以将外部信号传输到CPU内部,Output X-BAR则可以将内部信号传输到外部GPIO端口。CLB X-BAR 和ePWM X-BAR将内部信号传输到CLB和 ePWM模块。 Input X-BAR用于将信号从

    2024年02月13日
    浏览(38)
  • 【轮式平衡机器人】——TMS320F28069片内外设之ePWM

    声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 脉冲宽度调制(PWM)是一种对模拟信号进行数字编码的方法,硬件原理是根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现 开关 稳压电源输出晶体管 或 晶体管导通时间的 改变。 一个重要

    2024年03月11日
    浏览(51)
  • 【TES600】基于XC7K325T与TMS320C6678的通用信号处理平台

    板卡概述         TES600是一款基于FPGA+DSP协同处理架构的通用高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为主处理单元,采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为协处理单元,具有1个FMC子卡接口,具有4路SFP+万兆光纤接口,具有2路

    2024年02月06日
    浏览(45)
  • 基带信号处理设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

    基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板          综合图像处理硬件平台包括图像信号处理板2块,视频处理板1块,主控板1块,电源板1块,VPX背板1块。 一、板卡概述          图像信号处理板包括2片TI 多核DSP处理器-TMS320C6678,1片Xilinx FPGA XC7K420T-

    2024年03月15日
    浏览(63)
  • 图像信号处理板设计原理图:2-基于6U VPX的双TMS320C6678+Xilinx FPGA K7 XC7K420T的图像信号处理板

             综合图像处理硬件平台包括图像信号处理板2块,视频处理板1块,主控板1块,电源板1块,VPX背板1块。 一、板卡概述          图像信号处理板包括2片TI 多核DSP处理器-TMS320C6678,1片Xilinx FPGA XC7K420T-1FFG1156,1片Xilinx FPGA XC3S200AN。实现四路千兆以太网输出,两路

    2024年02月04日
    浏览(59)
  • 11.TMS320C5509V+Win10+CCS8开发环境搭建

    众所周知,相较于TMS320F28335,TMS320C5509V属于较老的平台,在新版本的CCS版本上支持一直是一个问题。 最基本的问题便是,无法新建基础工程。各开发版厂商提供的例程无法在CCS8上使用,只支持CCS3.3环境,但是由于目前Win7、Win10等系统均不再支持CCS3.3,所以只能折腾虚拟机来

    2024年02月07日
    浏览(49)
  • 车规级芯片之 MCU、MPU、DSP、FPGA、SOC

            随着处理器技术的不断发展, CPU (Central Processing Unit)的发展逐渐出现三种分支,分别是 MCU (Micro Controller Unit,微控制器单元) 和 MPU (Micro Processor Unit,微处理器单元)和 DSP (Digital Signal Processing/Processor)数字信号处理器。         MCU在应用中比较常见的就是ST的

    2024年02月02日
    浏览(48)
  • NTP8835(30W内置DSP双通道D类音频功放芯片)

    数字功放是一种具有失真小、噪音低、动态范围大等特点的音频功率放大器;由工采网代理的韩国耐福旗下NTP系列专业功率放大器是ClassD功放的一个新里程碑。 NTP8835是一款高性能、高保真功率驱动集成全数字音频放大器,工作电压范围:7V~28V;包含 2 CH立体声(30W x 2 BTL @2

    2023年04月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包