字符设备驱动
- 特征
①以字节的方式进行访问:应用程序和驱动程序的交互时
②访问数据时连续的,而且时实时的。
③字符设备驱动不带缓存,块设备带缓存。 - cdev 结构体
- 文件操作集-operations:应用程序访问驱动程序的接口。
形参列表要一致,返回值要和文件操作集保持一致
- dev_t dev
设备号是一个32位无符号整数值- 设备号的申请
静态注册 & 动态分配
- 设备号的申请
- 实操------驱动编写
①申请设备号:int alloc_chrdev_region()
②初始化字符设备cdev:void cdev_init(字符设备, 文件操作集)
创建类:class_create
销毁类:class_destroy
创建设备文件:device_create
销毁设备文件:device_destory
③将字符设备cdev注册到linux kernel:cdev_add()
④释放设备号:unregister_chardev_region()
⑤从内核注销字符设备:cdev_del()- 实现文件操作集
copy_form_user()------用户空间的数据拷贝到内核空间
- 实现文件操作集
- 实操------用户程序编写
int fd = open("dev/chrdev_test", O_RDWR);
perror();
系统调用
- 实操------命令行
cat proc/devices
//手动创建设备文件
mknod /dev/chrdevtest c 主设备号 此设备号