OMAPL138 hpi 使用求解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5145|回复: 3

OMAPL138 hpi 使用求解

[复制链接]

3

主题

6

帖子

41

积分

新手上路

Rank: 1

积分
41
发表于 2015-3-16 17:38:35 | 显示全部楼层 |阅读模式
背景: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));  // 这个语句在查询的服务函数中
请问,这是怎么回事啊?很是不理解,查了好久才查出这个问题,但是却不知道怎么解决,求解啊

* C3 `# D: A* Z) H5 Y/ P7 C
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
发表于 2015-3-17 09:23:27 | 显示全部楼层
1、volatile 关键字' K! Q* s- N, {5 v8 Q, ~
2、缓存
回复 支持 反对

使用道具 举报

3

主题

6

帖子

41

积分

新手上路

Rank: 1

积分
41
 楼主| 发表于 2015-3-20 09:23:46 | 显示全部楼层
希望缄默:谢谢你的回答,根据你的提示,我调用了CacheInv (0x80000000, 0x368);这样子之后,数据就更新了,但是这样的话就需要每次读取时手动刷新,很是不方便,之后我看到了有CacheEnable (unsigned int memCfg)以及CacheEnableMAR (unsigned int baseAddr, unsigned int byteSize)这两个API,现在我想禁用掉cache,那么调用CacheEnable时传递怎样的参数啊?可否有相应的指导手册啊?
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
发表于 2015-3-20 09:47:11 | 显示全部楼层
请参阅 TMS320C674x DSP Cache User's Guide
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 01:23 , Processed in 0.036364 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表