您的位置:首页 > 运维架构 > Linux

linux驱动学习第一天(驱动的作用)

2012-02-15 10:30 295 查看
一、简述设备驱动的作用

任何一个计算机系统的运行都是由系统中的软硬件共同作用的结果,硬件是底层基础,是所有软件运行的平台,代码终究会落实为硬件上的组合逻辑和时序逻辑。软件实现了具体的应用,它按照不同的业务需求而设计,完成用户的要求。

但是软硬件之间不应该互相渗透入对方的领地。应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须透明的呈现给他。

设备驱动的作用是驱使硬件设备行动。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备的寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备能记录文件和数据。

设备驱动充当了硬件和应用软件之间的纽带。它使得应用软件只需要系统软件的应用编程接口(API)就可以让硬件去完成要求的工作。在没有操作系统的情况下,工程师可以根据硬件设备的特点自行定义接口,在有操作系统的情况下,驱动的结构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计驱动,这样驱动才能良好的整合入操作系统的内核。

驱动程序沟通着硬件和应用软件,驱动工程师则沟通着硬件工程师和软件工程师。当系统中存在操作系统的时候,驱动变成了连接硬件和内核的桥梁。操作系统的存在势必要求设备驱动附加更多的代码和功能,把单一的“驱使硬件设备的行动”变成了操作系统和硬件交互的模块,它对外呈现操作系统的API,不再给应用软件工程师直接提供接口。操作系统给驱动制造的麻烦给上层应用提供了便利。

二、linux设备驱动的分类及特点

计算机系统的硬件由CPU、存储器和外设组成。驱动针对的对象都是存储器和外设。linux将存储器和外设分为3个基础大类:字符设备、块设备和网络设备。

字符设备指那些必须以串行顺序依次进行访问的设备,块设备可以用任意顺序进行访问,以块为单位进行操作。字符设备不经过系统的快速缓冲,块设备经过系统的快速缓冲。网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。除网络设备外,字符设备和块设备都被映射到linux文件系统的文件和目录,通过文件系统的系统调用接口open()、write()、read()、close()等即可访问字符设备和块设备。

三、linux设备驱动的重点和难点

编写设备驱动要求工程师必须有良好的硬件基础

编写设备驱动要求工程师必须有非常好的c语言基础

编写linux设备驱动要求工程师必须有一定的linux基础

编写linux设备驱动要求工程师必须有非常好的多任务并发控制和同步的基础。

动手实践!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: