首先需要明白的一点是:一个硬件对应一个驱动,对应一个设备文件(/dev/),用来描述这个设备,将来应用程序就是通过这个设备文件来找到这个驱动。
1:设备号 = 主设备号+次设备号
主设备号标识的是设备的驱动告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务,次设备号则是具体唯一标识是哪个设备。
在linux中,通过mknod创建设备文件:mknod /dev/xxx c 主设备号 次设备号 ,可以通过ls -l来查看xxx设备文件的信息。其中/dev/xxx:设备文件的全路径; c:表示是设备文件
mknod /dev/test c 250 0
这样就创建了一个设备文件,其主设备号是250(insmod时系统自动分配的,系统自动分配的主设备号是从大到小分配的(这个查看register_chrdev的实现代码可以知道)这个主设备号就是register_chrdev时返回的设备那个主设备号,也可以自己指定),次设备号是0。