- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux设备与分类
Linux 设备
1.1.1 Linux 设备和分类
Linux 系统中的设备可以分为字符设备、块设备和网络设备这3 类。
字符设备:字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,
相应的I/O 操作立即发生。Linux 系统中很多设备都是字符设备,如字符终端、串口、键盘、
鼠标等。在嵌入式Linux 开发中,接触最多的就是字符设备以及驱动。
块设备:块设备是Linux 系统中进行I/O 操作时必须以块为单位进行访问的设备,块设
备能够安装文件系统。块设备驱动会利用一块系统内存作为缓冲区,因此对块设备发出读写
访问,并不一定立即产生硬件I/O 操作。Linux 系统中常见的块设备有如硬盘、软驱等等。
网络设备:网络设备既可以是网卡这样的硬件设备,也可以是一个纯软件设备如回环设
备。网络设备由Linux 的网络子系统驱动,负责数据包的发送和接收,而不是面向流设备,
因此在Linux 系统文件系统中网络设备没有节点。对网络设备的访问是通过socket 调用产生,
而不是普通的文件操作如open/close 和read/write 等。
1.1.2 设备节点和设备号
1. 设备节点
设备(包括硬件设备)在Linux 系统下,表现为设备节点,也称设备文件。设备文件是
一种特殊的文件,它们存储在文件系统中(通常在/dev 目录下),但它们仅占用文件目录项
而不涉及存储数据。事实上,它们仅仅记录了其所属的设备类别、主设备号和从设备号等设
备相关信息。
来看两个典型的设备文件的详细信息:
chenxibing@gitserver-zhiyuan:~$ ls -l /dev/ttyS0 /dev/sda 1
brw-rw 1 root disk 8, 1 2011-01-07 17:48 /dev/sda1
crw-rw 1 root dialout 4, 64 2011-01-07 17:48 /dev/ttyS0
以/dev/ttyS0 的信息为例,对其中几项进行说明,参考图0.1。
crw-rw 1 root dialout 4, 64 2011-01-07 17:48 /dev/ttyS0
访问权限 次设备号
设备类型 主设备号 设备文件名
图0.1 设备文件说明
/dev/ttyS0 是设备节点名称,c 表示该设备是字符设备,主设备号为4 ,从设备号为64,
该设备节点对应于系统的串口0 。
设备分为字符设备、块设备和网络设备,而网络设备没有设备节点,所以设备文件基
本上就分为字符设备文件和块设备文件两类,在设备节点属性中,分别以c 和b 来表示,即
c 表示字符设备节点文件,b 表示块设备节点文件。
当程序打开一个设备文件时,内核就可以获取对应设备的设备类型、主设备号和次设备
号等信息,内核也就知道了程序需要操作使用哪个设备驱动程序。在程序随后对这个文件的
操作都会调用相应的驱动程序的函数,同时把从设备号传递给驱动程序。
2 . 设备编号
设备编号由主设备号和从设备号构成。在Linux 内核中,使用dev_t 类型来保存设备编
号。在2.6 版本的Linux 内核中,dev_t 是一个32 位数,高12 位是主设备号,低20 位是次
设备号。
主设备号标识设备对应的驱动程序,告诉Linux 内核使用哪个驱动程序驱动该设备。如
果多个设备使用同一个驱动程序,则它们拥有相同的主设备号。例如/dev/ttyS0~3 这4 个设
备,拥有相同的主设备号4 ,说明它们使用同一份驱动:
chenxibing@gitserver-zhiyuan:~$ ls -l /dev/ttyS*
crw-rw 1 root dialout 4, 64 2011-01-07 17:48 /dev/ttyS0
crw-rw 1 root dialout 4, 65 2011-01-07 17:48 /dev/ttyS1
crw-rw 1 root dialout 4, 66 2011-01-07 17:48 /dev/ttyS2
crw-rw 1 root dialou
文档评论(0)