一张图说明linux 设备 节点 驱动 主设备号 和次设备号之间的关系

        Linux各种设备都以文件的形式存放在/dev目录下,称为设备文件。

        应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3。

 

        一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。例如一个嵌入式系统,有两个LED指示灯,LED灯需要独立的打开或者关闭。那么,可以写一个LED灯的字符设备驱动程序,可以将其主设备号注册成5号设备,次设备号分别为1和2。这里,次设备号就分别表示两个LED灯。

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设备节点和字符设备之间是一种映射关系设备节点是用户空间中访问设备的接口,而字符设备则是内核中代表设备的实体。设备节点和字符设备之间关系是通过设备号来建立的。 在 Linux 中,每个字符设备都有一个主设备号和一个次设备号。主设备号用于标识设备类型,次设备号用于标识同类型设备中的不同实例。当内核检测到一个字符设备时,它会根据设备主设备号和次设备号来确定设备类型,并创建相应的设备节点设备节点的名称通常由设备的类型和次设备号组成,例如 `/dev/tty0` 就是一个名为 `tty` 的字符设备的第 0 个实例。 设备节点和字符设备之间的关联是通过 `struct file_operations` 结构体中的函数指针来实现的。驱动程序可以通过实现这些函数来处理用户程序对设备节点的读写操作,例如 `open()`、`read()`、`write()`、`release()` 等函数。用户程序可以通过打开设备节点来获取与设备的通信权限,然后通过读写设备节点来与设备进行数据交换。内核会将用户程序的操作转发给相应的字符设备,以完成与设备的交互。 总之,设备节点和字符设备之间是一种映射关系设备节点是用户空间中访问设备的接口,而字符设备则是内核中代表设备的实体。设备节点和字符设备之间关系是通过设备号来建立的,而设备节点和字符设备之间的操作是通过 `struct file_operations` 结构体中的函数指针来实现的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值