导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]通道变量可用于两个以上的平行语句问题[liufengzhong]

 *第63780篇: [转帖]通道变量可用于两个以上的平行语句问题

  
楼 主:liufengzhong 2014年8月5日21:52
 [转帖]通道变量可用于两个以上的平行语句问题
我有一个DJ KIT板,代码如下:

int main(){
streaming chan c_mix_out;
streaming chan c_out;
par
{
 on stdcore[0]:
     {
      func1(c_mix_out);
     }
on stdcore[0]:
     {
      func2(c_mix_out);
     }
 
on stdcore[0]:
     {
      func3(c_mix_out);
     }
}
}

但是编译器说这个错误:`c_mix_out' used in more than two parallel statements;

所以我尝试指定c_mix_out到别的变量和想要用像下面:
指定 c_out    <:  c_mix_out ;

但是编译器说:incompatible types in output

有什么想法?我哪里错了?


回答:

通道用于在两个逻辑核间通信。你不能有相同的通道结束超过连个以上的逻辑核之间的连接。如果你需要从一个核心到多个逻辑核心的交流的信息,你需要有一个核心之间单独的通道。在超过两个逻辑核间你不能使用相同通道来连接,因为它违反并行使用规则。通过下面链接你会发现更多关于通道的信息: 


回复:

谢谢你的回答,但是怎么样在没个核之间拥有分别的通道?
你可以解释下代码吗?
谢谢你


回答:

考虑到使用一个三核系统,在那儿你必须传达相同的信息到其他两个核

void core1(chanend c1, chanend c2)
{
  unsigned data=0;
  while(1)
 {
    c1  <:data;
    c2  <:data;
    data ++;
  }
}
void core2(chanend c1)
{
  while(1)
 {
    c1:>  data;
    printint(data);
  }
}
 
void core3(chanend c2)
{
  while(1)
 {
    c2:>  data;
    printint(data);
  }
}
int main()
{
  chan c1,c2;
  par
  {
    core1(c1,c2);
    core2(c1);
    core3(c2);
  }
  return 0;
}
 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]有可能用相对于一个62.5 MHz外部时钟使用xCORE取样端口吗?

[下一篇主题]:[转帖]用于实现数字锁相环路的开发板?