实现字符设备驱动的流程

Tags
ARM
驱动开发
ID
18
 
💡
初始化 → 实现 file_operations 中的方法 → 注册内核 → 创建文件
准备工作:分配一个字符设备对象空间。字符设备驱动成员的初始化。将字符设备驱动对象注册进内核。此时得到一个字符设备驱动。
当字符设备驱动注册进内核后,会得到一个设备号,基于这个设备号会在文件系统中创建一个设备文件,这样就完成了设备驱动和设备文件的关联。
由于该文件存在于文件系统中,所以内核中一定存在一个 struct inode 结构体,这个结构体中存放了文件的相关信息。
用户层中进行打开文件操作open(),虚拟文件系统层调用sys_open() open()中传递的文件路径,根据找到文件的inode结构体。 根据inode结构体找到文件对应的驱动对象结构体指针 根据驱动对象结构体找到操作方法结构体指针 调用操作方法结构体中对应的函数指针
open() --> sys_open() --> struct inode结构体 --> struct cdev结构体 --> struct file_operations结构体 --> mycdev_open