如何测试程序在DSP上的运行时间?

如何测试程序在DSP上的运行时间?,第1张

然后在profiler菜单中选择Enable Clock和view clock,在view clock窗口中可以看到程序运行的时间/周期(时钟)数。在view clock窗口中第2行显示的时间就是程序从第1行所在位置到第2行位置的时间,也就是你要测定的时间。这是ti推荐的方法,但我发现数据不准确,比实际的要大。如果用profiler得到的数据比你的要求好要少的话,那就说明已经达到了要求,如果比你的大则比一定达不到要求。

用clock函数是可行的,尤其是优化以后的代码很难确定PROFILE的位置。你看一下.asm的输出就知道了,clock没有这个问题。有一点要注意,clock函数如果直接在DSP上跑时间是不准的,必须用load6x命令在DOS或命令行状态下加载,这样结果就准的多。当然,调用函数本身的开销也是要考虑的。

以下是DSP所在板卡上的串口与对应的上位机串口进行信息交互的程序,仅仅是最基本的框架,具体还得根据你的通信内容以及串口响应方式(中断或查询)进行进一步修改和补充。

感觉你是不是刚接触DSP,友情提示你一下:在CCS开发环境下,一个完整的DSP工程包括.c文件(主程序main,外设配置文件,内部中断初始化配置等),.h文件(头文件),lib文件(静态库文件),CMD文件(内存地址空间分配文件)。以上缺一不可,不明白的可以分别问问百度。

希望对你有所帮助。

#include "DSP28_Device.h"

unsigned int Sci_VarRx[100]

unsigned int i,j

unsigned int Send_Flag

void main(void)

{

/*初始化系统*/

InitSysCtrl()

/*关中断*/

DINT

IER = 0x0000

IFR = 0x0000

/*初始化PIE中断*/

InitPieCtrl()

/*初始化PIE中断矢量表*/

InitPieVectTable()

/*初始化SCIA寄存器*/

InitSci()

for(i = 0i <100i++)

{

Sci_VarRx[i] = 0

}

i = 0

j = 0

Send_Flag = 0

#if SCIA_INT

/*设置中断服务程序入口地址*/

EALLOW// This is needed to write to EALLOW protected registers

PieVectTable.TXAINT = &SCITXINTA_ISR

PieVectTable.RXAINT = &SCIRXINTA_ISR

EDIS // This is needed to disable write to EALLOW protected registers

/*开中断*/

IER |= M_INT9

#endif

EINT // Enable Global interrupt INTM

ERTM// Enable Global realtime interrupt DBGM

for()

{

if((SciaTx_Ready() == 1) &&(Send_Flag == 1))

{

SciaRegs.SCITXBUF = Sci_VarRx[i]

Send_Flag = 0

i++

if(i == j)

{

i = 0

j = 0

}

}

#if !SCIA_INT

if(SciaRx_Ready() == 1)

{

Sci_VarRx[j] = SciaRegs.SCIRXBUF.all

Send_Flag = 1

j++

if(j == 100)

{

j = 0

}

}

#endif

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11780496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存