三九宝宝网宝宝教育计划总结

如何编写Linux操作系统下的设备驱动程序

02月13日 编辑 39baobao.com

[编写一个猜数字游戏的程序]/*利用随机函数生成0---9之间的一个整数,从键盘输入数字猜该数, 每次提示输入的数字与生成的数字之间的大小关系,并统计猜数的次数? 徊轮泻笙允靖檬?⒉率?拇问?暗燃?三次以内为优秀,...+阅读

Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和

思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的

区别.在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是

支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调

试也不方便.本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,

获得了一些经验,愿与Linux fans共享,有不当之处,请予指正.

以下的一些文字主要来源于khg,johnsonm的Write linux device driver,

Brennan's Guide to Inline Assembly,The Linux A-Z,还有清华BBS上的有关

device driver的一些资料. 这些资料有的已经过时,有的还有一些错误,我依

据自己的试验结果进行了修正.

一. Linux device driver 的概念

系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统

内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这样

在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件

一样对硬件设备进行操作.设备驱动程序是内核的一部分,它完成以下的功能:

1.对设备初始化和释放.

2.把数据从内核传送到硬件和从硬件读取数据.

3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据.

4.检测和处理设备出现的错误.

在Linux操作系统下有两类主要的设备文件类型,一种是字符设备,另一种是

块设备.字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际

的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,

当用户进程对设备请求读/写时,它首先察看缓冲区的内容,如果缓冲区的数据

能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际

的I/O操作.块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间

来等待.

已经提到,用户进程是通过设备文件来与实际的硬件打交道.每个设备文件都

都有其文件属性(c/b),表示是字符设备还蔤强樯璞?另外每个文件都有两个设

备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个

设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分

他们.设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号

一致,否则用户进程将无法访问到驱动程序.

最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是

抢先式调度.也就是说,系统必须在你的驱动程序的子函数返回后才能进行其他

的工作.如果你的驱动程序陷入死循环,不幸的是你只有重新启动机器了,然后就

是漫长的fsck

以下为关联文档:

编写一个猜数游戏程序static void Main(string[] args) { Random r = new Random(); int anwser = r.Next(0, 10); Console.WriteLine("1. Please input a number between 0 and 10."); Console.Wr...

用java编写一个图书馆图书借阅管理系统--------------------------------------------------- 给你修改了三个地方: 1.borrowBooks方法中,将System.out.println("你要借吗?"); 改为: System.out.println("你要借吗?输入1表示...

Java编写图书管理系统使用XML存储import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import org.dom4j.Document; im...

怎么编写关于建筑施工的安全月报的文章安全员的工作很枯燥,也不好做。因为施工方对安全这块大部分都是搪塞而过,敷衍了事,为啥?减少资金投入呗,像有的时候安全检查,好多安全设施都是从其他地方借来应付检查的。检查过后...

土地整理项目工程特点与难点如何编写采取各种措施,对田、水、路、林、村综合整治,提高耕地质量,增加有效耕地面积,改善农业生态条件和生态环境的行为。 2、广义土地整理一般可分为两大类,即农地整理与市地整理。根据...

如何编写一个简单的linux内核模块和设备驱动程序Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想...

在计算机操作系统中什么是块设备驱动程序Linux device driver 的概念 系统调用是***作系统内核和应用程序之间的接口,设备驱动程序是***作系统 内核和机器硬件之间的接口.设备驱动程序为应用程序屏蔽了硬件的细节,这...

Win32设备驱动程序的体系结构是怎样的目前,由于需要支持新的业务和新的PC外部设备类型对驱动程序开发造成了新的挑战。新型总线增加了设备的数量和对设备驱动程序的需求。设备上各种功能的不断增加使驱动程序的开...

Linux有哪三类设备驱动程序(1)块设备块设备以数据块的形式存放数据,如NAND Flash以页为单位存储数据,并采用mount方式挂载块设备。块设备还需通过建立Flash文件系统,如YAFFS、JFFS等,用于规范文件和目录在...

推荐阅读
图文推荐