|
b.内存申请给cdev(当cdev定义为指针时)然后调用以下函数进行设备初始化并添加该设备
|
c.如需在/dev下自动创建设备,需调用如下函数
|
*classs 就是class_create返回的key_class;parent如没有就设为NULL;devt设备号;drvdata 如无就为NULL,后面的就是设备名称。也可调用mknod 手动创建设备节点。
自此设备已经成功添加,一下的工作就时完成file_operations中相应函数就好了。
2.混杂模式设备驱动
只需在模块初始化和退出时调用以下函数即可完成设备的注册,设备节点创建等一系列工作,此模式下的主设备号为10
|
剩下的工作就是完成file_operations中的相应函数功能。
3.plat_form平台下的驱动
利用platform机制开发设备驱动的流程 :定义platform_device--注册platform_device--定义platform_driver--注册platform_device。对于系统已经注册过的设备就只需实现后两步就可以了,但是在注册的设备名字 和注册的驱动名字一定要相同,否则不会注册成功。当platform总线匹配到总线上注册的设备和驱动后,就会调用platform_driver 上的probe函数(此时总线的probe函数为NULL)。在probe中可以获取设备的内存资源和中断资源。所有这些操作完成后 就是完成其一些file_operations的操作,然后将其定义为字符设备或混在设备等,在/dev创建其对应的设备文件。(为什么这么做还没有搞懂)应用程序就可以通过open对其操作了。
对应的驱动和测试程序可以查看blog中的 资源 3种模式的按键驱动(cdev misc platform).rar