Linux设备驱动入门

Linux驱动配置

什么是驱动程序

  1. 驱动程序是应用层和硬件设备之间的一个软件层。
  2. 它向应用层提供了一组标准化的调用接口,同时完全隐藏设备的工作细节。

无操作系统时的设备驱动

在这里插入图片描述

有操作系统时候的设备驱动

在这里插入图片描述

有了操作系统之后,设备驱动反而变得更加复杂了,那么还要操作系统做什么?

  1. 一个复杂的软件系统需要处理多个并发的任务
  2. 提供内存管理机制,对于LINUX操作提供可以让每个进程都独立的访问硬件设备
  3. 设备驱动都按照操作系统给出的独立于设备的接口而设计,应用程序将可使用统一的系统调用接口来访问各个设备
    在这里插入图片描述

LINUX中驱动的存在方式

1.编译进内核,启动内核时就会驱动此硬件设备
2.模块方式,编译生成一个.ko文件,当应用程序需要时再动态加载进内核空间

驱动的分类

字符设备驱动

字符设备驱动是一种可以按字节以串行顺序依次访问的设备,如触摸屏、磁带驱动器、鼠标等。字符设备驱动则负责驱动字符设备,这样的驱动通常实现open 、close、read和write 等系统调用。

网络设备驱动

任何网络事务都通过一个接口来进行,这一个接口通常是一个硬件设备(eth0),但是它可以是要给纯粹的 软件设备,比如回环接口(lo)。一个网络接口负责发送和接收数据报文。
网络设备没有对应设备文件。

块设备驱动

块设备可以用任意顺序进行访问、以块为单位进行操作,如硬盘、软驱等,块的大小任意,但是一般是512的整数倍
因此 ,块设备和字符设备的区别是驱动的与内核的接口不同
当其实字符设备和块设备并没有明显的界限,如FLASH设备符合块设备的特点,当一般还是当作字符设备访问。
块设备驱动通常也是实现open、close、read和write系统调用

其他独特的驱动体系结构

另外。TTY驱动,IIC驱动,USB驱动,PCI驱动,LCD驱动等本身大体可归纳入3个基础大类,但是对于这些复杂的设备,linux系统还定义了独特的驱动 体系结构。

编写LINUX设备驱动的基础

在这里插入图片描述

驱动程序的使用

linux用户如何使用驱动程序

在这里插入图片描述
linux用户程序通过设备文件(又名:设备节点 eg:/dev/gpio)来使用驱动程序操作设备。

内核编程注意事项

1.要防止并发和竞争
2.不要做浮点运输
3.不能做太耗时的事情
4.拥有锁的时候,不要休眠
5.复杂的过程处理交给应用层去完成
6.不能访问应用层的函数
7.不能有死循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值