I have been running into a lot of difficulties to simply make my algorithm work by booting from a microcontroller. I finally was able to have something more or less working.
My algo has 2 NLMS blocks and a few 2nd Order Index Selectable filters. Apparently the NLMS and the index selectable filters conflict with each other when programmed in my uC, and it changes my output signal (compared to the algo simply programmed using SigmaStudio). Depending on the size of the NLMS and the number of index selectable filters I can eliminate or generate the problem. 1 NLMS over 24 coefficients with 1 index selectable filter generates the problem, but 2 NLMS each with 16 coefficients with 3 index selectable filters doesn't generate the problem...
Moreover, the index selectable filter blocks seem to also conflict with the Division block (which also uses a lot of coefficient memory, according to the compiler output). Again generating problems on the output signal.
My solution was to put the 2 NLMS with the index selectable filter in 1 DSP and the rest of my algo with the Division block in a 2nd DSP, and keeping the number of coefficients for the NLMS at 16.
The DSP memory is never full (not even 50% ressources used). Microcontroller memory is neither full (around 32% RAM, 55% Flash).
I would really like to solve this problem once and for all (instead of bypassing it), so that I can have more NLMS coefficients and more filters in my algo.
So I ask the following question, How are the filter coefficients saved in the microcontroller after exporting the files from SigmaStudio? Is it stored in Flash or RAM or another memory location that I don't know?
How would you tackle this problem? Do you know a better solution?