[tr]在本SYSBIOS例程中,在音频的输入输出的·task.c文件部分有如下代码:
Cache_inv((void *)rxBufPtr[lastFullRxBuf], AUDIO_BUF_SIZE, Cache_Type_ALLD, TRUE);//INV
// 复制 buffer
memcpy((void *)txBufPtr[lastSentTxBuf],(void *)rxBufPtr[lastFullRxBuf],AUDIO_BUF_SIZE);
Cache_wb((void *)txBufPtr[lastSentTxBuf], AUDIO_BUF_SIZE, Cache_Type_ALLD, TRUE);
注意到有用到cache功能,但是查看工程的map文件,发现并没有用到RAM空间,如下
MEMORY CONFIGURA
tiON
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
IROM 11700000 00100000 00000000 00100000 R X
L3_CBA_RAM 80000000 00020000 00000000 00020000 RW X
DDR c0000000 08000000 014544a0 06babb60 RW X
查看之前基于startware库实现的例程AUDIO_LINE_IN,也没有使用cache缓存,核心代码如下
// 复制 buffer
memcpy((void *)txBufPtr[lastSentTxBuf], (void *)rxBufPtr[lastFullRxBuf], AUDIO_BUF_SIZE);
但是如果尝试将cache功能代码屏蔽掉,只保留复制buffer的代码,SYSBIOS的例程就不能工作了,
对这个现象很奇怪,然后也不是很理解为什么要在SYSBIOS的例程中多加这两个cache的函数,求解答。
[/tr]