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

多线程编程中遇到的问题

用的板子是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);
 }

}

我觉得逻辑上没问题啊,编译也通过,但是运行后,显示得是只有两个事件运行了,还不是并行的那种,可能是什么问题?或者,我应该有针对性地看些什么资料?真的是跪求了~ 

Tony Tang:

这程序有点抽像,看不懂,ARM的还是DSP的?那些API是哪来的?

Shuo Zheng:

回复 Tony Tang:

我用的是OMAP-L137,这段程序是写在dsp部分的。我想完成的工作是采集语音、处理语音和编码发射。由于处理语音的连续性,所以这三部分需要并行操作。三个部分切换的流程图在附件里。

我的想法是设三个TSK,并利用消息队列进行通讯,以便在合适的时间进行切换。

首先,要利用dsp/bios的设置,编辑tcf文件,因为此处只能加一个附件,我先不传tcf的文件了。

由于后续还有一些信息,咱们这么联系一次信息量不能太大,所以我先发这些。看看您能不能理解我想要做的最基本的东西,有可能的话继续交流。

Denny%20Yang99373:

回复 Shuo Zheng:

会不会是逻辑上有问题,可以创建3个TSK,把里面动代码清掉,仅有while(1)循环打印,看看能不能跑起来

赞(0)
未经允许不得转载:TI中文支持网 » 多线程编程中遇到的问题
分享到: 更多 (0)