Linux 字符设备驱动框架详细介绍

2019-10-13 12:59:02王旭

mount -t sysfs none sysfs /sys
mdev -s //udev也行

有了这些准备,只需要导出相应的设备信息到"/sys"就可以按照我们的要求自动创建设备文件。内核给我们提供了相关的API

class_create(owner,name);
struct device *device_create_vargs(struct class *cls, struct device *parent,dev_t devt, void *drvdata,const char *fmt, va_list vargs);

void class_destroy(struct class *cls);  
void device_destroy(struct class *cls, dev_t devt);

有了这几个函数,我们就可以在设备的xxx_init()和xxx_exit()中分别填写以下的代码就可以实现自动的创建删除设备文件

 /* 在/sys中导出设备类信息 */
  cls = class_create(THIS_MODULE,DEV_NAME);

  /* 在cls指向的类中创建一组(个)设备文件 */
  for(i= minor;i<(minor+cnt);i++){
    devp = device_create(cls,NULL,MKDEV(major,i),NULL,"%s%d",DEV_NAME,i);
  } 

/* 在cls指向的类中删除一组(个)设备文件 */
  for(i= minor;i<(minor+cnt);i++){
    device_destroy(cls,MKDEV(major,i));
  }

  /* 在/sys中删除设备类信息 */
  class_destroy(cls);       //一定要先卸载device再卸载class

完成了这些工作,一个简单的字符设备驱动就搭建完成了,现在就可以写一个用户程序进行测试了^ - ^

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!