欢迎光临散文网 会员登陆 & 注册

字符设备驱动的编写

2023-01-20 03:20 作者:秋名山西  | 我要投稿

(1)编写驱动需要提供的功能函数 (2)定义一个struct file_operation的变量,(1)中编写的功能函数应当对应这个结构体中的某一个函数指针,作为提供给应用程序访问硬件设备的接口 (3)在驱动的xxx_init函数中调用chrdev_register(第一个参数为0,则会自动分配主设备号),这个函数的返回值为主设备号,这个函数需要主设备号、驱动名字、file_operation结构体作为参数,将驱动注册到内核 说一下:内核会维护一个主设备号数组,一个主设备号对应一个数组元素,驱动注册时,会将自身实现的file_operation与自身主设备号对应的数组元素对应。一但这个对应关系建立以后,应用程序通过操作/dev下的设备节点文件,就能获得设备文件对应的主设备号,进而拿着这个主设备号就能找到file_operation,在其中找到自己需要的操作硬件的方法,进而满足应用程序的需求。 创建设备节点的方法: (1)手动创建:mknod  (2)自动创建:调用class_create创建一个类,再调用class_device_create,届时,可以在/sys/class下看到我们所创建的类以及在该类下创建出的设备文件。然后mdev会在/dev下创建一个设备节点文件,这是基于mdev机制实现的 mdev机制:这是因为我们在init.d中的rcS文件中,将热拔插守护进程设置成了mdev,一旦有热拔插事件发生,就会将设备描述符传递给mdev,进而在/dev下创建出对应的设备节点 一点点感悟:其实驱动模块可以理解为将硬件设备虚拟化为软件模块。操作这个软件模块就等于操作硬件设备。驱动模快还要准备好维持硬件设备正常工作所需的资源,例如gpio、中断、时钟等。 总之:一旦设备节点创建完毕,应用程序就有了操作硬件设备的入口

字符设备驱动的编写的评论 (共 条)

分享到微博请遵守国家法律