如题,
我们的项目中在做文件存储时,发现存储的数据被改变了,导致无法通过校验。
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是一样的。
谢谢!
Shine:
请问同时创建Mcasp channel 4 的TX和RX时,TX和RX能正确收发数据吗?
user6342709:
回复 Shine:
TX和RX能正确收发数据的
user6342709:
回复 Shine:
部分代码如下:
/* 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 TxFailed...:");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 TxFailed...:");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 RxFailed...:");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 RxFailed...:");BIOS_exit(0);}
Shine:
回复 user6342709:
我发到e2e去问了,请关注下面的帖子。
e2e.ti.com/…/904057
user6342709:
回复 Shine:
好的,谢谢了