AM5728: AM5728的MessageQ_Create()

Part Number: AM5728

参考例程rtos-examples/ti-linux-ipc-examples/ex41_forwardmsg,目的是希望host ARM 发Message给DSP1,DSP2。

现在情况是,DSP1可以MessageQ_Create()成功,DSP2 一直MessageQ_Create()不行。

DSP1/DSP2 load-firmware没有报错,烦请帮忙检查一下,哪里写的不对,或者帮忙指出需要注意的事项,谢谢!

程序片段如下:

#define App_HostMsgQueName "HOST:MsgQ:01"
#define App_SlaveMsgQueName1 "SLAVE:MsgQ:01"
#define App_SlaveMsgQueName2 "SLAVE:MsgQ:02"

ARM:

Module.hostQue = MessageQ_create(App_HostMsgQueName, &msgqParams);
if (Module.hostQue == NULL) {
printf("App_create: Failed creating MessageQ\n");
status = -1;
goto leave;
}
printf("MessageQ_create\n");

/* open the remote message queue */

sprintf(msgqName, App_SlaveMsgQueName, MultiProc_getName(remoteProcId));
printf("queue name %s\n", msgqName);
do {
status = MessageQ_open(App_SlaveMsgQueName1, &Module.slaveQue);
printf("MessageQ_open %s, status=%d\n", App_SlaveMsgQueName1, status);
sleep(1);
} while (status == MessageQ_E_NOTFOUND);

if (status < 0) {
printf("App_create: Failed opening MessageQ\n");
goto leave;
}

/* open the remote message queue */
sprintf(msgqName_2, App_SlaveMsgQueName, MultiProc_getName(remoteProcId_2));
printf("queue name %s\n", msgqName_2);
do {
status = MessageQ_open(App_SlaveMsgQueName2, &Module.slaveQue_2);
printf("MessageQ_open %s, status=%d\n", App_SlaveMsgQueName2, status);
sleep(1);
} while (status == MessageQ_E_NOTFOUND);

if (status < 0) {
printf("App_create: Failed opening MessageQ\n");
goto leave;
}

DS:1:

Module.slaveQue = MessageQ_create(App_SlaveMsgQueName1, &msgqParams);

if (Module.slaveQue == NULL) {
status = -1;
goto leave;
}

DSP2:

Module.slaveQue = MessageQ_create(App_SlaveMsgQueName2, &msgqParams);

while (Module.slaveQue == NULL) {
Task_sleep(1);
Module.slaveQue = MessageQ_create(App_SlaveMsgQueName2, &msgqParams);
}

if (Module.slaveQue == NULL) {
status = -1;
goto leave;
}