【driver1】内核模块,设备号,字符驱动

news2024/12/26 20:44:04

文章目录

  • 1.内核模块:必须包含module.h
  • 2.内核模块参数:权限位S_IRUGO是用在sysfs文件系统里
    • 2.1 extern:声明来自另一个模块
  • 3.设备号:主设备号对应驱动程序,具有相同主设备号设备使用相同驱动程序,次设备号用来标识连接系统中相同的设备
    • 3.1 字符设备申请主设备号:三个函数,三个宏
    • 3.2 块设备申请主设备号:hello_major为0是系统自动分配的主设备号即register_blkdev函数分配
  • 4.字符设备驱动:控制外部设备都是通过读写dev下设备文件实现
    • 4.1 驱动加载后自动生成设备节点:让系统udev自动生成/dev目录下的设备节点,udevadm info


1.内核模块:必须包含module.h

在这里插入图片描述
在这里插入图片描述

2.内核模块参数:权限位S_IRUGO是用在sysfs文件系统里

如下static int…只是初始化给默认值。
在这里插入图片描述
在这里插入图片描述

2.1 extern:声明来自另一个模块

在这里插入图片描述
在这里插入图片描述

3.设备号:主设备号对应驱动程序,具有相同主设备号设备使用相同驱动程序,次设备号用来标识连接系统中相同的设备

3.1 字符设备申请主设备号:三个函数,三个宏

主设备号:哪一类。次设备号:哪一个。设备文件->设备号->cdev。
在这里插入图片描述
在这里插入图片描述
如下次设备号个数不是次设备号(hello_minor)。
在这里插入图片描述
在这里插入图片描述

3.2 块设备申请主设备号:hello_major为0是系统自动分配的主设备号即register_blkdev函数分配

在这里插入图片描述
在这里插入图片描述

4.字符设备驱动:控制外部设备都是通过读写dev下设备文件实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1 驱动加载后自动生成设备节点:让系统udev自动生成/dev目录下的设备节点,udevadm info

linux系统中有一个后台程序udev(用来自动生成设备节点的软件),当一个设备接入到系统中时会发送一个事件到udev。udev接到这事件后就会获取这些设备信息,这些信息大部分保存在/sys/class/xx文件系统(sysfs)中。udev获得到这些信息后就会根据获得到的信息以及udev规则在/dev下生成对应设备节点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下测试读写设备,group改变组,mode改变权限。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

淘系两年半A/B实验经历,聊聊我理解的“科学实验”

在淘宝天猫两年半的A/B实验经历里,我从零到一分别经历了货架电商-淘特的A/B实验能力建设和内容电商-直播的A/B实验能力建设,前者更关注实验通用能力建设,后者更关注实验科学落地。在拥抱变化的当下,专注一个领域是幸运的&#xff…

7: 分配器

文章目录 operator new () 和 malloc()stl 中allocator的使用allocators 内部实现vc的分配器 并没有太多的技巧可言下面是BC5的stl 设计GCC的allocators2.9版本GCC使用的allocator是什么?这里面cookie的作用 4.9版本的GCC allocator operator new () 和 malloc() 所…

Windows环境下VSCode C无法跳转自动补全

前言: 本文记录了自己在配置 Windows环境下 VSCode C开发环境的遇到的问题和解决方法。 参考: vscode c语言没有代码提示_clangd提示不生效-CSDN博客 VSCODE无法跳转_vscode 不能跳转-CSDN博客 vscode c/c环境配置(MinGW)调用第三官方库…

MySQL:多表查询练习

#1.出版社信息 与 图书信息 交叉连接 select * from 出版社信息 cross join 图书信息; #2.从“客户信息”和“订单信息”两张数据表中查询购买了商品的客户信息,要求查询结果显示客户姓名、订单编号、订单状态。 select 客户信息.客户姓名,订单信息.订单编号,订单…

C++ | Leetcode C++题解之第72题编辑距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1, 0));for (int i 0; i < word1.size(); i) dp[i][0] i;for (int j…

HR面试测评,如何评估求职者的责任心?

HR招聘的过程中&#xff0c;如何去分析求职者的责任心&#xff1f;候选人是否具备责任心&#xff0c;这决定着他的工作绩效的高低&#xff0c;是企业利益的屏障&#xff0c;也是个体职业发展的基础。 &#xff08;引用定义&#xff09;责任心是指个体&#xff0c;能自觉地认识到…

HarmonyOS NEXT星河版之在线考试功能实战

文章目录 一、目标二、基础搭建2.1 定义数据2.2 mock数据2.3 主页面布局2.3.1 布局规划2.3.2 标题栏2.3.3 进度条2.3.4 答题模块2.3.5 底部按钮 2.4 主页面逻辑2.4.1 加载数据及定义变量2.4.2 上一题、下一题 三、选项点击及高亮3.1 声明对象及变量3.2 给选项注册点击事件3.3 处…

Laravel框架使用图片处理简单教程

PHP图片处理扩展包使用 文中使用的是Laravel框架&#xff0c;更多框架扩展包请点击传送门-》更多框架集成 Intervention Image 是一个开源的 PHP 图像处理和操作 库。它提供了一个更简单也更优雅的方式来创建/编辑/组合图像,并且支持最常见的两个图像处理库 GD Library 和 Im…

经验之谈——正确选择矿用旋转式孔板流量计

说到孔板流量计大家除了想到矿用旋转式孔板流量计是不是还会想到价格&#xff1f;我们举个例子&#xff1a; 10块钱的停车费你觉得贵 于是抱着侥幸心理停路边 突然一张200的罚单贴车上 你才悔不当初 早知道给100停车费也愿意 当你真正需要质量和保障的时候 多高的价格你都不嫌…

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA&#xff08;故障模式与影响分析&#xff09;是一种预防性的质量工具&#xff0c;旨在识别软件中可能存在的故障模式&#xff0c;并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中&#xff0c;选择适当的时机进行FME…

【C语言】动态分配内存

内存的五大分区 1、堆区&#xff08;heap&#xff09;——由程序员分配和释放&#xff0c; 若程序员不释放&#xff0c;程序结束时一般由操作系统回收。注意它与数据结构中的堆是两回事 2、栈区&#xff08;stack&#xff09;——由编译器自动分配释放 &#xff0c;存放函数的…

CST电磁仿真软件远场源的导出调用和提取结果【小白必看】

远场源的导出&调用(1) 提取Hybrid仿真所需的远场源&#xff01; Post-Processing > Tools > Result Templates Tools >Farfield and Antenna Properties > Export Farfields As Source 混合求解(Hybrid Simulation)是对安装在舰船等大型平台上的天线进行仿真…

【docker】常用的Docker编排和调度平台

常用的Docker编排和调度平台 Kubernetes (K8s): Kubernetes是目前市场上最流行和功能最全面的容器编排和调度平台。它由Google开发并开源&#xff0c;现由CNCF&#xff08;云原生计算基金会&#xff09;维护。Kubernetes设计用于自动化容器部署、扩展和管理&#xff0c;支持跨…

EPSON的温补晶振TG7050SKN

EPSON公司推出的温补品振(TCXO)TG7050SKN&#xff0c;尺寸大小为7.0x5.0x1.5 mm&#xff0c;具有高稳定性(105℃℃高温)等特点&#xff0c;可输出10MHz~54MHz的频率可应用在网络同步&#xff0c;BTS&#xff0c;微波&#xff0c;以及需要符合Stratum3、SyncE和IEEE1588等规范的…

张大哥笔记:商标也可以赚大钱

一大早看群聊&#xff0c;发现群里几个小伙伴在讨论商标转让的事情&#xff0c;我一时兴起&#xff0c;就想知道怎么通过商标来赚钱呢&#xff1f;不查不知道&#xff0c;原来还可以这样用商标赚大钱&#xff01; 下面我给大家掰扯一下&#xff0c;首先我们来了解一下什么是商标…

LeetCode面试298,二叉树最长连续序列(Python)

开始想着dfs&#xff0c;两种情况 1.以root为根 2.不以root为根 但是这样需要两个dfs分别进行&#xff0c;那么时间复杂度就上去了。 class Solution:def longestConsecutive(self, root: Optional[TreeNode]) -> int:def dfs(root):# 以root为根节点&#xff0c;可以延…

递归与递推---题目练习

目录 1、递归实现指数型枚举 2、递归实现排列型枚举 3、递归实现组合型枚举 4、带分数 方法一 方法二 5、翻硬币 6、飞行员兄弟 7、费解的开关 递归是指在函数的定义中使用函数自身的方法。它通过不断地将问题分解为更小的子问题&#xff0c;直到达到基本情况&#xf…

【Gaea+UE5】创建基本的大型世界场景

目录 效果 步骤 一、在Gaea中生成地形 二、确定导出的地形规模 三、在UE中创建地形 四、验证UE创建的地形规模是否正确 五、使用M4自动地形材质 效果 步骤 一、在Gaea中生成地形 1. 打开Gaea官网下载软件 2. 打开Gaea软件&#xff0c;我们可以选择一个预设的山体 创…

机器学习——4.案例: 简单线性回归求解

案例目的 寻找一个良好的函数表达式,该函数表达式能够很好的描述上面数据点的分布&#xff0c;即对上面数据点进行拟合。 求解逻辑步骤 使用Sklearn生成数据集定义线性模型定义损失函数定义优化器定义模型训练方法&#xff08;正向传播、计算损失、反向传播、梯度清空&#…

Implicit Diffusion Models for Continuous Super-Resolution

CVPR2023https://github.com/Ree1s/IDM问题引入&#xff1a; – LIIF方法可以实现任意分辨率的输出&#xff0c;但是因为是regression-based方法&#xff0c;所以得到的结果缺少细节&#xff0c;而生成的方法(gan-based,flow-based&#xff0c;diffusion-based等)可以生成细节&…