linux字符设备驱动

来源:互联网 发布:java 开源打码插件 编辑:程序博客网 时间:2024/05/16 14:25
 linux字符设备驱动
字符设备文件和字符设备驱动通过主设备号联系
主设备号对应设备类型
次设备区分同类型的设备
内核如何如何描述设备号?
用dev_t 实质为12+20位的整数
MAJOR
MINOR
怎样申请设备驱动?
1.静态申请
2.动态分配
int alloc_chrdev_region
安装后/proc/devices查看设备名


不用设备时,注销设备号

有设备号创建设备文件
1.手工创建
mknod用法
mknod  serial0 c 100 0

struct file
loff_t f_pos 文件读写位置
struct file_operations *f_op

struct inode
dev_t i_rdev

struct file_operations  过渡作用
系统调用做出读写,驱动程序根据做出反应
vfs_read函数

分配c_dev
struct cdev * cdev_alloc(void)
初始化c_dev
void cdev_init(struct cdev*cdev,const file_operations*fops)
待初始化的cdev结构
设备对应的操作函数集

注册添加c_dec
int cdev_add(struct cdev* p,dev_t dev,unsigned count)
注销设备
int cdev_del
open
close
xxx_read
2个来自内核空间,2个来自用户空间,用户空间指针不能直接访问copy_to_user
xxx_write

驱动调试

打印调试
调试器调试
查询调试 
0 0
原创粉丝点击