This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP端mcaspCreateChan影响ARM端内存数据和存储???



如题,

我们的项目中在做文件存储时,发现存储的数据被改变了,导致无法通过校验。

SDK版本ti-processor-sdk-rtos-am57xx-evm-05.00.00.15-Linux-x86-Install.bin

如图,左侧为错误数据,右侧为正确数据

是在ARM上做DSP音频数据的CRC校验的时候发现,但是一直以为问题在ARM上,最近才定位到是DSP影响

对该现象做进一步分析后,定位在mcaspCreateChan创建同一个McaspDev的RX和TX通道时会出现该现象。

发现数据不一致之后,当前测试方法如下:
仅仅初始化IO流,如下图
流数据BUF也不做初始化
在Create_Streams中mcaspCreateChan创建Mcasp channel 4 的TX和RX,
创建一个1G的文件aaa,开发板上运行如下命令
cp aaa bbb
sync
diff aaa bbb
发现,aaa和bbb不一样
只创建Mcasp channel 4 的TX(或者RX),发现aaa和bbb是一样的。
谢谢!
 
  • 请问同时创建Mcasp channel 4 的TX和RX时,TX和RX能正确收发数据吗?
  • TX和RX能正确收发数据的
  • 部分代码如下:

       /* Create Mcasp4 channel for Tx */
       status = mcaspCreateChan(&hMcasp_Codeca_TxChan, hMcaspDev_CodecA_Array,
                                MCASP_OUTPUT,
                                &mcasp_chanparam[1],
                                mcasp4_WriteCallback, NULL);
       if((status != MCASP_COMPLETED) || (hMcasp_Codeca_TxChan == NULL))
       {
           Log_print0(Diags_ENTRY, " mcaspCreateChan for McASP4 Tx  Failed...:");
           BIOS_exit(0);
       }
       /* Create Mcasp5 channel for Tx */
       status = mcaspCreateChan(&hMcasp_Codecb_TxChan, hMcaspDev_CodecB_Array,
                                MCASP_OUTPUT,
                                &mcasp_chanparam[1],
                                mcasp5_WriteCallback, NULL);
       if((status != MCASP_COMPLETED) || (hMcasp_Codecb_TxChan == NULL))
       {
           Log_print0(Diags_ENTRY, " mcaspCreateChan for McASP5 Tx  Failed...:");
           BIOS_exit(0);
       }
       /* Create Mcasp4 channel for Rx */
       status = mcaspCreateChan(&hMcasp_Codeca_RxChan, hMcaspDev_CodecA_Array,
                                MCASP_INPUT,
                                &mcasp_chanparam[0],
                                mcasp4_AppCallback, NULL);
       if((status != MCASP_COMPLETED) || (hMcasp_Codeca_RxChan == NULL))
       {
           Log_print0(Diags_ENTRY, " mcaspCreateChan for McASP4 Rx  Failed...:");
           BIOS_exit(0);
       }
       /* Create Mcasp5 channel for Rx */
       status = mcaspCreateChan(&hMcasp_Codecb_RxChan, hMcaspDev_CodecB_Array,
                                MCASP_INPUT,
                                &mcasp_chanparam[0],
                                mcasp5_AppCallback, NULL);
       if((status != MCASP_COMPLETED) || (hMcasp_Codecb_RxChan == NULL))
       {
           Log_print0(Diags_ENTRY, " mcaspCreateChan for McASP5 Rx  Failed...:");
           BIOS_exit(0);
       }

  • 我发到e2e去问了,请关注下面的帖子。
    e2e.ti.com/.../904057
  • 好的,谢谢了