驱动是什么

定义

驱动是 Linux 系统中设备和用户之间的桥梁,Linux 系统中,访问设备必须通过设备驱动进行操作,用户程序是不能直接操作设备的。Linux 系统中硬件、驱动和用户程序的关系如下图。
Linux 中设备、驱动和应用程序关系图
驱动程序运行与内核空间,用户程序只能通过内核提供的系统调用,由经 VFS 以及驱动程序才能访问和操作硬件,硬件设备传递的数据也必须经过驱动、VFS 和系统调用才能被用户程序接收。所以说,设备驱动是应用程序访问系统设备以及进行数据传递的桥梁和通道。

驱动的基本要素

Linux 设备驱动是具有入口和出口的一组方法的集合,各方法之间相互独立。驱动内部逻辑结构如下图。
Linux 驱动程序逻辑结构
Linux 设备在内核中是用设备号进行区分的,而决定这些设备号的正是设备驱动程序。另外,在用户空间如何管理这些设备,这也是与驱动程序息息相关的。一个完整的设备驱动必须具备以下基本要素:

1) 驱动的入口和出口。驱动入口和出口部分的代码,并不与应用程序直接交互,仅仅只与内核模块管理子系统有交互。在加载内核的时候执行入口代码,卸载的时候执行出口代码。这部分代码与内核版本关系较大,严重依赖于驱动子系统的架构和实现。

*2) 操作设备的各种方法。驱动程序实现了各种用于系统服务的各种方法,但是这些方法并不能主动执行,发挥相应的功能,只能被动的等待应用程序的系统调用,只有经过相应的系统调用,各方法才能发挥相应的功能,如应用程序执行 read()系统调用,内核才能执行驱动 xxx_read()方法的代码。这部分代码主要与硬件和所需要实现的操作相关。

3) 提供设备管理方法支持。包括设备号的分配和设备的注册等。这部分代码与内核版本以及最终所采用的设备管理方法相关系,如采用 udev,则驱动必须提供相应的支持代码。

驱动的核心思想

核心思想就是框架

  • 字符设备
  • 混杂设备
  • 输入子系统
  • 平台设备驱动
  • I2C模型
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值