您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 技术讨论区 -> 如何在bf609上使用mcapi中的scalar通道进行... 
本帖共有1431个阅读者
发表帖子 发表投票 回复主题
如何在bf609上使用mcapi中的scalar通道进行双核间数据传输?
zfz5280(论坛新手)
zfz5280
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:140
积分:4
注册时间:2012/8/13
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
如何在bf609上使用mcapi中的scalar通道进行双核间数据传输?
本人现在使用bf609的ezkit,现想用mcapi中的scalar通道进行双核间数据传输,目前可以在两个核中分别创建数据和命令end point(end point create),并能从core0中读取core1中的end point(end point get),但不能讲两 end point 连接( mcapi_sclchan_connect_i),现贴上程序,请各高手指点。

// core 0 as gpp





#include <ccblkfn.h>



#include "adi_initialize.h"



#include <mcapi.h>



#include <stdio.h>



#include <stdlib.h> /* for malloc */



#include <string.h>





#define NUM_SIZES 4





#define DOMAIN 0



#define gpp_node 0



#define dsp_node 1





#define data_port 0



#define cmd_port 1









void main(void)



{





    adi_core_1_enable();





    mcapi_status_t
status;



    mcapi_request_t
request;



    mcapi_param_t
parms;



    mcapi_endpoint_t
data_ep,remote_data_ep,cmd_ep, remote_cmd_ep;









    mcapi_sclchan_send_hndl_t
s1;



    mcapi_sclchan_recv_hndl_t r1;







    mcapi_info_t
version;



    mcapi_node_attributes_t
node0_attributes;







    mcapi_node_init_attributes(&node0_attributes,
&status);





    /* create a
node */



    mcapi_initialize(DOMAIN,gpp_node,NULL,&parms,&version,&status);



    if (status !=
MCAPI_SUCCESS)



    {
printf("wrong");}



    printf("mcapi
initialized \n");



    /* create
endpoints */



    data_ep =
mcapi_endpoint_create(data_port,&status);



    if (status !=
MCAPI_SUCCESS) { printf("endpoint creat failure");}







    cmd_ep =
mcapi_endpoint_create(cmd_port,&status);



    if (status !=
MCAPI_SUCCESS) { printf("endpoint creat failure");}









    remote_data_ep
= mcapi_endpoint_get (DOMAIN,dsp_node,data_port,MCA_INFINITE,&status);



    if (status !=
MCAPI_SUCCESS) { printf("endpoint get failure");}





    //if (status
!= MCAPI_SUCCESS) { WRONG }



  
remote_cmd_ep = mcapi_endpoint_get
(DOMAIN,dsp_node,cmd_port,MCA_INFINITE,&status);



    if (status !=
MCAPI_SUCCESS) { printf("endpoint get failure");}









  
mcapi_sclchan_connect_i(data_ep,remote_data_ep,&request,&status);



    if (status !=
MCAPI_SUCCESS) { printf("endpoint connect failure");}









    mcapi_finalize(&status);







}





//core 1 as dsp




#include <mcapi.h>



//#include <mcapi_test.h>



#include <stdio.h>



#include <stdlib.h> /* for malloc */



#include <string.h>







#define NUM_SIZES 4





#define DOMAIN 0



#define gpp_node 0



#define dsp_node 1





#define data_port 0



#define cmd_port 1











int main(void)



{



    mcapi_status_t
status;



    mcapi_request_t
request;



    mcapi_param_t
parms;



    mcapi_info_t
version;



    mcapi_endpoint_t
data_get_ep,cmd_get_ep,data_recv_ep,cmd_recv_ep;



    mcapi_node_attributes_t
mcapi_node1_attributes;





    mcapi_node_init_attributes(&mcapi_node1_attributes,
&status);



    mcapi_initialize(DOMAIN,dsp_node,NULL,&parms,&version,&status);



    if (status !=
MCAPI_SUCCESS)



    {
printf("wrong");}



    printf("mcapi
initialized \n");



    int da=0;



    /* Initialize
managed drivers and/or services */



    data_recv_ep
= mcapi_endpoint_create(data_port, &status);



    if
(MCAPI_SUCCESS != status) {



           printf("endpoint creat
failure");



    }





    cmd_recv_ep =
mcapi_endpoint_create(cmd_port, &status);



        if
(MCAPI_SUCCESS != status) {



               printf("endpoint creat
failure");



        }







    data_get_ep =
mcapi_endpoint_get (DOMAIN,gpp_node,data_port,MCA_INFINITE,&status);



        if
(status != MCAPI_SUCCESS) { printf("endpoint get failure");}



                   //if
(status != MCAPI_SUCCESS) { WRONG }



    cmd_get_ep =
mcapi_endpoint_get (DOMAIN,gpp_node,cmd_port,MCA_INFINITE,&status);



        if
(status != MCAPI_SUCCESS) { printf("endpoint get failure");}





    //
mcapi_sclchan_connect_i(data_get_ep,data_ep,&request,&status);



          //    
if (status != MCAPI_SUCCESS) { printf("wrong\n");}



           //      
printf("get sclchan done \n");





         //
while(1);



    //return 0;



}




这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/2/25 6:48:04
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

没用过609,不知。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/3/4 12:27:59
alen(论坛新手)
alen
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:117
积分:3
注册时间:2013/4/10
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

这也是我现在在研究的问题,也在纠结这个问题。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/4/11 9:25:40
ai754012(论坛新手)
ai754012
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:256
积分:24
注册时间:2013/7/25
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
开始研究这个问题,先参看一下你的代码,希望可以一起探讨

虚心向学
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/28 11:33:16
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154191 Call, 1 Queries, Processed in 0.015625 second(s),