参考中断分享:
五.TMS320C6678多核程序的运行
1问:最近刚刚接触多核DSP,我想问下,在准备运行多核程序时,是需要将程序在每个核里面进行load吧?TI提供的多核运行例程有哪些,具体在MSDK下的哪个位置?另外对于API函数,在对其进行直接调用时,能否在不用SYS/BIOS的情况下,使用中断实现调用,例如uart通信,直接调用API函数实现查询式通信,能否添加中断函数,调用uart的API函数实现中断式通信?
答:程序用到哪个核就需要load到哪个核里边,在MCSDK的以下位置有多核运行的例程:demos\image_processing\ipc,不使用SYS/BIOS也可以使用API函数。
六.TMS320C6678系统设计中PCIECLK问题
1问:请问在设计基于TMS320C6678系统板时,如果不用PCIE模块,是不是可以悬空PCIECLKP和PCIECLKN引脚,还是是分别接高电平和低电平。
答:请参考Keystone硬件设计手册,PCIE不用时,PCIECLKP端接CVDD,N端接地,不可悬空。
七.TMS320C6678的定点运算与浮点运算
1问:看介绍,TMS320C6678是定点与浮点运算都支持的DSP芯片。现在自己编写的程序中,所使用的数据除了整型之外都是浮点数。想问一下,在运算浮点数的时候,DSP是否会将浮点数转为定点数,再进行运算,然后再转为浮点数?
答:1. 编译器会根据客户定义的数据类型来调用相关的汇编指令来进行运算,如果直接定义的是浮点数,那么编译器就调用浮点数进行运算。
2. 对于浮点和定点的选择,如果算法是从matlab或vc继承过来的,那么前期直接用浮点数进行运算可以很容易的将算法在DSP上实现,如果后期算法成熟了,可以进行定点化,提高运行效率。
2问:c6678的两个网口是如何同时使用的, 能不能多个cpu core 同时使用同一个网口, 请赐教。
答:C6678的EMAC是cppi器件,即通过Navigator进行包的管理,所以收发的数据包都是Queue来管理,可以同时使用;需要注意的是可以配置每个发送的包由指定的port发出,或者向两个port广播。
八.TMS320C6678 系统如何获得CPU
1问:我们目前在使用DSP做一个算法处理服务器,客户端通过TCP网络,按照网络协议将需要处理的数据发送给DSP服务器,DSP接到数据后进行运算,运算结束后将运算结果,再发送给客户端。
现在的现象是,当客户端连续发送多个数据请求时,发送到中间某一个时网络会中断,当前算法特点是,由于运算最较大,运算时间比较长,暂未进行优化,比如30s,50s,我们现在就是希望能让程序正常运行,完成我们的算法要求,下一步工作再进行优化,但是现在这个中断的问题让我们比较头疼,请专家指教。
经过多次试验,最后我将我们的算法注掉,换成了下面代码,网络是正常的,不会中断。
void Test(指定时间间隔)
{
获取系统当前时间1
while(1)
{
获取系统当前时间2
if(时间2-时间1 >= 指定时间间隔)
return;
}
}
我又将我们的算法换成了下面代码,网络很快就会中断。
void Test()
{
while(...)
{
for(...)
{
纯算法,加减剩除,专门用来耗时。
}
}
}
答:因为你在DSP上没有跑RTOS操作系统,而你的代码是一段无限的死循环,因此CPU的Cycle都消耗在你的算法代码里了(即PC指针一直在里面,没有出来)。
在跑RTOS操作系统的情况下,任务按照优先级来进行运行,如果网络属于更高优先级任务,那么即使算法在持续运行,调度器也会切换到网络任务,并优先运行,网络也就不会断了。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-36760-2.html
爱你一生不后悔
啊