我知道关于注册char设备有很多问题。 即使如此,因为有太多的API,我还是想寻求一些帮助以将其放置在适当的位置。
我认为,为了创建设备,应在模块的init函数内部执行以下步骤。
- 注册设备并使用register_chrdev (主要,名称,fops)方法获取主要编号。 major:将0作为主要数字传递,因此操作系统将为我们选择一个主要。
fops:将此留空,因为我们将使用sysfs。
- 使用class_create方法创建sysfs类。
- 使用device_create方法创建sysfs设备。
- 使用device_create_file方法创建sysfs文件属性。
我看了看网上,并且阅读了Linux Device Drivers第三版的各个部分 ,现在有点困惑了。
- 有什么理由要使用mknod吗? 还是应该只使用create_device?
- 那alloc_chrdev_region呢? 在Linux设备驱动程序第三版中,它说这是新的API,它代替了register_chrdev 。 但是,如果是这样,它将如何与所有sysfs方法(device_create等)结合?
- / dev / *内部的设备有什么用,还是只能通过sysfs访问这些设备?
- sysfs类的优点是什么?
谢谢。