AnsweredAssumed Answered

Question about the use of osBioChannelOpen() in a multicore build

Question asked by Mickaël MENARD on Apr 3, 2012
Latest reply on Apr 13, 2012 by Mickaël MENARD

Hello,

 

I would like to use an Ethernet connexion on Core 0 only in my application but I'm faced to an issue on multicore build whereas it works fine on monocore build. A task is dedicated to the network on Core 0 and is in charge to initialize ant to control it. The code of the network task is based on the "net_demo" example.

Basically the first step was to just start the background task on cores 1 to 5 and to keep the application on Core 0. The application is running without any error raised from SmartDSP but there is no activity on the network (I use wireshark tool).

 

I tryied to modify the example net_demo to do the same and I have the same behaviour. I modified the main() function to execute appInit() only on Core 0:

if (osGetCoreID() == OS_MASTER_CORE){   /* Place any required initialization code within appInit().      Using local variables inside main() is NOT recommended, because      its stack is never restored - osStart() never returns !!! */   status = appInit();   if (status != OS_SUCCESS) OS_ASSERT;}

 and I removed the call to osWaitForAllCores() in appInit() as other cores didn't execute this function.

 

I found a workaround that consist to initialize Rx/Tx channels on all cores and the issue is no more seen but I don't understand why it is needed to initialize the network on each core? I didn't find any notes about that in the user guide and API reference manual.

 

Thanks for your help.

Best regards,

Mickaël

Outcomes