【驱动程序学习笔记 01】基本概念

【驱动程序学习笔记 01】基本概念

参考:《Linux Kernel Programming》
本人是个no good at English的Linux菜狗,有错误请指正



一些概念

  • 设备驱动程序: 设备驱动程序在操作系统和外部硬件设备之间充当接口。它通常作为内核模块编写。驱动程序的代码在内核空间以操作系统权限运行。
  • 设备文件: 在Linux下,一切皆文件。设备文件是用于访问设备驱动程序的特殊文件,位于/dev目录下。

一、设备

为了让内核区分设备文件,在设备文件中的inode中有两个属性:

  • 设备的类型
  • 主/次设备号

1.设备类型

  • 字符设备(Character Device): 字符设备以字符为单位进行数据传输。有很多设备都属于字符设备
    如串口、传感器芯片(温度、压力、湿度等)、触摸屏、实时时钟(RTC)、媒体(视频、相机、音频)、键盘、鼠标等)。
  • 块设备(Block Device): 块设备以块为单位进行数据传输,例如机械硬盘和固态硬盘SSD等。块设备和字符设备之间的关键区别在于,块设备具有可挂载的(内核级)功能,从而成为用户可访问的文件系统的一部分。字符设备无法挂载;因此,存储设备往往是基于块的。
  • 网络设备(Network Device): 网络设备用于在计算机网络中进行数据通信,例如网卡等。

按照是否真实存在也可以分为物理设备和虚拟设备

2.主/次设备号

内核通过[主设备号: 次设备号]来找到设备。
设备号是一个32bit的数字,高12位表示主设备号,低20位表示次设备号。
在这里插入图片描述
主设备号表示这个设备的类,如我们接下来写的misc类的驱动程序的主设备号是10。


二、简单了解LDM(Linux device model)

1.什么是LDM:

简单来说,LDM是Linux内核中的一个机制,用一个层次树来统一管理和表示系统中的设备。它通过sysfs伪文件系统将这个层级树暴露给用户空间,在/sys目录下,能找到多个子目录。通过sysfs,用户空间可以查看和修改设备的各种属性,与设备驱动程序进行通信以及监控和管理系统中的设备。

LDM将如下组件绑在一起

  • 系统上的总线
  • 总线上的设备
  • 设备的驱动程序

LDM的基本原则: 每个设备都必须驻留在总线上

2.接入新设备

当你插入了一个新设备,首先,总线驱动程序将会识别到它,并将它绑定到它的设备驱动程序; 绑定后,内核驱动程序框架将会调用已注册的驱动程序。

3.基于LDM的驱动程序

基于LDM的驱动程序通常执行如下操作:

  • 根据设备类型将自己注册到内核框架
  • 将自己注册到总线上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值