Single Streaming Channel:
Core 0 - May send three different custom application tokens (0x20-0x24) / data word. Then send two words.
Core 1 - Process tokens / data word, then receives above and returns 2 words.
The above works great. Core 0 can send tokens and data and Core 1 return data all day long. But now I need to occasionally send tokens back to Core 0 for special data. I do not have enough bandwidth to always send extra words, nor can I use a second channel since I only have a single link.
When I take the same code and replicate on the other core, I get an "illegal resource" trap on Core 0 just after processing a control token / data pair from Core 1. Everything works before sending the token from Core 1 to 0. The same code works from 0 to 1, but traps from 1 to 0. Here's a code snipet for the receive token code:
Code: Select all
if (stestct(c_couple))
{
switch(sinct(c_couple))
{
case DSP_CT_FREQ :
....
break;
}
c_couple :> temp; <-Traps here on Core 0