设备驱动(三)

设备分类
 字符设备块设备网络设备
访问方式顺序访问,字节为单位随机访问,固定大小为单位访问 
设备键盘,键盘磁盘[扇区],FLASH[读:页,写:块] 
有无缓冲没有 
有无设备文件没有

设备号
dev_t devno;      //32位的整数
devno = MKDEV(major, minor);
31~20    主设备号,用于识别不同类型的设备
19~0      次设备号,用于识别相同类型的不同设备
 
创建设备节点
mknod 类型 主设备号 次设备号

查看已经申请的设备节点
查看/proc/devices

字符设备驱动制作
  1. 申请设备号
    1. 静态方式
      1. dev_t devno = MKDEV(major, minor);     
      2. register_chrdev_region(devno, 申请的数量, "设备名称");  //静态申请,可能重复导致不能申请成功
    2. 动态方式
      1. dev_t devno = 0;
      2. alloc_chrdev_region(&devno, 次设备号, 申请的数量, "设备名称");  //动态申请,第一个设备号保存在devno中,设备号连续
  2. 实现操作集合
    1. 定义struct file_operations结构体变量,并实现操作
    2. 其中owner = THIS_MODULE
  3. 注册字符设备
    1. 创建struct cdev cdev;变量, 并实例化
    2. 调用cdev_init
    3. 设置cdev.owner = THIS_MODULE;
    4. 添加到字符设备链表中,进行cdev_init,完成注册cdev_add
  4. 卸载函数中从列表中删除cdev, 释放设备号

设备驱动在内核中的结构


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值