TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6678 系统如何获得CPU

我们目前在使用DSP做一个算法处理服务器,客户端通过TCP网络,按照网络协议将需要处理的数据发送给DSP服务器,DSP接到数据后进行运算,运算结束后将运算结果,再发送给客户端。

现在的现象是,当客户端连续发送多个数据请求时,发送到中间某一个时网络会中断,当前算法特点是,由于运算最较大,运算时间比较长,暂未进行优化,比如30s,50s,我们现在就是希望能让程序正常运行,完成我们的算法要求,下一步工作再进行优化,但是现在这个中断的问题让我们比较头疼,请专家指教。

经过多次试验,最后我将我们的算法注掉,换成了下面代码,网络是正常的,不会中断。

void Test(指定时间间隔)

{

    获取系统当前时间1

    while(1)

    {

         获取系统当前时间2

         if(时间2-时间1 >= 指定时间间隔)

             return;

    }

}

我又将我们的算法换成了下面代码,网络很快就会中断。

void Test()

{

     while(…)

    {

         for(…)

        {

             纯算法,加减剩除,专门用来耗时。

         }

    }

}

从上面的现象看,我们猜测,是由于算法占用CPU时间过长,系统无法获得CPU,没有时间处理网络相关信息,造成的,各位大侠有什么好办法,请多多回复。

yuanwen dong:

你好,

因为你在DSP上没有跑RTOS操作系统,而你的代码是一段无限的死循环,因此CPU的Cycle都消耗在你的算法代码里了(即PC指针一直在里面,没有出来)。

在跑RTOS操作系统的情况下,任务按照优先级来进行运行,如果网络属于更高优先级任务,那么即使算法在持续运行,调度器也会切换到网络任务,并优先运行,网络也就不会断了。

我们Enea是TI的白金合作伙伴,在6678上提供整套的商用平台软件解决方案,可以解决您的问题,有后续问题欢迎联系我 william.dong@enea.com

我们可以在C6678上提供全套的平台软件,包括操作系统、BSP驱动、中间件和开发工具。

OSEck RTOS 软件平台包括:? OSEck RTOS内核:o 稳定可靠,支持所有DSP,有20+年历史。o 专门针对C66x优化。没有内存碎片的内存管理。o 内存自动裁剪,统一的出错处理机制。o …….? BSP(驱动)源代码:优化高效的驱动,如RapidIO,Ethernet等。? LINX IPC: 支持分布式系统的IPC.o 使多核、多DSP、多板卡的编程好像单核编程一样。o 支持任何物理介质,如C66x多核之间(EDMA),多DSP之间(RapidIO),多板卡之间(RapidIO, Ethernet)。? TCP/IP协议? Package Flow 软件加速包? Optima开发优化工具:CPU,内存等性能优化工具。

Enea在DSP RTOS领域有近20年的开发、现场使用经验,针对复杂的C6678,从2010年起专门投入30多人的专家团队来支持优化6678软件平台,包括:? 内核、重写高性能驱动、分布式支持、网络加速、优化工具等,现在以及有30多个客户使用Enea针对6678的软件平台:1. 成熟、稳定、可靠、现场验证的,专门针对6678 DSP特别优化的OSEck RTOS。2. 成熟稳定的针对C6678的驱动程序,支持包括SRIO、以太网、PA、Multicore Navigator、MPAX、中断管理等。3. 跨核、跨DSP、跨板卡系统的透明传输模块LINX。

Best Regards

William

William.dong@enea.com

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678 系统如何获得CPU
分享到: 更多 (0)