杂项设备驱动开发流程
1、注册杂项设备驱动
misc_register()
2、构建杂项设备结构体
static struct miscdevice misc={
.minor=12,
.name= "hello"
.fops=&filename_ops,
};
3、构建 file_operations
open
read -------- copy_to_user
wrie----------copy_from_user
close
4、卸载杂项设备
misc_deregister()
注意 注册完成后 自动创建设备节点
字符设备开发流程
1、驱动初始化
分配设备号
静态分配------------------register_chrdev_region()
动态分配----------- -alloc_chrdev_region()
操作设备号dev_t
根绝给定的主设备号和次设备号 构建一个 dev_t类型的设备号--- MKDEV(int major ,int minor)
根据dev_t 类型的设备号中 获取主设备号----- MAJOR
根据dev_t 类型的设备号中 获取次设备号----- MINOR
初始化cdev-------------cdev_init
注册cdev-------------- cdev_add
初始化 硬件
2、构建 file_operations
open
read -------- copy_to_user
wrie----------copy_from_user
close
3、生成设备节点
自动生成设备节点
创建一个class 类----- class_create
创建一个设备 ---------device_create
手动生成一个设备节点
应用层 mknod 命令
4、驱动卸载
卸载设备 -------class_device
卸载class -------class_destroy
卸载 cdev -------cdv_del
卸载 设备号 --------unregister_chrdev_region