背景:OMAPL138的ARM跑LINUX,使用SYSLINK与DSP端进行通讯,故DSP端跑的是SYSBIOS操作系统,DSP端外接FPGA,与FPGA使用HPI通讯,FPGA通过HPI向DSP 写值,写的位置在片内共享段,也就是0x80000000这里开始,写完后会产生一个中断,通过查询中断的方式,DSP读取共享内存中的数据,奇怪的现象就产生了: DSP在读取了HPI中的数据后,FPGA的通过HPI写的数据就不能更新了,而且不是不能全部更新,而仅仅是读取的位置的在以0x80000000为开始,32个字长为单位,读取位置所在的这32个字的数据就不会再被HPI数据更新了,举个例子,0x80000088在第3个32字范围内,读取这个地址的值后,这32个数据的值,就不会再改变,请问这是怎么回事啊? 读取这个地址的方式如下:
unsigned int count_tmp;//定义一个变量保存读取结果
count_tmp=(unsigned int)(*((unsigned int *)0x80000088)); // 这个语句在查询的服务函数中
亲们,急救啊!!!!!!!!!!!!!!!!!
luo qi:
看描述,像是dsp cache的问题
dsp取数据之前需要清一次cache,否则cpu会默认从cache里取数据,而不会真的从物理地址里取数据
操作是Cache_inv,自己去查下使用方式吧
138的cache好像最小长度是128字节