- 20
- 0
- 约5.91千字
- 约 14页
- 2016-03-29 发布于重庆
- 举报
设备管理实验
实 验 报 告
课程名称_______设备管理实验______
学 院_______计算机工程学院____
班 级_________11软件1W______
学 号_______________
姓 名__________成杰 _________
2013年 12 月 20日
学 号姓名 成杰 实验日期 2013.12.20 实验名称 设备管理实验 实验目的:
理解Linux设备管理技术,学会Linux模块编程方法,掌握基本的Linux设备驱动程序设计。
实验内容:
设计一个简单的字符设备驱动程序,并进行测试。 实验原理:
1、Linux模块概述
尽管Linux内核是整体结构,但是Linux内核允许内核在运行时动态的向其中插入或从中删除代码。这些代码包括相关的函数、数据函数入口和函数出口被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块,简称模块。支持模块的好处是基本内核镜像可以尽可能的小,因为可选的功能和设备驱动程序可以利用模块形式再提供。
(1)模块的组成
模块是由一些函数、数据、初始化模块函数和清除模块函数组成,最小的模块必须包括初始化模块init_module和清除模块cleanup_module 这两个函数。在系统装载模块时调用init_module函数,卸载模块时调用cleanup_module函数。由于模块可以实现相当复杂的功能,故可以在模块中加入很多新函数以实现所期望的功能。在加载模块时,模块中的每个新函数都必须在内核中注册。同理,在模块被动态卸载时,该模块中的函数都必须从内核中注销。其中注册工作通常是在函数init_module中完成的。
(2)模块的加载与卸载
Linux模块有两种装载方式:静态装载(内核启动时装载)和动态装载(在内核运行过程中装载)。如在模块装载之前就调用了动态模块的一个函数,则此调用将失败;若模块已被装载,则内核就可以使用系统调用,并将其传递到模块中的相应函数。模块通常用来设备驱动程序。
动态加载模块的最简单方法是通过insmod命令。它以root身份运行,其主要功能是请求内核加载指定的模块。例如,可用下列命令加载模块:
Insmod module
需要加载的模块名称由参数module指定。类似地可用rmmod命令卸载一个模块,它同样需要以root身份运行,例如,卸载module模块可执行下列命令:
Rmmod module
系统提供了modprobe命令,它可以对模块依赖性的进行分析,错误智能检查,错误报告以及其他功能和选项,其命令格式如下:
Modprobe modulename[module parameter]
其中,modulename指定需要加载的模块名称,后面的参数将在模块加载时传入内核。
Modprobe命令不但会加载指定的模块,还会自动加载任何它所依赖的相关模块。它还可以用来在内核中卸载模块,例如;
Modprobe-r modulename
与rmmod命令不同,modprobe也会卸载给定模块所依赖的相关模块。其前提是这些相关模块没有被使用。
2.设备驱动程序的设计
Linux设备分为字符设备、块设备和网络设备。字符设备是不需要缓冲而直接读写的设备,如串口、键盘、鼠标等;块设备的访问通常需要缓冲来支持,以数据块为单位来读写,如磁盘设备等;网络设备是通过套接字来访问的特殊设备。
(1)设备驱动程序与内核和应用程序的接口
无论哪种类型的设备,Linux都是通过在内核中维护特殊的设备控制块来操作设备驱动程序。在字符设备和块设备的控制块中,有一个重要的数据结构file_operations,它是一个定义在Linux/fs.h头文件中的函数指针表,它包含了驱动程序提供给应用程序访问硬件设备的各种方法,该结构体的定义如下。
Struct file_operations
{
Int(*llseek)(struct inode *,struct file *,off_t,int);
Int(*read)(struct inode *,struct file *,char *,int);
Int(*write)(struct inode *,struct file *,void *,const char *,int);
Int(*readdir)(struct inode *,struct file *,void,select_table *);
Int(*select)(struct inode *,struct file *,int,select_table *);
Int(*ioctl)(struct inode *,struct file *,unsigned int
您可能关注的文档
最近下载
- 重庆市各地方周氏支族源流(1-170支族).doc VIP
- (高清版)B-T 6003.1-2022 试验筛 技术要求和检验 第1部分:金属丝编织网试验筛.pdf VIP
- (已压缩)TUCST007-2020房屋建筑与市政基础设施工程施工安全风险评估技术标准.docx VIP
- 2026年国家公务员考试申论真题及参考答案(考生回忆版).docx VIP
- 部编版语文二年级上册期中常考七大重点题型专项训练.docx VIP
- 机器人操作系统(ROS)及仿真应用 课件全套 第1--9章 Linux Ubuntu入门基础--- 基于ROS的服务机器人应用实例.ppt
- 压疮的预防及护理技术操作考核评分标准编辑.docx VIP
- 高温超导材料在量子计算中的应用前景.docx VIP
- 铺床术操作评分标准.doc VIP
- 2025年陕西高中学业水平合格性考试历史试卷真题(含答案) .pdf VIP
原创力文档

文档评论(0)