Hello,
I face an issue with the McASP BIOSPSP driver I struggle with and I would need some help.
I'm trying to use an IPC Stream to send out samples to the AIC31 codec of an OMAP-L138 LCDK, through audio, Aic31, McASP and I2C drivers provided in the BIOSPSP driver Library (03.01.01.00). It's a basic mix of the IPC io example and BIOSPSP audio example (run on the 674x core), plus the IPC messageQ example (as I want the ARM core to perform some USB transfer in a further step).
Initially I couldn't properly compile the BIOSPSP drivers (my evm target not being supported) so I basically brought to my project all the files I needed from the Library to build the project.
I used the IOMAdapter of the IPC (1.23.05.40) to map the BIOSPSP Audio driver and use it as a Stream output.
Everything seems to run well when creating the Stream, but when I issue the first sample, the program timeouts when I try to clear the XMT serializer (stack : audioMdSubmitChan() -> mcaspMdSubmitChan() -> mcaspSubmitReq() -> Mcasp_localLoadPktToEdma() -> Mcasp_localActicateSmFsForXmt() -> mcaspBitSetGblXCtl()).
CCS v5.2.1.00018, SYSBIOS v6.33.01.25
Here is the code portion where the program timeouts:
static Void mcaspBitSetGblXCtl(Mcasp_Object *instHandle, Uint32 bitMaskVal)
{
...
(instHandle->hwInfo.regs)->XGBLCTL =
((instHandle->hwInfo.regs)->XGBLCTL | bitMaskVal);
while ((((instHandle->hwInfo.regs)->GBLCTL & bitMaskVal) !=
bitMaskVal) && (timeout > 0))
{
/* reduce the retry count value */
timeout--;
isTask = BIOS_getThreadType() == BIOS_ThreadType_Task;
/* wait for 1 tick only if called from a task context */
if (TRUE == isTask)
{
Task_sleep(1);
}
}
assert(0 != timeout);
Any help would be much appreciated,
Philippe