I am trying to combine the QMSS Infrastructure Multicore Mode (PDK_INSTALL_PATH/ti/drv/qmss/example/InfrastructureModeMulticore) example code with the FFTC multicore (PDK_INSTALL_PATH/ti/drv/fftc/example/multicore) example code and I am getting a strange error during configuration:
[C66xx_1] Error opening Tx channel corresponding to FFTC queue : 1
[C66xx_1] Invalid FFTC Transmit configuration specified
I was able to see these messages by implementing Osal_fftcLog() in multicore_osal.c. Another important change was using monolithic descriptors instead of host descriptors in the FFTC example code.
The call sequence to get to this is, roughly:
Core 0:
Qmss_init()
Qmss_start()
Cppi_init()
Cppi_open() *
Qmss_insertMemoryRegion() for monolithic/sync descriptors *
Qmss_insertMemoryRegion() for monolithic descriptors for FFTC
several [seemingly irrelevant for the problem at hand] xxxx_initDescriptor() calls for memory regions 0 and 1
and finally, several Qmss_queueOpen() calls for the queues defined in the QMSS infrastructure example.
* these calls are specific to the QMSS InfrastructureModeMulticore example
after the above sequence ends, Core 1 does:
Qmss_start()
enable_fftc()
Fftc_init()
fftc_setup() -> changed to use monolithic descriptors in memory region 2; this function will call Fftc_open()
populate an FFT_ExampleCfg struct
Fftc_txOpen()
... which is where I get the above error message and a NULL hTxObj.
I am not sure what else to try except changing the fftcInstNum variable (from CSL_FFTC_A to CSL_FFTC_B) and the txCfg.txQNum (from 0 to 1). Neither of the 4 possible combinations of instance number and txQNum work.
If I move all this code from Core 1 to Core 0, the Fftc_txOpen() call returns a non-null hTxObj, but I haven't gone any further into using it; the fact that it works, though, hints that there is some sort of core-specific configuration I am unable to find, so I would like some advice from TI as to where else to look.
Best regards and thank you in advance