嵌入式开发者社区
标题:
arm双线程和两个dsp建立MessageQ失败问题
[打印本页]
作者:
beying
时间:
2019-8-5 13:58
标题:
arm双线程和两个dsp建立MessageQ失败问题
问题描述如下:
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的消息队列,有什么要设置的吗?您那边需要看我这边的什么信息告诉我,我粘上来。
作者:
beying
时间:
2019-8-5 15:13
贴上关键代码:
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
作者:
梁淑怡-Tronlong
时间:
2019-8-6 08:55
您好,
目前没有相关案例可供您参考,建议先排查一下attach的连接是否成功
作者:
beying
时间:
2019-8-6 09:46
attach的连接是什么?这个请稍微描述详细点,我对这个确实不熟,代码中我没搜到attach语句。谢谢
作者:
beying
时间:
2019-8-6 10:42
找到了,估计你说的是Ipc_attach函数,我正在试。
作者:
beying
时间:
2019-8-6 11:58
试了,搞不定。Ipc_attach只有dsp-to-dsp那个例子用了,要调用Ipc_attach,之前必须调用Ipc_start,我在两个dsp中调用Ipc_start都会返回失败。
作者:
梁淑怡-Tronlong
时间:
2019-8-6 18:40
您好,
ARM是可以访问两个DSP处理器的, 您可以参考tl-messageq-gpmc-edma案例修改版,联系技术支持获取资料参考。假如是双线程只是调用了MessageQ_open,应该与此案例差不多。
[attach]5415[/attach]
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4