免费注册 查看新帖 |

Chinaunix

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

[硬件及驱动] 如何在Linux内核态驱动代码里访问0xFFFF_FFF0 物理地址??(X86平台) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-25 09:02 |只看该作者 |倒序浏览
本帖最后由 SZ_DIV8 于 2012-07-25 09:06 编辑

Hi,大家好:
      我的机器是Intel X86平台,
      1.现在需要在驱动代码(内核态)中 读取物理内存地址4G顶端的一些内容(物理内存 offset 0xFFFF_FFF0处)
      2.但是现在发现 无论使用do_mmap(),还是io_remap();都无法成功 Map 这个地址,不知道应该如何去访问???请大家指点,谢谢!!!
  我是从0xFFF0_0000  往上 Map 0x1_00000 这么大的空间的,按理应该包含 0xFFFF_FFF0这个地址,但是访问就报错了(好像是段错误)
      ----------在用户态的程序里是可以轻松访问这个物理内存地址的!!!
      

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
2 [报告]
发表于 2012-07-25 12:29 |只看该作者
返回什么错误啊,是不是都已经映射好了啊。

论坛徽章:
0
3 [报告]
发表于 2012-07-25 15:58 |只看该作者
回复 2# liuiang


    返回MAP不成功啊

论坛徽章:
0
4 [报告]
发表于 2012-07-26 11:06 |只看该作者
用kmap函数来做吧

论坛徽章:
0
5 [报告]
发表于 2012-07-27 02:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2012-07-27 07:00 |只看该作者
提醒一下:如果你是32位机器的话,最顶端的128M应该是HIGHMEM区。

论坛徽章:
0
7 [报告]
发表于 2012-07-27 10:26 |只看该作者
本帖最后由 SZ_DIV8 于 2012-07-27 10:29 编辑

回复 6# f3d27b


    Hi,
       这个了解,
       我的目的就是要抓取 PC  BIOS 开机第一条指令  的内容,  因为X86  PC BIOS第一条指令 就在 4G-16Bytes 的地方,所以我要去读  0xFFFF_FFF0  的位置 ,谢谢,

    现在发现就是 4G- 4kBytes  ~4G    这段空间 无法Map  ,  不知道是不是Map 函数调用的问题
   只要我需要Map 的范围 包含   X86  PC 地址空间的 顶端 那 4K  ,就Map 不成功, !!!或许是MAP 函数处理的问题,我换一个试一下

论坛徽章:
0
8 [报告]
发表于 2012-07-27 10:30 |只看该作者
回复 5# lloydm


    好的我尝试 一下Kmap

论坛徽章:
0
9 [报告]
发表于 2012-07-27 10:55 |只看该作者
回复 4# hmsghnh


    Hi,
        能否指点一下Kmap 咋用啊,找了一下,  没有找到,对Linux 太不熟悉了,
  
       我的目的:    能够 读取  CPU 内存地址空间  0xFFFF_FFF0   处的内容!!
      
     谢谢
      

论坛徽章:
0
10 [报告]
发表于 2012-07-27 10:58 |只看该作者
回复 7# SZ_DIV8
map失败的原因可能是那段空间已经被使用了.
通常都是分配未用过的空间.

如果你的系统允许在用户空间操作/dev/mem文件的话,用你要看大物理地址作为offset 将那段空间映射到用户空间试试.


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP