设备节点的创建有二种方法:

1)手动创建:mknode命令 

当insmod后,还需要手动moknod创建设备节点才能被应用层打开,并且使用完成之后还要删除节点。

2) 自动创建:mdev

mdev,它是应用层的一个应用程序。内核驱动和应用层mdev之间有一套信息传输机制(netlink协议),驱动注册和注销时信息会被传给mdev,由mdev在应用层进行设备文件的创建和删除。使用时,在安装驱动模块之前应用层(根文件系统)启用mdev,并且内核驱动模块中使用相应接口函数即可。mdev只认类,要想让其自动创建一个节点,就需要设备从属于一个类

 

例如:如下在模块初始化函数中调用class_create创建一个类,名字为firstdrv,用class_device_create创建类下的一个设备 ,名字为xyz。

mdev自动创建和删除设备节点

 

mdev自动创建和删除设备节点

 在模块卸载函数中调用device_deatory和class_destory

mdev自动创建和删除设备节点

 

    编译驱动模块并insmod加载后就会在sys/class下看到生成了一个类firstdrv,类下面还有一个设备xyz,xyz下面的dev文件内容就是主设备号和次设备号。这样当/sys目录里面的内容一更改,medv便会根据这些系统信息自动创建节点了(这是由于在创建根文件系统时的脚本文件/etc/init.d/rcS文件里有一句echo /sbin/mdev > /proc/sys/kernel/hotplug):

    执行ls  -l  /dev./xyz 发现确实自动生成了一个节点/dev/xyz;执行cat /proc/drivers也可以看到firstdrv;

 

相关文章:

  • 2021-10-27
  • 2021-12-09
  • 2021-10-26
  • 2021-11-30
  • 2022-12-23
  • 2022-01-02
  • 2021-11-24
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-09
  • 2022-12-23
  • 2022-02-24
  • 2021-07-08
  • 2021-05-17
相关资源
相似解决方案