驱动名、设备名和设备文件名的关系

2023-10-28

编写一个驱动文件的时候生成一个name1.ko文件,这个name1就是驱动名,使用insmod name1.ko指令之后,用lsmod能看见一个名为name1的驱动

在调用了alloc_chrdev_region函数或register_chrdev_region函数时传入的最后一个参数为设备名,如果传入的为name2,则表示该设备名为name2,使用cat /proc/devices指令可以看到该设备名

使用mknod指令指定的文件名为设备文件名,该名字为使用open函数时打开的文件

设备节点被创建在/dev下,是连接内核与用户层的枢纽,就是设备是接到对应哪种接口的哪个ID 上。 相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。

在Linux中,所有设备都以文件的形式存放在/dev目录下,都是通过文件的方式进行访问,设备节点是Linux内核对设备的抽象,一个设备节点就是一个文件。应用程序通过一组标准化的调用执行访问设备,这些调用独立于任何特定的驱动程序。而驱动程序负责将这些标准调用映射到实际硬件的特有操作。

设备节点,驱动,硬件设备是如何关联到一起的呢?

这是通过设备号实现的,包括主设备号和次设备号。当我们创建一个设备节点时需要指定主设备号和次设备号。应用程序通过名称访问设备,而设备号指定了对应的驱动程序和对应的设备。主设备号标识设备对应的驱动程序,次设备号由内核使用,用于确定设备节点所指设备。

主设备号:驱动程序在初始化时,会注册它的驱动及对应主设备号到系统中,这样当应用程序访问设备节点时,系统就知道它所访问的驱动程序了。你可以通过/proc/devices文件来查看系统设备的主设备号。

次设备号:驱动程序遍历设备时,每发现一个它能驱动的设备,就创建一个设备对象,并为其分配一个次设备号以区分不同的设备。这样当应用程序访问设备节点时驱动程序就可以根据次设备号知道它说访问的设备了。

设备节点(设备文件):Linux中设备节点是通过“mknod”命令来创建的。一个设备节点其实就是一个文件,Linux中称为设备文件。有一点必要说明的是,在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件程序普通文件,设备节点称为设备文件。

设备驱动:设备驱动程序(device driver),简称驱动程序(driver),是一个允许高级(High level)计算机软件(computer software)与硬件(hardware)交互的程序,这种程序建立了一个硬件与硬件,或硬件与软件沟通的界面,经由主板上的总线(bus)或其它沟通子系统(subsystem)与硬件形成连接的机制,这样的机制使得硬件设备(device)上的数据交换成为可能。想象平时我们说的写驱动,例如点led灯的驱动,就是简单的io操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

驱动名、设备名和设备文件名的关系 的相关文章

  • 我的一路走来@电子信息工程和嵌入式该怎么入门

    嵌入式该怎么学 嵌入式从何学起 嵌入式入门需不需要报培训机构 哪个培训机构好点 还有一些是咨询电子信息工程专业的情况等等 这些问题几乎每天都在我的 嵌入式的世界 百度知道团队会遇到和看到的一些问题 归根结底是咨询嵌入式该如何入门 电子信息工
  • js中通过window.location.href和document.location.href、document.URL获取当前浏览器的地址的值,它们的的区别

    1 document表示的是一个文档对象 window表示的是一个窗口对象 一个窗口下可以有多个文档对象 所以一个窗口下只有一个window location href 但是可能有多个document URL document locati
  • HTML+CSS字体文本

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 HTML文本标签 文本级语义标签包括 a 超连接 em 侧重点的强调 可嵌套 表现
  • Laya实现控制杆控制3D模型旋转

    export default class JoyStick constructor mod this model mod 模型 this scale Laya Browser width 1920 this rockerBtnOrigin
  • uniapp App权限判断和提示

    1 下载组件App权限判断和提示 DCloud 插件市场 2 导出到需要判断的项目里面 import permision from js sdk wa permission permission js 3 判断是否开启权限 async re
  • 图书馆管理系统 Java

    目录 要求 代码 Operate接口 Book类 Reader类 BookList类 ReadList 类 Infor类 InforList类 main 功能实现 改进 错误 总结 要求 为图书管理人员编写一个图书管理系统 图书管理系统的设
  • 分布式接口幂等性设计实现

    面对分布式架构和微服务复杂的系统架构和网络超时服务器异常等带来的系统稳定性问题 分布式接口的幂等性设计显得尤为重要 本文简要介绍了几种分布式接口幂等性设计实现 包括Token去重机制 乐观锁机制 数据库主键和状态机实现等 以加深理解 1 分
  • WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    使用SCP命令时出现这个错误 解决办法 rm ssh known hosts
  • 《动手学深度学习 Pytorch版》 3.7 softmax回归的简单实现

    import torch from torch import nn from d2l import torch as d2l batch size 256 保持批量大小为 256 train iter test iter d2l load
  • 【解决】idea启动spring MVC报错:一个或多个listeners启动失败Listener ClassNotFoundException

    idea 2023配置教程 tomcat调试报错Artifact war exploded Error during artifact deployment 修改代码后 启动不生效 仍是旧代码 根本原因是 Modules output pa
  • 16.Linux网络编程

    一 TCP IP理论基础 1 协议栈 Linux的优点之一就是在于它丰富而稳定的网络协议栈 其范围是从协议无关层 如通用的socket层接口和设备层 到各种网络协议的实现 2 协议介绍 对于网络理论介绍一般采用OSI模型 但是Linux中网
  • Vivado将.v文件作为模块加入Block Design

    用Vivado开发ZYNQ时 常用到Block Design Block Design中不仅仅可以添加IP核 还可以将未封装成IP的 v或 vhd文件作为模块加入其中 我们以往Block Design中加一个闪灯的模块为例 说明如何向Blo
  • python Scrapy的spider中回调函数的多个参数传递方法

    https blog csdn net Homewm article details 83054326
  • elasticsearch的入门使用01

    目录 一 索引库操作 1 mapping映射属性 2 索引库的CRUD 2 1 创建索引库和映射 2 2 查询索引库 2 3 修改索引库 2 4 删除索引库 二 文档操作 1 新增文档 2 查询文档 3 删除文档 4 修改文档 4 1 全量
  • 微信小程序组建监听observers

    一 作用 用于监听和响应任何属性和数据字段的变化 二 限制 1 小程序基础库2 6 1开始支持 2 只能在自定义组建中使用 再页面中无法使用 三 使用 1 自定义组件的properties中的数据属性 Component 组件的属性列表 d
  • vue中使用element-ui表格table组件错行出现场景和解决方案

    在项目开发中表格错行的问题经常出现 现在整理如下 希望共同学习进步 1 element ui表格table表格内容错行 1 情况一 表格中有el tooltip时候 数据过长的时候hover 往上滑动会出现错行 解决方案 固定高度或者给出
  • 二叉树实验报告

    实验报告 实验题目 二叉树 实验目的 1 熟悉二叉树的结点类型和二叉树的基本操作 2 掌握二叉树的前序 中序和后序遍历的算法 3 加深对二叉树的理解 逐步培养解决实际问题的编程能力 基本要求 1 编写程序bitree cpp实现ADTBiT
  • java 基础重学(三)-源码阅读

    1 String 1 String定义为 final 这说明String不可继承 再看下面 String类的主力成员字段value是个char 数组 而且是用final修饰的 final修饰的字段创建以后就不可改变 是线程安全的 publi
  • python爬取软件内数据_各种数据爬取工具爬虫合集整理

    却道天凉好个秋 不用编程敲代码的爬取数据的工具合集 简单上手易用的爬虫脚本工具软件汇总 1 工具软件类 Microsoft Excel excel也可以爬一些规整的表格数据等 没想到吧 八爪鱼 一款可视化免编程的网页采集软件 可以从不同网站

随机推荐

  • osgexp安装与使用

    osg系列文章目录 文章目录 osg系列文章目录 前言 一 下载osgexp和3d max 二 osgexp安装 三 编译OSGExp 参考 前言 3ds max文件导出osg或者ive格式 一 下载osgexp和3d max 1 首先下载
  • 列举ADO.NET在操作数据库时,常用的对象及作用。

    connection 连接对象 用于对数据库的连接操作 参数是连接字符串 command 命令对象 用于执行对数据库的操作 参数是连接字符串或存储过程 也必须传入连接对象实例 SqlDataReader 数据读取对象 用于读取操作 Read
  • 【BP时序预测】基于BP神经网络的时间序列预测附matlab完整代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 基于BP神经网络的时间序列预测是一种常用的预测方法 它可以通过训练神经网络模型来学习
  • Ubuntu 18.04安装RTX2080Ti显卡驱动

    Ubuntu 18 04 2080Ti安装显卡驱动 PPA仓库安装 网上的方法太多了 尝试了几种各种失败 这里记录一种本人电脑有效的方法 有的电脑需要先卸载Ubuntu 自带的驱动 sudo add apt repository ppa g
  • unity 获取鼠标停留处UI

    修改新华社项目 需要为鼠标停留加个标示 暂定为旋转UI 的fillAmount 期间需要获得UI名字 因为名字太多了 个别环影响 所以找到了这个工具方法
  • 如何在你的windows系统电脑里面设置个人私密空间

    1 前几天我在网上搜了一下windows系统的垃圾清理软件看看哪个好用 2 诶 还别说 还真的找到了一个好用的 他就是 完美卸载 最麻烦就是这些杀毒 清理类的软件 所以我下载了个不需要安装的绿色版 3 我要介绍的就是里面的 数据保险箱 界面
  • 利用SCCM进行横向移动

    01SCCM介绍 SCCM全名为System Center Configuration Manager 从版本1910开始 微软官方将其从Microsoft System Center产品移除 重新命名为Microsoft Endpoint
  • 9种基本数据类型

    9种基本数据类型以及封装类 基本类型 大小 默认值 封装类 byte 1 byte 0 Byte short 2 short 0 Short int 4 0 Int Long 8 0L Long float 4 0 0f Float dou
  • 跳过交货单ATP CHECK的方法

    物料启用ATP CHECK会影响到交货 对于那些启用了ATP CHECK而又没有做合理规划的系统 想要搞清楚ATP是如何计算的 我只能说呵呵 你会发现批次拆分 过账的BAPI会有莫名其妙的 报错 搞不清楚库存里明明有东西为什么还不让交货 这
  • 【深度学习】数据集打标签:生成train.txt和val.txt

    当我们在Github上下载一篇论文的代码后 我们如何在自己的数据集上进行复现呢 准备自己的数据集 这是在百度爬的十分类的服装数据集 其中train文件夹下每类大概300张 val文件夹下每类大概100张 总共在4000张左右 设置目录 我们
  • mysql二进制文件下载教程_mysql 二进制文件增量备份

    1 首先在my cnf下添加二进制文件路径 windows下文件名称为my ini 在 mysqld 下添加 log bin mysql bin 2 centos下默认安装mysql 5 6 数据默认文件夹下为 var lib mysql
  • (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习

    目录 一 概述 二 数据集描述 三 方法 数据预处理 SMOTE算法 Feed forward网络 四 结果 后记 2021年5月 一 概述 近日 有位同学因为搞不懂matlab中的神经网络来问我怎么做 我说你把数据集发来给我看看 我稍微一
  • apt安装包报错解决办法:下列软件包有未满足的依赖关系,依赖。。。但是。。。正要被安装

    apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 文章目录 apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 几种可能的情况 1 镜像源版本代码的问题 1 查看版本代码 2 修改镜
  • Redis设计与实现---Sentinel

    Sentinel Redis的高可用性解决方案 由一个或多个Sentinel实例组成的系统可以监视任意多个主服务器 以及这些主服务器属下的所有从服务器 并在被监视的主服务器进入下线状态时 自动将下线主服务器属下的某个从服务器升级为新的主服务
  • 考研复试数据库原理课后习题(十)——数据库恢复技术

    数据库恢复技术 1 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么不做 是一个不可分隔的工作单位 事务具有四个特性 ACID 原子性 一致性 隔离性 持续性 原子性 事务是数据库的逻辑工作单位 一个事务中包括的操作要么全做 要么
  • Swagger的常用配置

    一 可在项目中创建SwaggerConfig配置类 对文档详细信息进行配置 swagger配置类 用于配置swagger的详细信息 比如标题 网站 邮箱 Configuration public class SwaggerConfig 返回
  • linux 大量的TIME_WAIT解决办法

    原文地址 http www cnblogs com softidea p 6062147 html 统计在一台前端机上高峰时间TCP连接的情况 统计命令 netstat n awk tcp S NF END for a in S print
  • 计算机科学想象作文500,六年级想象作文600字

    第一篇 描写月亮的作文 你们听说过 超级月亮 吗 什么 没听说过 那么 我就带你们去看看前几天的超级月亮吧 今天 我像往常一样去广场滑滑板 忽然 我看一栋楼房的左 作文500字 未来的城市一场暴雨过后 阳光洒在充满绿意的城市 街道上没有积水
  • 09_Pandas从多个条件(AND,OR,NOT)中提取行

    09 Pandas从多个条件 AND OR NOT 中提取行 使用Pandas从多个条件 AND OR NOT 中提取行的方法 有以下2点需要注意 的使用 and or not的错误 使用比较运算符时 请将每个条件括在括号中 以下数据为例
  • 驱动名、设备名和设备文件名的关系

    编写一个驱动文件的时候生成一个name1 ko文件 这个name1就是驱动名 使用insmod name1 ko指令之后 用lsmod能看见一个名为name1的驱动 在调用了alloc chrdev region函数或register ch