没有合适的资源?快使用搜索试试~ 我知道了~
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。
资源推荐
资源详情
资源评论
如何编写 Linux 设备驱动程序
是 操作系统的一种变种,在 下编写驱动程序的原理和思想完全类似于其他的 系统,但它
或 环境下的驱动程序有很大的区别。在 环境下设计驱动程序,思想简洁,操作方便,功能也很强大,
但是支持函数少,只能依赖 中的函数,有些常用的操作要自己来编写,而且调试也不方便。
以下的一些文字主要来源于 , 的 ,
, !",还有清华 # 上的有关 的一些资料。
一、的概念
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动
程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件
一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能$
%。对设备初始化和释放。
&。把数据从内核传送到硬件和从硬件读取数据。
'。读取应用程序传送给设备文件的数据和回送应用程序请求的数据。
(。检测和处理设备出现的错误。
在 操作系统下有三类主要的设备文件类型,一是字符设备,二是块设备,三是网络设备。字符设备和块设备
的主要区别是$在对字符设备发出读)写请求时,实际的硬件 )* 一般就紧接着发生了,块设备则不然,它利用一块系统
内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际
的 )* 操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的 +, 时间来等待。
已经提到,用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都都有其文件属性-).,表示是字符
设备还是块设备/另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同
一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他们。设备文件的的主设备号必须与
设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序。
最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度。也就是说,系统必须
在你的驱动程序的子函数返回后才能进行其他的工作。如果你的驱动程序陷入死循环,不幸的是你只有重新启动机器了,
然后就是漫长的 0。
读)写时,它首先察看缓冲区的内容,如果缓冲区的数据
如何编写 操作系统下的设备驱动程序
1
二、实例剖析
我们来写一个最简单的字符设备驱动程序。虽然它什么也不做,但是通过它可以了解 的设备驱动程序的工
作原理。把下面的 + 代码输入机器,你就会获得一个真正的设备驱动程序。
23445*4678#*544
29):;
29):;
4<=> #4877#7?
这一段定义了一些版本信息,虽然用处不是很大,但也必不可少。@ 说所有的驱动程序的开头都要包含
9)3:;,一般来讲最好使用。
由于用户进程是通过设备文件同硬件打交道,对设备文件的操作方式不外乎就是一些系统调用,如
A,,,B, 注意,不是 0A, 0,但是如何把系统调用和驱动程序关联起来呢/这需要了
解一个非常关键的数据结构:
34A
C
-D.-D,3D, E4,.?
-D.-D,3D, ,.?
-D.-D,3D, E4,.?
-D.-D,3D, D,.?
-D.-D,3D, ,4D.?
-D.-D,3D, ,.?
-DA.-D,3D, 44D.?
-DA.-D,3D.?
资源评论
yanyunfei2010
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功