专栏中心

EEPW首页 > 专栏 > Linux设备驱动的分类

Linux设备驱动的分类

发布人:嵌入式Linux 时间:2023-01-05 来源:工程师 发布文章

Linux内核驱动按照访问方式,可以分为以下三类

1. 字符设备驱动

字符设备是指存取时没有缓存,能够像访问字节流(类似文件)的方式一样被访问的设备,最终在文件系统中以设备文件的形式存在。

常见的字符设备:鼠标、键盘(IO设备),LCD、Camera(帧缓冲设备)等。

2. 块设备驱动

块设备和字符设备的区别在于块设备有缓存支持的,块设备必须能够随机存取,内核内部的数据管理方式是按照块为最小单位管理的,数据块一般为512字节、1024字节等。当然,访问字符设备和块设备的操作接口也是不一样的。

常见的块设备:硬盘、光盘、SD卡、emmc、flash等存储设备。


块设备的使用是先mount挂载,然后进行访问:

mount -t vfat /dev/mmcblk0p1 /mnt/

将sd卡挂载到/mnt目录下,然后访问/mnt目录就是访问sd卡里面的内容。

应用程序如何访问字符设备和块设备:

字符设备和块设备在用户空间的/dev目录下,都有一个对应的设备文件(一切皆文件),应用程序通过系统函数调用open、read、write等来操作设备文件从而访问设备驱动来操作硬件设备。在终端输入ls /dev -l 可以看到设备文件:

字符设备文件-鼠标:

crw-r----- 1 root root 13, 33 mouse1

块设备文件硬盘:

brw-rw---- 1 root disk 8, 1 sda1

首字符c和b分别表示char和block即字符设备和块设备,(13,33)和(8,1)代表的是设备号。其中13和8表示这两个设备的主设备号,用于标识设备的类型;33和1表示这两个设备的次设备号,用于标识同类设备的不同设备个体,也就是说两个同类设备,它们的主设备号可以一样,但是次设备号不能一样,用来区分它们。

应用程序访问设备流程是,根据用户空间的设备文件,找到对应的设备号,根据设备号去内核找到对应的设备驱动,然后通过设备驱动操作硬件设备。

3. 网络设备驱动

网络设备在/dev/下没有对应的设备文件,必须通过socket套接字来访问。

最常见的网络设备:网卡


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 设备驱动

相关推荐

基于嵌入式Linux 的I2C设备驱动程序的分析

嵌入式系统 2013-11-14

嵌入式Linux设备驱动开发之:按键驱动程序实例

VxWorks下AD/DA驱动系统设计及测试

XP下USB接口转RS232设备驱动

资源下载 2007-12-23

五分钟学会Windriver

嵌入式Linux设备驱动开发之:中断编程

RS485设备驱动

Linux设备驱动之I/O端口与I/O内存

嵌入式Linux设备驱动开发之:实验内容——test驱动

ARM-Linux-IIC 设备的添加与驱动实现

嵌入式Linux设备驱动开发之:本章小结

如何编写 Linux 设备驱动程序

监控软件设备驱动程序的编程与实现

嵌入式Linux设备驱动开发之:块设备驱动编程

更多 培训课堂
更多 焦点
更多 视频

技术专区