arm双线程和两个dsp建立MessageQ失败问题 - AM57x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3242|回复: 6

[未解决] arm双线程和两个dsp建立MessageQ失败问题

[复制链接]

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2019-8-5 13:58:54 | 显示全部楼层 |阅读模式
问题描述如下:
1,arm上起两个线程,分别自己创建消息队列(MessageQ_create)
2、2个dsp上用MessageQ_create创建消息队列(dsp创建了之后就MessageQ_get等待)。
3、完了之后arm上的线程1打开dsp1的消息队列,线程2打开dsp2的消息队列(MessageQ_open)。



4、arm两个线程代码一样的,只有建立消息的名称不一样:(日志如下:)
这是arm自己MessageQ_create的日志
线程1:MessageQ_create(HOST1:MsgQ:01 ok
线程2:MessageQ_create(HOST2:MsgQ:01 ok
红色是arm自己创建的队列名称 arm线程创建队列成功
4、dsp的代码也一样,只是消息队列标识不一样,日志如下:
Server: MessageQ_create(DSP1:MsgQ:01) OK
Server: MessageQ_create(DSP2:MsgQ:01) OK
红色为dsp创建的队列名称  dsp创建成功
5、arm中线程1去open dsp1的对垒,线程2去open  dsp2的队列,日志如下:
DEBUG [2018-07-06 06:46:24:590][1602][ARM_MessageQInit][arm.c:52]open remote MessageQ(DSP1:MsgQ:01)
DEBUG [2018-07-06 06:46:24:591][1603][ARM_MessageQInit][arm.c:52]open remote MessageQ(DSP2:MsgQ:01)

代码我仔细对比了没有问题,但是只有线程1能打开dsp1的队列,线程2去打开dsp2的队列(open remote MessageQ(DSP2:MsgQ:01))一直失败。这种2个线程去分别连接两个dsp的消息队列,有什么要设置的吗?您那边需要看我这边的什么信息告诉我,我粘上来。
回复

使用道具 举报

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2019-8-5 15:13:12 | 显示全部楼层
贴上关键代码:
dsp2:
MessageQ_Params_init(&msgqParams);
    sprintf(msgqName,"%s:%s",v_pDspName, App_MsgQueName);
    Log_print1(Diags_INFO,"MessageQ_create(%s) begin\n", msgqName);
    v_pModule->slaveQue = MessageQ_create(msgqName, &msgqParams);
说明:v_pDspName=“DSP2”
        #define App_MsgQueName                 "MsgQ:01"


arm线程2:
sprintf(msgqName, "%s:%s",v_pDspName, App_MsgQueName);
    do {
        status = MessageQ_open(msgqName, &v_pModule->slaveQue);
        LOG_Debug("open remote MessageQ(%s)", msgqName);
        sleep(1);
    } while (status == MessageQ_E_NOTFOUND);
说明: v_pDspName=“DSP2”
          #define App_MsgQueName                 "MsgQ:01"

arm始终在(status == MessageQ_E_NOTFOUND)里面循环open
回复 支持 反对

使用道具 举报

36

主题

526

帖子

7568

积分

创龙

Rank: 8Rank: 8

积分
7568
发表于 2019-8-6 08:55:16 | 显示全部楼层
您好,
  目前没有相关案例可供您参考,建议先排查一下attach的连接是否成功
回复 支持 反对

使用道具 举报

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2019-8-6 09:46:03 | 显示全部楼层
attach的连接是什么?这个请稍微描述详细点,我对这个确实不熟,代码中我没搜到attach语句。谢谢
回复 支持 反对

使用道具 举报

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2019-8-6 10:42:34 | 显示全部楼层
找到了,估计你说的是Ipc_attach函数,我正在试。
回复 支持 反对

使用道具 举报

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2019-8-6 11:58:26 | 显示全部楼层
试了,搞不定。Ipc_attach只有dsp-to-dsp那个例子用了,要调用Ipc_attach,之前必须调用Ipc_start,我在两个dsp中调用Ipc_start都会返回失败。
回复 支持 反对

使用道具 举报

36

主题

526

帖子

7568

积分

创龙

Rank: 8Rank: 8

积分
7568
发表于 2019-8-6 18:40:33 | 显示全部楼层
您好,
  ARM是可以访问两个DSP处理器的, 您可以参考tl-messageq-gpmc-edma案例修改版,联系技术支持获取资料参考。假如是双线程只是调用了MessageQ_open,应该与此案例差不多。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-28 18:36 , Processed in 0.041166 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表