各种驱动.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
各种驱动

字符、块设备和网卡驱动 字符设备驱动实验 【实验目的】 通过本实验的学习,了解Linux操作系统中的字符设备驱动程序结构,并能编写简单的字符设备的驱动程序以及对所编写的设备驱动程序进行测试,最终了解Linux操作系统如何管理字符设备。 【准备知识】 字符设备驱动程序主要包括初始化字符设备、字符设备的I/O调用和中断服务程序。在字符设备驱动程序的file_operations结构中,需要定义字符设备的基本入口点。 open()函数; release()函数 read()函数 write()函数 ioctl()函数 select()函数。 另外,注册字符设备驱动程序的函数为register_chrdev()。register_chrdev() 原型如下: int register_chrdev(unsigned int major, //主设备号 const char *name, //设备名称 struct file_operations *ops); //指向设备操作函数指针 其中major是设备驱动程序向系统申请的主设备号。如果major为0,则系统为该驱动程序动态分配一个空闲的主设备号。name是设备名称,ops是指向设备操作函数的指针。 注销字符设备驱动程序的函数是unregister_chrdev(),原型如下: int unregister_chrdev(unsigned int major,const char *name); 字符设备注册后,必须在文件系统中为其创建一个设备文件。该设备文件可以在/dev目录中创建,每个设备文件代表一个具体的设备。 使用mknod命令来创建设备文件。创建设备文件时需要使用设备的主设备号和从设备号作为参数。 阅读教材相关章节知识,了解字符设备的驱动程序结构。 【实验内容】 根据教材提供的实例。编写一个简单的字符设备驱动程序。要求该字符设备包括open()、write()、read()、ioctl()和release()五个基本操作,并编写一个测试程序来测试所编写的字符设备驱动程序。 【实验指导】 1、驱动程序编写后,编写一个Makefile文件来编译此驱动程序。 Makefile格式如下: obj-m:=mydev.o all: make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean 2、使用#insmod ***.ko来安装此驱动程序。并通过#cat /proc/devices 命令查看新加载设备的设备号。 3、接下来需要创建设备mknod /dev/*** c 254 0 4、最后运行测试文件来测试驱动程序。 块设备驱动实验 【实验目的】 通过本实验的学习,了解Linux操作系统中的块设备驱动程序结构,并能编写简单的块设备的驱动程序以及对所编写设备驱动程序进行测试,最终了解Linux操作系统如何管理块设备。 【准备知识】 块设备驱动程序主要包括初始化块设备、块设备的I/O调用和中断处理程序。块设备的I/O调用ioctl()、open()、release()与字符设备类似。关于块设备的数据读取,需要使用request机制来实现。块设备驱动程序的入口点包括以下几个函数: request()函数(处理请求函数) ioctl函数 media_change函数 revalidate_disk函数 块设备驱动程序的注册可以通过调用函数register_blkdev()来完成。register_blkdev()的原型如下: int register_blkdev(unsigned int major, //主设备号 const char *name, //设备名称); 注销块设备驱动程序的函数是unregister_blkdev(),原型如下: int unregister

文档评论(0)

cbf96793 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档