设备管理实验.docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档