实验八Linux模块和设备驱动程序
18页1、实验八 Linux 模块和设备驱动程序一. 实验目的1. 通过实验了解 linux 下文件驱动程序的框架;2. 通过驱动程序的编写,理解linux对设备管理的方式;3. 理解设备驱动程序中与内核交互部分。二. 实验指导Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想 完全类似于其他的Unix系统,但它和dos或window环境下的驱动程序有很大 的区别。1. Linux 设备在 Linux 中,用户进程不能直接对物理设备进行操作,必须通过系统调用向 内核提出设备请求,由内核实现对物理设备的分配并完成进程请求的操作。在内 核中实现对设备进行操作的一组程序称为设备驱动程序。系统调用是操作系统内 核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接 口,为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文 件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内 核的一部分,它完成以下的功能:1).对设备初始化和释放2)把数据从内核传送到硬件和从硬件读取数据3)读取应用程序传送给设备文件的数据和回送应用程序请求的数 据
2、4)检测和处理设备出现的错误在Linux系统把设备分为3类:块设备、字符设备和网络设备。每类设备都 有独特的管理控制方式和不同的驱动程序。字符设备:以字符为单位进行输入输出的设备,并且以字符为单位对设备中 的信息进行组织和处理。包括:显示器、键盘、打印机、绘图仪、串口等。通常 对字符设备传送的数据是顺序处理。字符设备以访问文件的方式访问。块设备:以一定大小的数据块为单位进行输入输出,设备中的数据也以物理 块为单位进行组织和管理。块设备可以采取随机存取方法。包括硬盘、软盘、光 盘、RAM盘等。通常作为外存使用,Linux文件系统建立在外存中,块设备通 过文件系统访问。为匹配 CPU 与块设备间的速度差异,通常使用缓冲区传送数 据。网络设备:与网络通信线路连接的网络适配器。Linux使用套接口以文件I/O 方式提供对网络数据的访问。本实验主要介绍字符设备驱动程序的编写方法。2. 有关设备操作的系统调用在 Linux 系统中,应用程序操作设备就是访问设备对应的设备文件,与操作普通文件的访问方式基本相似。设备访问的系统调用主要如下:打开设备系统调用open:实现分配和打开设备的功能;读设备系统
3、调用read:从设备读取数据;写设备系统调用write:向设备写数据;设备控制系统调用ioctl:控制设备的工作模式和状态; 关闭设备系统调用close:释放设备,将设备归还系统。3. Linux 设备驱动程序的构成Linux 系统的每个系统调用都有一个相应的内核函数实现该系统调用的功 能。Linux设备驱动程序需要实现的内核函数由以下结构定义:struct file_operations int (*lseek) (struct inode * ,struct file *, off_t ,int);int (*read) (struct inode * ,struct file *, char * ,int);/读例程,实现读系统调用int (*write) (struct inode * ,struct file *, const char * ,int); /写例程, 实现读写系统调用int (*readdir) (struct inode * ,struct file *, void *, filldir * ,int);int (*select) (struct inode
4、 * ,struct file *, int ,select_table *);int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long); / 控制例程,实现设备控制int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *);/释放例程,设程,打开设备int (*release) (struct inode * ,struct file *);备释放int (*fsync) (struct inode * ,struct file *); int (*fasync) (struct inode * ,struct file *,int); int (*check_media_change) (kdev_t dev);int (*revalidate) (dev_t dev);可根据实际情况只实现必不可少的部分内核函数。如果int ini t_module(void)/ 驱动程序可以按照两种方式编译。一种是编译进ke rn
《实验八Linux模块和设备驱动程序》由会员新**分享,可在线阅读,更多相关《实验八Linux模块和设备驱动程序》请在金锄头文库上搜索。
浅谈小学美术课程教学策略
综合题研究之代数与图形综合问题(一)(课标版-原创).doc
速腾沈阳试乘试驾活动细案.doc
华中农业大学有机化学活页练习
2022年ACCA英国注册会计师考试模拟卷含答案第133期
幼儿园文明礼仪教育工作总结范文
校园直通车栏目广播稿.docx
一年级音乐第六单元教案
干混砂浆与传统砂浆成本比较
2018年七年级英语上册Unit1Myname’sGina第四节短文改错练习新版人教新目标版
《计算机控制系统》课程设计报告.doc
精选学校庆六一儿童节活动总结范文3
滑动变阻器范围练习题
支队长就职演讲稿范文
现代企业管理理念(最新).doc
2017很成熟很现实的说说精辟的句子一针见血很现实很有道理的话.doc
电子办税服务厅--企业年度关联业务往来报告表操作手册.doc
幼儿园优秀教师演讲稿.docx
2.如何留住你的顾客(1).doc
月日教学设计.docx
2023-12-25 10页
2023-07-23 2页
2024-01-29 11页
2023-04-05 6页
2023-01-22 11页
2022-10-07 10页
2022-07-21 2页
2023-09-14 23页
2023-05-02 2页
2023-10-15 11页