700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 字符设备 块设备 网络设备详解

字符设备 块设备 网络设备详解

时间:2018-08-23 22:59:43

相关推荐

字符设备 块设备 网络设备详解

字符设备、块设备、网络设备

设备模型

设备驱动的代码量占内核程序的50%

设备模型的意义:

为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热拔插处理、电源管理等,Linux内核提出了设备模型(也称作Driver Model)的概念。设备模型将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口。驱动的开发,就简化为对内核所规定的数据结构的填充和实现。

因为硬件设备多种多样,使得设备驱动程序繁多,设备模型将硬件设备分类,抽象出一套标准的数据结构和接口。

一、字符设备

1.特点

一个字节一个字节读写的设备,

读取数据需要按照先后数据(顺序读取)

常见的字符设备有鼠标、键盘、串口、控制台和LED设备

每个字符设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作字符设备。

2.上层应用如何调用底层驱动?

1.应用层的程序open(“/dev/xxx”,mode,flags)打开设备文件,进入内核中,即虚拟文件系统中。

2.VFS层的设备文件有对应的struct inode,其中包含该设备对应的设备号,设备类型,返回的设备的结构体。

3.在驱动层中,根据设备类型和设备号就可以找到对应的设备驱动的结构体,用i_cdev保存。该结构体中有很重要的一个操作函数接口file_operations。

4.在打开设备文件时,会分配一个struct file,将操作函数接口的地址保存在该结构体中。

5.VFS层 向应用层返回一个fd,fd是和struct file相对应,这样,应用层可以通过fd调用操作函数,即通过驱动层调用硬件设备了。

二、块设备

1.特点

数据以固定长度进行传输,比如512K

从设备的任意位置(可跳)读取,但实际上,块设备会读一定长度的内容,而只返回用户要求访问的内容,所以随机访问实际上还是读了全部内容。

块设备包括硬盘、磁盘、U盘和SD卡等

每个块设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作块设备。

块设备可以容纳文件系统,比如磁盘

三、网络设备

1.特点

面向报文而不是面向流的,因此将网络接口映射到文件系统的节点比较困难

内核调用一套和数据包相关的函数,而不是read,write。

网络接口没有像字符设备和块设备一样的设备号,只有唯一的名字,如eth0,eth1

主要通过socket操作,打开通常用命令行,

2.关系

网络协议接口层:网络层,IP

网络设备接口层:将协议和各种网络驱动连接在一起,这一层提供一组通用函数供底层网络设备驱动使用。

网络驱动接口层:数据链路层,提供对物理层访问的设备驱动程序,这可以是各种介质,例如串口链路或以太网设备。包括LLC和MAC层

物理层:PHY层

————————————————

版权声明:本文为CSDN博主「qq_27840681」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:/qq_27840681/article/details/77567094

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。