MessageQ_create失败的问题 - AM57x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2919|回复: 2

[未解决] MessageQ_create失败的问题

[复制链接]

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
发表于 2019-8-7 17:35:25 | 显示全部楼层 |阅读模式
你好,我这边出现 情况:
MessageQ_create有时候会一直失败,然后把板子重启,就能成功了。
请问,在不重启板子的情况下,怎么操作能让MessageQ_create成功?
回复

使用道具 举报

36

主题

526

帖子

7608

积分

创龙

Rank: 8Rank: 8

积分
7608
发表于 2019-8-8 13:56:26 | 显示全部楼层
您好,
1. 就目前信息,暂时分析不出重启对MessageQ_create成功率的影响。
2.建议您排查一下下图这些关键流程,查看是否是哪一步骤出问题了。

3.请问出现这个问题的概率是多少?


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

8

主题

26

帖子

96

积分

注册会员

Rank: 2

积分
96
 楼主| 发表于 2019-8-8 16:32:49 | 显示全部楼层
我的代码:
#define HOST1                    "HOST1"
#define HOST2                    "HOST2"
#define DSP1                     "DSP1"
#define DSP2                     "DSP2"
while ( OK != iRet )
    {
        iRet = ARM_MessageQInit(HOST2, DSP2, &Module);
        if ( OK != iRet )
        {
            LOG_Error("Thread2 ARM_MessageQInit(%s,%s) fail", HOST2, DSP2);
            continue;
        }
        break;
    }

int ARM_MessageQInit(char *v_HostName, char *v_pDspName, App_Module  *v_pModule)
{
    v_pModule->hostQue = NULL;
    v_pModule->slaveQue = MessageQ_INVALIDMESSAGEQ;
    v_pModule->heapId = App_MsgHeapId;
    v_pModule->msgSize = sizeof(App_Msg);

    MessageQ_Params     msgqParams;
    char                msgqName[32] = {0};
   
    MessageQ_Params_init(&msgqParams);
    sprintf(msgqName,"%s:%s",v_HostName, App_MsgQueName);
    //创建本地消息
    v_pModule->hostQue = MessageQ_create(msgqName, &msgqParams);
    if ( NULL == v_pModule->hostQue )
    {
        LOG_Error("MessageQ_create(%s) fail", msgqName);
        return FAILED;
    }
    LOG_Info("MessageQ_create(%s) ok", msgqName);
    //打开对端消息
    memset(&msgqName,0x00,sizeof(msgqName));
    int status;
    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);
    if ( status < 0  )
    {
        LOG_Error("MessageQ_open(%s) fail", msgqName);
        return FAILED;
    }
    LOG_Info("ARM_MessageQInit(%s ok", msgqName);
    return OK;
}


3、概率很大,很容易就出现,跑几次就出现。前提是我之前提的那个问题:arm一个线程始终open不开dsp2的消息队列。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 06:22 , Processed in 0.039562 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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