设备要注册到内核,必须要有一个设备号,就如同人要被这个社会认可和接受,就必须要有一个身份ID一样。
而设备是什么呢?字符设备在内核中是以cdev结构体的形式存在的,我们要做字符设备的驱动,可以申请一个cdev的结构体来描述这个字符设备。这个字符设备需要有相关的操作方法,所以我们实现了很多方法,通过一个file_operations结构把这些方法和驱动模块关联在一起,然后在通过cdev_init将cdev和file_operations关联起来。这样的话,设备就有了,设备的方法也和设备关联了。我们在通过cdev_add方法将设备和注册到的设备编号管理,那么内核就认识这个设备了。然后我们在操作系统中通过设备编号创建设备节点,就可以通过设备节点访问字符设备相关的哪些方法,来得到我们所需要的结果。当操作完了之后,需要使用cdev_del把设备与设备编号断开,通过unregister_chrdev_region释放掉设备编号。整个过程就完了。
//这是今天的理解,以后有了更深认识之后随时修改。
而设备是什么呢?字符设备在内核中是以cdev结构体的形式存在的,我们要做字符设备的驱动,可以申请一个cdev的结构体来描述这个字符设备。这个字符设备需要有相关的操作方法,所以我们实现了很多方法,通过一个file_operations结构把这些方法和驱动模块关联在一起,然后在通过cdev_init将cdev和file_operations关联起来。这样的话,设备就有了,设备的方法也和设备关联了。我们在通过cdev_add方法将设备和注册到的设备编号管理,那么内核就认识这个设备了。然后我们在操作系统中通过设备编号创建设备节点,就可以通过设备节点访问字符设备相关的哪些方法,来得到我们所需要的结果。当操作完了之后,需要使用cdev_del把设备与设备编号断开,通过unregister_chrdev_region释放掉设备编号。整个过程就完了。
//这是今天的理解,以后有了更深认识之后随时修改。