Linux中通过/dev/mem操控物理地址

/dev/mem是物理内存的全映像,可以用来访问物理内存,用mmap来访问物理内存以及外设的IO资源,是实现用户空间驱动的一种方法

我们先用hexedit来看下/dev/mem,hexedit /dev/mem 可以物理内存的信息,当然肉眼是无法看的毕竟是16进制。

00000000 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

00000010 53 FF 00 F0 53 FF 00 F0 CC E9 00 F0 53 FF 00 F0 S…S…….S…

00000020 A5 FE 00 F0 87 E9 00 F0 53 FF 00 F0 46 E7 00 F0 ……..S…F…

00000030 46 E7 00 F0 46 E7 00 F0 57 EF 00 F0 53 FF 00 F0 F…F…W…S…

00000040 22 00 00 C0 4D F8 00 F0 41 F8 00 F0 FE E3 00 F0 “…M…A…….

00000050 39 E7 00 F0 59 F8 00 F0 2E E8 00 F0 D4 EF 00 F0 9…Y………..

00000060 A4 F0 00 F0 F2 E6 00 F0 6E FE 00 F0 53 FF 00 F0 ……..n…S…

00000070 ED EF 00 F0 53 FF 00 F0 C7 EF 00 F0 EC 57 00 C0 ….S……..W..

00000080 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

00000090 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000A0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000B0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000C0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000D0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000E0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

000000F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 53 FF 00 F0 S…S…S…S…

不过可以用mmap将/dev/mem 映射出来,然后可以对其读写可以实现用户空间的内核操作。先来说下mmap函数,

void *mmap(void *addr, size_t length, int prot, int flags,

              int fd, off_t offset);

共6个参数含义分别如下:

l addr如果为null,那么有内核选择一个映射的地址,如果不为null,那内核会把参数当做映射的提示(映射的地址就在所提示的附近,不会百分百确保的)

l  length表示映射长度

l prot表示对映射的保护, 可以是可执行,可读,可写或不可访问,PROT_EXEC,PROT_READ,PROT_WRITE,PROT_NONE

l flag表示是否对其他进程可见,MAP_SHARED表示其他进程可见。

l fd需要映射的文件描述符

l offset指向fd的编译

接下去我们用mmap来映射/dev/mem,编写代码如下:

include

include

include

include

include

include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值