linux驱动访问物理内存,Linux下访问内存物理地址

本文介绍了如何在Linux下通过/dev/mem设备文件访问物理内存,包括两种方法:一是使用设备驱动,通过file_operations结构的read、write和mmap方法;二是利用mmap系统调用直接映射内存到进程地址空间,实现读写操作。示例代码展示了读取和修改内存内容的过程。
摘要由CSDN通过智能技术生成

by tmsonhsut 2008.4.28

Linux内核里提供的/dev/mem驱动,为我们读写内存物理地址,提供了一个渠道。下面讲述2种利用mem设备文件进行物理地址读写的方法,一种是设备驱动的方法,另一种是系统调用的方法。

首先我们看下mem这个设备文件,/dev/mem是linux下的一个字符设备,源文件是~/drivers/char/mem.c,这个设备文件是专门用来读写物理地址用的。里面的内容是所有物理内存的地址以及内容信息。通常只有root用户对其有读写权限。

1.设备驱动的方法

下面是mem.c文件里定义的file_operations结构,提供了llseek,read,write,mmap以及open等方法。

引用:

static struct file_operations mem_fops =

{

.llseek = memory_lseek,

.read = read_mem,

.write = write_mem,

.mmap = mmap_mem,

.open = open_mem,

};

因此我们可以通过一般驱动的使用方法,将内存完全当作一个设备来对对待。应用程序如下:

引用:

#include #include int main(void)

{

int fd;

char *rdbuf;

char *wrbuf = "butterfly";

int i;

fd = open("/d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值