首页 > 其他 > 详细

设备驱动

时间:2015-12-10 09:32:43      阅读:284      评论:0      收藏:0      [点我收藏+]

    什么是驱动?驱动,通俗来说就是“驱使硬件设备行动”。驱动是一种可以使计算机和设备通信的特殊程序(就是一种程序);可以说是相当于硬件的接口,操作系统通过这个接口,可以不需要过多地去了解底层已经而可以直接操作硬件工作。驱动是硬件和系统之间的桥梁。

    Linux设备驱动和整个系统之间的关系如下图技术分享

在系统中,上层是应用程序,由c库提供支持,中间是操作系统,其中含有操作系统内核,最底层是硬件。在系统正常运行时,应用程序调用c库支持的函数接口,一层一层往下调用:通过系统调用接口使程序陷入内核态执行,调用到相对应的驱动程序,由相关的驱动程序去操作硬件实现具体功能。例如一个在应用程序中利用open()函数打开一个磁盘文件:open会调用内核中的sys_open,最后会调用驱动程序中file_operations结构体中的open对应函数去对磁盘进行操作,read、write也是一样,每一个系统函数都在底层驱动中有一个与之对应的函数,完成相对应的操作。通过这样的封装和层层对应调用,使得应用程序可以在不需要了解底层硬件的情况下也可以操作硬件。

    Linux设备驱动主要分为三类:字符设备驱动,块设备驱动、网络设备驱动。

字符设备:是指那些必须以串行顺序依次今进行访问的设备。如:触摸屏、鼠标

块设备:可以用任意顺序进行访问,以块为单位进行操作。如:硬盘

网络设备:是完成用户数据包在网络媒介上发送和接收的设备。

字符设备和块设备在/dev目录下都有对应的文件,用户程序通过这个文件可以操作对应硬件,体现了linux下“一切都是文件”的思想。网络设备最终是使用套接字(socket)完成与网络设备的接口,跟前两种设备有些不一样。

本文出自 “君峰俊宇” 博客,请务必保留此出处http://10274409.blog.51cto.com/10264409/1721333

设备驱动

原文:http://10274409.blog.51cto.com/10264409/1721333

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!