linux驱动学习一

使硬件工作的软件叫做driver

分为三大类:字符设备驱动,块设备驱动,网络驱动

 

主设备号:用来标识与设备文件相连的驱动程序。用来反映设备类型。

次设备号:用来区分驱动程序操作的是哪个设备。用来区分同类型的设备。

可以通过静态申请,动态分配两种方式来获取设备号。

静态申请:找一个没用的设备号,用register_chrdev_region函数注册设备号,优点是比较简单,缺点是驱动多了之后,容易冲突。

动态分配:alloc_chrdev_region分配设备号,方便进行驱动推广,但是无法在安装驱动之前创建设备文件,安装驱动之后,从/proc/devices中查询设备号。

注意在不用的时候,将设备号注销,unregister_chrdev_region

创建设备文件:可以使用mknod命令手工创建,也可以自动创建。

Mknod filename type major minor

字符设备驱动程序三种重要的数据结构:

1struct file虚拟文件数据结构

2struct inode物理设备

3struct file_operations

字符设备注册分三个步骤:

1)分配cdev  cdev_alloc

2)初始化cdev cdev_init

3)添加cdev cdev_add

实现设备所支持的操作,完成file_operations相应的函数。

用户空间的指针在内核空间不能直接使用,内核提供了专门的函数用于访问用户空间的指针。Copy_from_usercopy_to_user两个api进行转换。

调试技术:

(1)       打印调试 printk

(2)       调试器调试 kgdb

(3)       查询调试

 

实验步骤:

将测试driver编译进内核,内核启动的过程中通过“mknod xxx c 2540”的方式创建设备文件,测试ok.

Study1圆满结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值