实验六 实现一个基于内存映射的设备驱动程序
实验环境
操作系统版本:ubuntu-14.04.1-desktop-i386
下载连接:http://old-releases.ubuntu.com/releases/trusty/ubuntu-14.04.1-desktop-i386.iso
实验课件及源码:https://wwe.lanzouw.com/ilBQnyrwffi
一.实验目的
1、掌握Linux设备驱动程序基本原理
2、掌握Linux字符设备驱动的创建流程
3、掌握Linux字符设备驱动的常见函数
4、理解Linux设备驱动的内存映射机制
二.实验内容
1、通过添加内核模块来实现一个基于内存映射的杂项设备驱动程序
三.实验步骤
1、通过make编译miscdev_map.c文件
2、将编译好的miscdev_map.ko文件插入到系统内核中并创建设备节点
3、编译并运行miscdev_maptest.c文件,查看实验结果
四.实验总结
此次实验的目的是掌握Linux设备驱动程序基本原理,掌握Linux字符设备驱动的创建流程,掌握Linux字符设备驱动的常见函数,理解Linux设备驱动的内存映射机制。由于设备也可以看做是一种文件,所以设备文件也支持基于内存映射的数据传输方式。
设备驱动程序在调用其mmap函数完成从内核空间到用户空间的映射时,必须要建立相应的页表。建立页表可以使用remap_pfn_range函数。remap_pfn_range函数的功能是根据物理帧号建立页表,并映射到用户进程空间。
通过这次实验使我掌握了通过添加内核模块来实现一个基于内存映射的杂项设备驱动程序。