小识堂 | DSP C2000 CLA调试技巧揭秘,不一样的干货 - 创龙福利社 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4727|回复: 0

[已解决] 小识堂 | DSP C2000 CLA调试技巧揭秘,不一样的干货

[复制链接]

61

主题

61

帖子

677

积分

创龙

Rank: 8Rank: 8

积分
677
发表于 2017-10-25 17:40:25 | 显示全部楼层 |阅读模式
DSP C2000 CLA调试技巧揭秘

        CLA是C2000系列芯片里面的一个协核,用户使用CLA使得并行处理任务成为可能,从而提高系统的实时性。
        用户在开发CLA的时候会遇到一些调试上的问题。因为,CLA跟CPU不同,CLA不支持在编译器CCS里使用时钟计时功能和编译器添加断点功能,那么当用户需要知道程序运行的系统时钟周期和用断点来DEBUG的时候,就需要手动来实现这些功能。这篇文章的着眼点就是阐述如何手动添加一些代码来实现以上功能。
首先,来看如何计算CLA任务的运行周期。
因为CLA不支持用编译器的CLOCK功能,所以我们可以采用系统自带的PWM模块来进行计数。这个方法的思路就:PWM的计数器的时钟可以配置为系统时钟。于是在任务的开始启动PWM,然后再任务结束的时候读取PWM的时基计数器的值。。代码如下:
__interrupt void Cla1Task1 ( void )
{
  //Local Variables
  float a;
  __mdebugstop();
  RESTART_CLOCK;
  a = 10;
  ...
  ...
  ...
  READ_CLOCK(ulCycleCount);
}
其中RESTART_CLOCK宏定义:
#define RESTART_CLOCK  __meallow();\
EPwm1Regs.TBCTL.bit.CTRMODE = TB_FREEZE;\
EPwm1Regs.TBCTR = 0;\  /*此处将计数器清0
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;\
__medis();
READ_CLOCK宏定义:
#define READ_CLOCK(X)           _meallow();\
                      EPwm1Regs.TBCTL.bit.CTRMODE = TB_FREEZE;\
  X = EPwm1Regs.TBCTR;\  /*此处读取将计数器的值
                      __medis();
       以上思路如所示的代码,不难看出从任务开头到结束的时候读取的ulCycleCount值就是任务运行的时钟周期,需要注意一点的是,执行这个操作的时候我们需要预先初始化PWM:
1.     将PWM的计数器时钟配置为系统时钟SYSCLKOUT。
2.     将计数模式设置为向上计数模式
初始化代码如下:
void InitEPwm(void)
{// Setup TBCLK
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
EPwm1Regs.TBPRD = 0xFFFF; // Set timer period
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
EPwm1Regs.TBCTR = 0x0000; // Clear counter
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;}

         那么概括来说,就是在MAIN函数中放入InitEPwm()函数,然后再CLA TASK中添加如上所说的代码,通过读取ulCycleCount即为CLA TASK任务运行的时钟周期。
        到这里,我们就来说明如何手动添加断点,从而使CLA任务暂停,让我们方便的DEBUG。
这个只需要简单的添加一行代码即可:
__mdebugstop()
        任务运行到此处代码会挂起仿真器,用户点击RUN按钮程序会继续运行(同仿真C28x的步骤,区别在于这里用一行代码来代替CCS编译器的添加断点功能)。
本文来源于:广州创龙 -李镕旷 原创
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 03:57 , Processed in 0.036749 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表