我确实对主要和次要设备编号的概念进行了一些澄清。我理解以下概念。
dev_t
类型的 MAJOR 和 MINOR 编号相关联。register_chrdev_region
我的问题是这些数字到底用在哪里。据我检查,它引导我得到以下答案
内核使用此编号来识别与设备关联的驱动程序
任何人都可以帮我解决这个问题吗?
执行
ls -l /dev/*
将显示类似于 的内容
...
crw-rw---T+ 1 root audio 116, 33 sept. 21 09:19 timer
...
116, 33
是该特定设备的主要和次要。
主要设置设备的类型,通常是与其关联的驱动程序。次要列出该类型的第一个、第二个、第三个……设备。
每个主要号码只有一名司机,多个次要号码由其处理。
当然,现在可以动态分配这些数字。
简单来说,
Major Number 告诉您使用哪个驱动程序。该号码是在注册设备驱动程序时分配的。
次要数字告诉您确切使用该设备类型的哪个设备。
假设硬盘可能有四个分区。每个分区都有单独的次要编号,而只有一个主要编号。因为所有分区都使用相同的存储驱动程序。
欲了解更多详情,http://www.makelinux.net/ldd3/
主设备号和次设备号告诉内核如何访问设备。
为由同一设备驱动程序控制的所有设备分配一个公共主设备号。 次要编号有助于区分使用相同设备驱动程序的确切设备类型/控制器。
在linux中,用户空间和内核空间之间的通信是通过位于
/dev
目录中的设备文件进行的
如果用户想要将数据发送到硬件设备,只需应用程序将打开设备文件并写入缩进数据
现在的问题是设备文件如何找到合适的驱动程序?
这里出现设备号,用于查找关联的驱动程序 设备编号是主要编号和次要编号的组合
主设备号:用于标识设备类型,例如 i2c 设备或 spi 设备。 次要号码:用于识别特定驱动程序
https://linuxdeveloper.quora.com/What-is-Device-Number-in-Linux这有详细解释。