创龙科技
直播中

蔡旻杨

7年用户 181经验值
私信 关注

为什么要在SYSBIOS的例程中多加这两个cache的函数?

[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 CONFIGURAtiON

         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]

回帖(2)

徐静

2019-7-23 17:15:02
您好,饶工,如之前沟通,请问您对于代码部分,还存在疑问?您的邮件问题,已转发给对应的DSP软件工程师跟进,会尽快给您回复的。
举报

李凤津

2019-7-23 17:25:23


感谢廖工的解答,这个跟之前报告的问题没有关系,纯粹是从代码的角度看音频例程。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分