嵌入式开发者社区

标题: OMAPL138 hpi 使用求解 [打印本页]

作者: zhangjun972845    时间: 2015-3-16 17:38
标题: OMAPL138 hpi 使用求解
背景: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));  // 这个语句在查询的服务函数中
请问,这是怎么回事啊?很是不理解,查了好久才查出这个问题,但是却不知道怎么解决,求解啊
3 b3 B  F3 w! _& P( l" @7 j

作者: 希望缄默    时间: 2015-3-17 09:23
1、volatile 关键字
+ k  E7 N; O9 g5 \+ I# C+ ?6 \2、缓存
作者: zhangjun972845    时间: 2015-3-20 09:23
希望缄默:谢谢你的回答,根据你的提示,我调用了CacheInv (0x80000000, 0x368);这样子之后,数据就更新了,但是这样的话就需要每次读取时手动刷新,很是不方便,之后我看到了有CacheEnable (unsigned int memCfg)以及CacheEnableMAR (unsigned int baseAddr, unsigned int byteSize)这两个API,现在我想禁用掉cache,那么调用CacheEnable时传递怎样的参数啊?可否有相应的指导手册啊?
作者: 希望缄默    时间: 2015-3-20 09:47
请参阅 TMS320C674x DSP Cache User's Guide




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4