目前Ipc通讯开发使用到cache_wbInv(),MessageQ_put(), MessageQ_get(),遇到几个棘手的问题:
1、使用的MessageQ_Forever,如果另一方不回复,通讯就会卡死,但把MessageQ_Forever改成其他小一些的数值,程序会跑飞,原因未知;
2、cache_wbInv()和MessageQ_put()/get()似乎会多次关闭中断Hwi_disable(),这会导致我主程序的主控制中断受到严重影响,这个是最严重的,如何解?
Denny%20Yang99373:
想办法优化一下,把共享的那片内存CACHE DISABLE,这样就不用每次调用cache_wbinv
MessageQ_Forever本来设计就是一直等待的,换成其他小数值程序跑飞,是不是程序设计有问题?
Jingang Yang:
回复 Denny%20Yang99373:
Denny, 关于内部RAM和Cache的属性切换,我一直有个问题:
现在我的platform里L1P,L1D,L2都是部分设置为RAM,部分设置为Cache,基于此:
1)我们的internal memory(0x80000000~0x8001FFFF)区域对应的MAR128设为0时,我DSP/ARM去读这块区域的数据时,数据时通过L1/L2的cache部分进来还是L1/L2的RAM部分进来?
进一步的,我想确认,internal memory的MAR128 bit disable后,双核通过该区域交互数据时,读写前是否要类似于cache那样先“刷新”一下?
2)ARM的.cfg跟DSP的.cfg不一样,看不到可以设置MAR的地方,怎么确认有否可能DSP侧的MAR128与ARM侧的MAR128设置一致?
MessageQ_Forever跑飞的问题,问题还无法定位。