This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6678 ipc notify & sharedRegion 错误



TI工程师:您好!

  我的工程用到了notify & sharedRegion

  程序运行过程中出现过下列的错误,

1。a_invArgument:  invalid argument supplied

2. a_addroutRange: address is out of region id's range(只配置了一个region, 配置的大小>使用的空间大小)

3。a_notRegistered: nofify instance not yet registered for the processor(程序已注册过)

请问这几个错误有可能是什么原因造成的。在单独测试计算模块时,没有问题,但集成调试过程中,却出现了这几个问题。

  • 请帖出版本号以及附件上传相关代码及cfg配置文件。
    第一个报错具体出现的位置,请详细说明。

  • 这是其中一个。
    在我的工程中,使用ipc notify实现core0 和其余核之间进行一个简单的数据传递,core 0 向其它核发送notify, 其它核运行一个计算后,发送notify给core0. 后续还要执行类似的多核 同步的计算。程序开始运行了 IPC_start(), sendEvent_register()。前几次运行均正常。但运行几次后,会运行错误,提示 notify instance not yet registered for the processor.

    请问这有可能是什么原因造成的。

    void cbFxn(Uint16 procId, Uint16 lineId, Uint32 eventId, UArg arg, Uint32 payload)
    {
    recvProcId = procId;
    inBuf_srptr=(SharedRegion_SRPTER)payload;

    if(procId != masterProc)
    {
    recv_nums++;
    if(recv_nums == 7)
    {
    recv_nums = 0;
    Semaphore_post(semHandle);
    }
    }else
    Semphore_post(semHandle);

    }

    注册代码 INTERRUPT_LINE= 0; EVENTID= 10

    if (MultiProc_self() == masterProc)
    {
    status = Notify_registerEvent(sloverProc1, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc2, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc3, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc4, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc5, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc6, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    status = Notify_registerEvent(sloverProc7, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    }else
    {
    // 从核完成事件注册
    status = Notify_registerEvent(masterProc, INTERRUPT_LINE, EVENTID,
    (Notify_FnNotifyCbck)cbFxn, NULL);
    }
  • 把.cfg配置文件也上传一下。