linux驱动学习二---driver

使硬件工作的软件叫做driver

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

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

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

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

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

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

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

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

Mknod filename type major minor

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

(1)struct file虚拟文件数据结构

(2)struct inode物理设备

(3)struct file_operations 包括一些重要的数据结构

file_operations就是把系统调用和驱动程序关联起来的关键数据结构。这个结构的每一个成员都对应着一个系统调用。读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了Linux设备驱动程序的工作,更加详细的介绍可以点击下面的链接,已经阐述的很清楚了。
file_operations具体含义

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

(1)分配cdev cdev_alloc

(2)初始化cdev cdev_init

(3)添加cdev cdev_add

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

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

调试技术:

(1) 打印调试 printk

(2) 调试器调试 kgdb

(3) 查询调试

参考链接:https://blog.csdn.net/szfhy/article/details/49619643

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值