创建一个简单字符设备驱动的过程:
第一步:首先构造并定义描述这个具体设备的结构体。
第二步:确定这个设备所提供的操作:定义file_operation并初始化。
第三步:在module_init函数中,
**********第一步:用register_chrdev_region函数或alloc_chrdev_region函数来静态或动态的申请设备号
**********第二步:初始化cdev结构,也就是调用cedv_init函数将cdev结构变量与file_operation绑定
**********第三步:调用cdev_add函数,使用申请到的设备号来注册字符设备。
第四步:在module_exit中,
**********第一步,使用 cdev_del来对设备进行注销
**********第二步:使用unregister_chrdev_region来释放设备号
第五步:完成设备的具体操作,也就是实现前面定义的file_operation结构体中的函数,这些函数才是最终完成的对具体设备的读写或其他操作。
第一步:首先构造并定义描述这个具体设备的结构体。
第二步:确定这个设备所提供的操作:定义file_operation并初始化。
第三步:在module_init函数中,
**********第一步:用register_chrdev_region函数或alloc_chrdev_region函数来静态或动态的申请设备号
**********第二步:初始化cdev结构,也就是调用cedv_init函数将cdev结构变量与file_operation绑定
**********第三步:调用cdev_add函数,使用申请到的设备号来注册字符设备。
第四步:在module_exit中,
**********第一步,使用 cdev_del来对设备进行注销
**********第二步:使用unregister_chrdev_region来释放设备号
第五步:完成设备的具体操作,也就是实现前面定义的file_operation结构体中的函数,这些函数才是最终完成的对具体设备的读写或其他操作。
下面这个图可以大致描述应用程序中的open、write等操作时怎样和具体的设备关联起来的。