Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

"Notify_sendEvent " doesn't able to notify the remote core when the running the Application with Hello World NDK Project.

$
0
0

Hi All,

I am using CCS v5.0.1,

I am using multicore DSP EVM 6670.

BIOS version is 6.32.4.49.

XDC tools is 3.22.01.21.

On DSP EVM 6670(which consists of 4 cores), I am currently using or running  the 3 core Application . Let us suppose that 1st core be core1, 2nd  core be Core2 and 3rd Core be Core3.

In the core3 , I am registering the Notify event by Notify_registerEvent ( ) and in one of the Function call , I am using Notify_sendEvent() to notify the core2 , here is code snippet for that  in Core3 :-

main()

{

 status = Notify_registerEvent(Core2, INTERRUPT_LINE, EVENTID, (Notify_FnNotifyCbck)Core3_notifyEventISR, NULL);

 BIOS_Start();

}

In this function call i am using the Notify_sendEvent() on Core3 :

void  Core3_CTRL_Init(int * x)
{

 

status = Notify_sendEvent(Core2, INTERRUPT_LINE, EVENTID, (uint32_t)payload,
TRUE);

}

void  Core3_notifyEventISR(uint16_t procId,
uint16_t lineId,
uint32_t eventId,
uint32_t arg,
uint32_t payload)
{
 memReg  = payload;
Semaphore_post(SysInit);
}

On Similar terms, In the core2 , I am registering the Notify event by Notify_registerEvent ( ) and in one of the Function call , I am using Notify_sendEvent() , here is code snippet for that for Core2 :-

main()

{

 status = Notify_registerEvent(Core3, INTERRUPT_LINE, EVENTID, (Notify_FnNotifyCbck)Core2_notifyEventISR, NULL);

 BIOS_Start();

}

void  Core2_CTRL_Init(int * x)
{

 

status = Notify_sendEvent(Core3, INTERRUPT_LINE, EVENTID, (uint32_t)payload,
TRUE);

}

void  Core2_notifyEventISR(uint16_t procId,
uint16_t lineId,
uint32_t eventId,
uint32_t arg,
uint32_t payload)
{
 memReq = payload;
Semaphore_post(SysInit);
}

the  values for   EventID =10 and Interrupt Line = 0(for Core 2 as well as for Core3)

On Core1 there is some application running.

So, on EVM 6670 when i ran this three core's i.e Core1,Core2,Core3 . the application works fine . There is no problem in that .

When I try to integrate  this 3 core application with Hello World NDK Project which is running on Core0 with  :

BIOS version is 6.32.5.54.

XDC tools is 3.22.01.21.

Although the Hello World NDK project works fine.

So, Now comes the problem for me while running 3 core application with Hello World NDK Project on Core0, 

 The problem is in Notify_sendEvent() on Core3, the status returned by the Notify_sendevent() is 0 stating "Success" but it doesn't able to notify the remote core i.e core2 to execute the  void  Core2_notifyEventISR(uint16_t procId, uint16_t lineId,uint32_t eventId,uint32_t arg,uint32_t payload).leading to that Semaphore_post(SysInit) doesn't wrk and the Task  on Core2 itself which is pending to that Semaphore doesn't execute.) .

On the other side, when I didn't ran the Hello World NDK project on Core0, the 3 cores(Core1,Core2,Core3) works fine, the Notify_sendevent () from Core 3 able to notify the remote core2 and then the following process happens.

One more point while viewing the ROV table in the field NotifyDrivershm , i could see that for both cores i.e core2 and Core3 the Event Id 10 has been registered for corresponding ProcId :2 and procId:3 respectively for Core3 and Core2 on both times i.e when running 3 core application and running 3 core application with Hello World NDK Project on Core0.

One more Important point, I hav to integrate the Hello World NDK project with our 3 core application(that is the requirement). Upto now the conclusion is that problem is somewhere in the Hello World NDK project.

Can Anyone help me to resolve this problem?

Thanks in Advance.

Regards,

Mohit

 


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>