linux 下 驱动与设备的名字 主副设备号的区别
/proc/devices目录
cat /proc/devicesCharacter devices:1 mem4 /dev/vc/04 tty5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input29 fb81 video4linux89 i2c90 mtd
108 ppp
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
207 ttymxc
216 rfcomm
226 drm
247 sr_501_drv
248 icm20608
249 ttyLP
250 iio
251 watchdog
252 ptp
253 pps
254 rtcBlock devices:1 ramdisk
259 blkext7 loop8 sd31 mtdblock65 sd66 sd67 sd68 sd69 sd70 sd71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
/proc/devices
中的每一行都对应一个设备的信息,格式为<主设备号><设备类型>
。其中,主设备号是一个整数,它用来标识设备驱动程序,而设备类型是一个字符串,表示设备的类型。
这个就是一个设备节点,用于将帮应用找到驱动,跟驱动
对应,跟主设备号
对应
在函数中,通过
major = register_chrdev(0, "sr_501_drv", &gpio_key_drv);
sr_501_drv
就是名字,可以在/proc/devices
中找到
linux里面,同一个驱动下面的所有设备主设备号都是相同的
一个驱动对应一个主设备号
/dev/XXXX
ls /dev/sr_501_dev -lcrw------- 1 root root 247, 0 Jul 21 18:40 /dev/sr_501_dev
247为主设备号,0为次设备号,对应一个设备
在代码中
device_create(gpio_class, NULL, MKDEV(major, 0), NULL, "sr_501_dev");
sr_501_dev 就是设备名字
主副设备号的区别
在Linux中,每个设备都有一个主设备号和一个副设备号,这些设备可以是硬件设备,也可以是虚拟设备,例如网络接口、磁盘驱动器等。主设备号和副设备号可以用来唯一标识设备。
主设备号是一个整数,用于标识设备的类型。例如,硬盘驱动器和串口设备都有不同的主设备号。
副设备号是另一个整数,用于标识同一类型的设备中的不同实例。例如,一个系统中可以有多个硬盘驱动器,每个驱动器都有不同的副设备号。
在Linux中,设备文件通常被存储在/dev目录下,设备文件名由设备类型和设备号组成,例如/dev/sda表示第一个硬盘驱动器。
区别在于,主设备号用于区分不同类型的设备,而副设备号用于区分同一类型的不同实例。这使得系统能够正确地识别和管理不同的设备。