用的板子是OMAP-L137,而且是新手,可参考的资料少,身边没有找到可以直接问的人,一直在论坛上真诚地提问,可能因为问题太外行,太水了,几乎无人问津,但是只能借助这条途径来搜寻有价值的帮助。
现在来描述我的问题。我定了3个TSK, 分别完成采集语音、处理语音、对结果编码发射的任务。在主函数里,
void main()
{
EVMOMAPL137_init( );
SCOM_init();
SCOM_create("SamplingToProcessing", NULL);
SCOM_create("ProcessingToSampling", NULL);
SCOM_create("SendingToProcessing", NULL);
SCOM_create("ProcessingToSending", NULL);
return;
}
在各个事件的函数模块里,都有打开、接收信息、发送信息的语句,形如
SCOM_Handle HSamplingToProcessing, HProcessingToSampling, HProcessingToSending, HSendingToProcessing;
ScomProcessingToSampling processing2sampling;
ScomProcessingToSending processing2sending;
ScomSamplingToProcessing *sampling2processing;
ScomSendingToProcessing *sending2processing;
CIS_Init(); // 语音处理算法初始化
// 打开要使用的消息队列
HProcessingToSampling = SCOM_open("ProcessingToSampling");
HProcessingToSending = SCOM_open("ProcessingToSending");
HSamplingToProcessing = SCOM_open("SamplingToProcessing");
HSendingToProcessing = SCOM_open("SendingToProcessing");
for(;;)
{
// 接收来自语音采集任务的消息
sampling2processing = SCOM_getMsg(HSamplingToProcessing, SYS_FOREVER);
sending2processing = SCOM_getMsg(HSendingToProcessing, SYS_FOREVER);
// 取出原始语音的指针
InBuff = sampling2processing->inbuff;
// 处理单帧语音
ProcessingSingleFrame(InBuff, Ay);
// 将刺激幅度参数通过消息传给参数帧发送任务
processing2sending.ay = Ay;
// 处理完毕,向语音采集任务发送消息
SCOM_putMsg(HProcessingToSampling, &processing2sampling);
// 向参数帧发送任务发送消息
SCOM_putMsg(HProcessingToSending, &processing2sending);
}
}
我觉得逻辑上没问题啊,编译也通过,但是运行后,显示得是只有两个事件运行了,还不是并行的那种,可能是什么问题?或者,我应该有针对性地看些什么资料?真的是跪求了~