简单的linux 驱动

来源:互联网 发布:华为ar1200s mac绑定 编辑:程序博客网 时间:2024/05/17 02:59

    • Linux 驱动框架
    • 实现功能
    • 代码
    • 测试


1. Linux 驱动框架

<待补充>

2. 实现功能

做这个驱动的最主要目的是熟悉linux 驱动的写法和框架,所以实现的功能比较少。这个驱动可以替代/dev/mem,实现了最基本的open、close、mmap 和munmap(这个不是自己实现的,linux 默认接手了这个操作),用户可以自己mknod 一个文件,然后加载我的驱动,之后要操作内存的时候直接访问这个文件就可以了。好处就是对内存、外设的访问的内部过程可以自己控制,并且在操作系统屏蔽了访问/dev/mem 的情况下还可以直接访问内存。

3. 代码

代码其实就俩文件,memory_device.cmemory_sysfs.c ,分别实现了memory 的基本操作和在/sys 目录下创建配置文件的功能,当然了,memory_sysfs.c 其实是可以合并到 memory_device.c 里面的,不过为了学习的目的我还是分解出来了,其实我还打算把关于内存操作的代码,也就是struct file_operation 的代码单独放到一个文件里面,这样代码就更清晰了,不过偷懒没实现,以后有时间了就把它分解出来。

memory_device.c

int main(void )
{
printf("占位\n");
return 0;
}

memory_sysfs.c

int main(void )
{
printf("占位\n");
return 0;
}

4. 测试

测试比较简单,假设内存总共1G,我就分别在没256MB 空间里面mmap 出1MB 地址空间进行操作。先读出内存的原始内容,然后在写进自己的的数据,再读出来。

注意,我是在开发板上做实验的,所以内存的使用情况我很清楚,所以随便读写不会有问题的,但是如果你直接在PC 上操作一定要注意不要影响到OS 和其他程序的内存,不然会挂掉的。


以下无正文

0 0
原创粉丝点击