新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Linux设备驱动开发之:设备驱动概述

嵌入式Linux设备驱动开发之:设备驱动概述

作者: 时间:2013-09-13 来源:网络 收藏

本文引用地址://www.cghlg.com/article/257112.htm

通过文件属性可以查看它们是哪种设备文件(字符设备文件或块设备文件)。

$ls–l/dev

crw-rw----1rootuucp4,6408-3022:58ttyS0/*串口设备,c表示字符设备*/

brw-r-----1rootfloppy2,008-3022:58fd0/*软盘设备,b表示块设备*/

n 网络设备通常是指通过网络能够与其他主机进行数据通信的设备,如网卡等。

内核和网络程序之间的通信调用一套数据包处理函数,它们完全不同于内核和字符以及块程序之间的通信(read()、write()等函数)。Linux网络设备不是面向流的设备,因此不会将网络设备的名字(例如eth0)映射到文件系统中去。

对这3种设备文件编写驱动程序时会有一定的区别,本书在后面会有相关内容的讲解。

11.1.3设备号

设备号是一个数字,它是设备的标志。就如前面所述,一个设备文件(也就是设备节点)可以通过mknod命令来创建,其中指定了主设备号和次设备号。主设备号表明设备的类型(例如串口设备、SCSI硬盘),与一个确定的驱动程序对应;次设备号通常是用于标明不同的属性,例如不同的使用方法、不同的位置、不同的操作等,它标志着某个具体的物理设备。高字节为主设备号,底字节为次设备号。

例如,在系统中的块设备IDE硬盘的主设备号是3,而多个IDE硬盘及其各个分区分别赋予次设备号1、2、3…

$ls–l/dev

crw-rw----1rootuucp4,6408-3022:58ttyS0/*主设备号4,此设备号64*/

11.1.4驱动层次结构

Linux下的程序是内核的一部分,运行在内核模式下,也就是说设备驱动程序为内核提供了一个I/O接口,用户使用这个接口实现对设备的操作。图11.1显示了典型的Linux输入/输出系统中各层次结构和功能。

图11.1Linux输入/输出系统


层次结构和功能

Linux设备驱动程序包含中断处理程序和设备服务子程序两部分。

设备服务子程序包含了所有与设备操作相关的处理代码。它从面向用户进程的设备文件系统中接受用户命令,并对设备控制器执行操作。这样,设备驱动程序屏蔽了设备的特殊性,使用户可以像对待文件一样操作设备。

设备控制器获得系统服务有两种方式:查询和中断。因为Linux的设备驱动程序是内核的一部分,在设备查询期间系统不能运行其他代码,查询方式的工作效率比较低,所以只有少数设备如软盘驱动程序采取这种方式,大多设备以中断方式向设备驱动程序发出输入/输出请求。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭