免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4539 | 回复: 11
打印 上一主题 下一主题

如何在应用程序里访问物理内存呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-04 16:40 |只看该作者 |倒序浏览
如题!

比如我的物理内存地址是0x30000000开始,我想在应用程序里访问这段地址,我该怎么做??
goole了一下,给的都是
/**********************************/
int fd=0;
char *mem=null;
int size = 1000;

fd = open("/dev/mem", O_RDWR);

mem=(char *)mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0x30000000>>;
/*****************************************************************************/

说用这种方法就能直接访问内存。
但是执行open时是OK的,但是执行mmap就不行,返回值是-1,请问是怎么回事??

还有,还有没有其他方式能直接访问内存呢?

高手们给讲讲啊……

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2008-12-04 20:16 |只看该作者
你的文件系统是什么的?
是在PC机上作的实验吗?
还是在开发板上做的?

[ 本帖最后由 T-bagwell 于 2008-12-4 20:17 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-12-04 23:44 |只看该作者
好像不能直接访问物理内存吧?只有操作系统内核才能这么做,否则就没有内存管理的必要了。
当然如果是设备的地址空间通过地址映射是可以访问的

论坛徽章:
0
4 [报告]
发表于 2008-12-05 12:38 |只看该作者

回复 #2 T-bagwell 的帖子

是板子上

论坛徽章:
0
5 [报告]
发表于 2008-12-05 12:45 |只看该作者

回复 #3 emmoblin 的帖子

其实我的本意也不是想直接访问,毕竟不太合乎规则。

我在做一个camera采集和播放的测试代码,系统把ram最后一部分留出几M给采集的视频数据放,且这部分空间没有接收内存管理(free命令得到的内存总量就不包含这部分空间)。

我应该怎么获得那片区域的映射呢?

论坛徽章:
0
6 [报告]
发表于 2008-12-05 14:37 |只看该作者

回复 #5 fishrei 的帖子

你这个是什么的板子?

[ 本帖最后由 xiangyu1986 于 2008-12-5 14:52 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-12-05 14:59 |只看该作者

回复 #5 fishrei 的帖子

你可以把errno打出来看看吧
用perror看看到底是为什么不能映射这段内存

论坛徽章:
0
8 [报告]
发表于 2008-12-05 15:00 |只看该作者

回复 #6 xiangyu1986 的帖子

/dev/mem是内存设备,是针对我访问内存的提问使用的,对camera则是/dev/video设备。
跟framebuffer不一样,打开framebuffer设备以后,我可以使用mmap可以获得显示区域的那片映射,望映射地址写数据,可以在屏上显示。
而针对camera设备,好像不能够用mmap来获取camera采集数据的那片空间,所以想直接去读内存。

但是好像那部分空间被放在内存管理以外了,即是说/proc/meminfo里,内存那部分不包括这段地址,而且这段地址也没有出现在该文件里。

还在看,不知道怎么回事??

有知道的哥们给指导一下……

论坛徽章:
0
9 [报告]
发表于 2008-12-05 15:14 |只看该作者

回复 #8 fishrei 的帖子

是不是因为你这部分存储空间还没有挂载到系统上去??

论坛徽章:
0
10 [报告]
发表于 2008-12-05 15:24 |只看该作者

回复 #8 fishrei 的帖子

那你这里是i/o空间的访问啊
应该是做ioremap才对吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP