linux驱动学习(七)之混杂设备

需要板子一起学习的可以这里购买(含资料):点击跳转

一、混杂设备

混杂设备也叫杂项设备,是对普通的字符设备(struct cdev)的一种封装,设计目的就是为了简化字符设备驱动设计的流程。具有以下特点:

1) 主设备号为10,次备号不同。
2) 大大简化cdev的设计流程。
3) 混杂设备与普通的字符设备在使用上并没有区别。

二、查看系统的混杂设备

[root@GEC6818 /proc]#cat devices  ----> 查看设备
Character devices: --->字符设备1 mem5 /dev/tty5 /dev/console5 /dev/ptmx5 ttyprintk10 misc  ----->数字为主设备号,字符串为设备名字:混杂设备13 input14 sound21 sg29 fb81 video4linux86 ch89 i2c108 ppp116 alsa128 ptm136 pts153 spi
Block devices: --->块设备259 blkext7 loop8 sd11 sr65 sd66 sd67 sd68 sd69 sd70 sd71 sd[root@GEC6818 /proc]#cat misc  --->查看系统的混杂设备42 network_throughput43 memory_throughput44 network_latency45 cpu_dma_latency46 xt_qtaguid47 alarm48 log_system49 log_radio50 log_events51 log_main52 ashmem53 binder54 uhid236 device-mapper130 watchdog55 hdmi-cec56 nxp-scaler223 uinput57 keychord[root@GEC6818 /dev]#ls -lcrw-rw----    1 root     root       10,  50 Jan  1  1970 log_eventscrw-rw----    1 root     root       10,  51 Jan  1  1970 log_maincrw-rw----    1 root     root       10,  49 Jan  1  1970 log_radiocrw-rw----    1 root     root       10,  48 Jan  1  1970 log_systemcrw-rw----    1 root     root       10, 237 Jan  1  1970 loop-control
//主设备号为10则表示为混杂设备,依据次设备号来区分各个设备,各个设备并没有直接联系

三、混杂设备的驱动设计流程

1、普通字符设备驱动流程

驱动程序的设计框架:三个阶段
    创建一个字符设备 --- struct cdev
    创建一个文件操作集
    申请设备号
    字始化设备
    设置加入到内核
    ------------------------------
    创建一个class
    创建一个device  ----->得到该设备的文件 ---->该文件提供给应用层来访问
    --------------------------
    申请物理内存区 ---- request_mem_region
    ioremap ----> 得到物理设备基址的虚拟的起始地址

    得到相应物理地址的虚拟地址,并来访问硬件

2、混杂设备驱动设计流程(struct miscdevice)

1) 定义一个混杂设备

#include <linux/miscdevice.h>
static struct miscdevice led_misc = {.name = "gec6818_led_drv",  //设备文件的名字.fops = &gec6818led_fops,  //文件操作集.minor = MISC_DYNAMIC_MINOR, // 设置次设备号,MISC_DYNAMIC_MINOR --- 表示由系统动态分配一个次设备号
};

2) 定义一个文件操作集

static const struct file_operations gec6818led_fops = {.owner = THIS_MODULE,.unlocked_ioctl = gec6818_led_ioctl,.open = gec6818_led_open,.release = gec6818_led_release,
};

3) 注册混杂设备到内核中

int misc_register(struct miscdevice * misc)
参数说明:struct miscdevice * ----> 混杂设备对象返回值:成功:0失败:负数

4)从内核中注销混杂设备

int misc_deregister(struct miscdevice *misc)

觉得有帮助的话,打赏一下呗。。

           

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

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

相关文章

全面解析:渗压计数据如何预测地下水趋势

随着人们对水资源日益增长的需求和对环境保护意识的提升&#xff0c;地下水位的监测和预测成为了水利工程和环境科学领域的重要研究内容。渗压计作为一种能够测量土壤或岩石中孔隙水压力的仪器&#xff0c;在地下水位的监测中发挥着关键作用。本文将从渗压计的工作原理、安装方…

初探富文本之基于虚拟滚动的大型文档性能优化方案

初探富文本之基于虚拟滚动的大型文档性能优化方案 虚拟滚动是一种优化长列表性能的技术&#xff0c;其通过按需渲染列表项来提高浏览器运行效率。具体来说&#xff0c;虚拟滚动只渲染用户浏览器视口部分的文档数据&#xff0c;而不是整个文档结构&#xff0c;其核心实现根据可…

GD32F4XX的ISP方式下载程序时的串口选择

官方资料 详细信息可参考GD32F4xx的用户手册&#xff0c;第 1.4 章节 引导配置 。 版本是 &#xff1a;GD32F4xx_User_Manual_Rev3.0_CN 资料链接: https://www.gd32mcu.com/cn/download/6?kwGD32F4

HTML到PDF转换,11K Star 的pdfmake.js轻松应对

在Web开发中&#xff0c;将HTML页面转换为PDF文件是一项常见的需求。无论是生成报告、发票、还是其他任何需要打印或以PDF格式分发的文档&#xff0c;开发者都需要一个既简单又可靠的解决方案。幸运的是&#xff0c;pdfmake.js库以其轻量级、高性能和易用性&#xff0c;成为了许…

Mysql sql语句字段截取前几位,后几位等

MySQL 字符串截取函数详解 在MySQL中&#xff0c;处理字符串数据时&#xff0c;我们经常需要对字符串进行截取操作。MySQL提供了多种字符串截取函数&#xff0c;用以满足不同的需求。本文将详细介绍这些字符串截取函数&#xff0c;包括LEFT(), RIGHT(), SUBSTRING(), SUBSTRIN…

16 - 平均售价(高频 SQL 50 题基础版)

16 - 平均售价 # 注意&#xff1a;between 小值 and 大值 select u.product_id, round(sum(u.units*p.price)/sum(u.units),2) average_price from Prices p left join UnitsSold u on p.product_idu.product_id -- and where u.purchase_date between p.start_date and p.e…

AB测试学习(附有相关代码)

目录 一、基本概念1. 定义2. 作用3. 原理 二、实验基本原则三、实验步骤四、实验步骤详解1. 确定实验目的2. 确定实验变量3. 实验指标设计3.1 实验指标类型&#xff08;按作用区分&#xff09;3.1.1 核心指标3.1.2 驱动指标&#xff08;跟踪指标&#xff09;3.1.3 护栏指标 3.2…

使用node将页面转为pdf?(puppeteer实现)

本文章适合win系统下实验&#xff08;linux&#xff0c;mac可能会出现些莫名其妙的bug我也不会解决&#xff09; 具体过程 首先了解什么时无头浏览器启动无头浏览器打开指定的url页面设置导出pdf格式开始转化完整基础代码 首先了解什么时无头浏览器 没有界面的浏览器下载pupp…

matlab使用教程(92)—流线图、流带图和流管图

1.使用向量数据显示流线图 MATLAB 向量数据集 wind 代表北美地区的气流。本示例结合使用了几种方法&#xff1a; 利用流线跟踪风速 利用切片平面显示数据的横截面视图 利用切片平面上的等高线提高切片平面着色的可见性 1.1确定坐标的范围 加载数据并确定用来定位切片平面…

module ‘sys‘ has no attribute ‘setdefaultencoding‘

解释&#xff1a; 在Python 3.3之后&#xff0c;sys模块中不再提供setdefaultencoding()函数。这是因为Python 3.3开始&#xff0c;默认编码行为被明确定义为UTF-8&#xff0c;并且不再需要手动设置默认编码。 如果你的代码中出现了这个错误&#xff0c;很可能是因为你正在尝…

探索Linux中的zgrep命令:强大的文本搜索工具

探索Linux中的zgrep命令&#xff1a;强大的文本搜索工具 在Linux系统中&#xff0c;文本搜索和处理是一项日常任务。当我们需要在一个或多个文件中查找特定的字符串或模式时&#xff0c;通常会使用诸如grep这样的工具。然而&#xff0c;当涉及到压缩文件&#xff08;如gzip压缩…

SpringBoot发邮件服务如何配置?怎么使用?

SpringBoot发邮件需要的参数&#xff1f;邮件发送性能如何优化&#xff1f; 在SpringBoot项目中配置发邮件服务是一个常见的需求&#xff0c;它允许我们通过应用程序发送通知、验证邮件或其他类型的邮件。AokSend将详细介绍如何在SpringBoot中配置发邮件服务。 SpringBoot发邮…

element-ui表格跨页选择数据

element-ui表格跨页选择 1.template部分2.js部分3.全部代码 1.template部分 为table组件添加ref‘table’绑定数据源 :data‘list’添加select和select-all事件&#xff08;事件处理函数为handleSelect&#xff09; <template><div><el-table reftable :data&…

qmt量化交易策略小白学习笔记第17期【qmt编程之获取对应周期的北向南向数据--方式1:内置python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 获取…

java+SimpleRegression 线性模型,针对采集到的大数据设备温度,对设备温度做出预测

首先,让我们通过以下表格展示预测模型开发 Java 的整体流程: 步骤 描述 1 数据收集与清洗 2 特征工程处理 3 模型选择与训练 4 模型评估与调优 5 模型应用与部署 然后引入java的类库 org.apache.commons.math3 math使用原则 math3可谓是轻量级自容器…

小程序开发平台版源码系统——社区论坛小程序功能 带完整的安装代码包以及搭建教程

系统概述 这款社区论坛小程序源码系统是一款功能强大、易于使用的开发平台版源码系统。它采用先进的技术架构&#xff0c;结合了丰富的功能模块&#xff0c;能够满足不同用户的需求。该系统具有高度的可扩展性和灵活性&#xff0c;能够根据用户的需求进行定制化开发&#xff0…

【ffmpeg】本地格式转换 mp4转wav||裁剪mp4

个人感受&#xff1a;太爽了&#xff01;&#xff01;&#xff01;&#xff08;可能用惯了转换网站和无良的转换软件&#xff09; ———— 使用FFmpeg把mp4文件转换为WAV文件 - 简书 (jianshu.com) FFMPEG 视频分割和合并 - 简书 (jianshu.com) ———— 示例 ffmpeg -i …

Qwen2开源发布!0.5B到72B,显著提升!

Qwen2是一个开源的自然语言处理模型&#xff0c;它从0.5B到72B参数规模的显著提升&#xff0c;代表着自然语言处理技术的重大进步。Qwen2的发布&#xff0c;意味着我们可以期待模型在各项自然语言处理任务上&#xff0c;如文本生成、文本分类、机器翻译等&#xff0c;都会有更加…

Qt 窗口居中显示

Qt 窗口居中显示 引言一、窗体的setGeometry函数二、计算屏幕中心然后move三、借助QRect计算四、补充知识点 引言 窗口居中可以提供良好的视觉效果、突出重点内容、提升用户导航和操作的便利性&#xff0c;有助于改善用户体验。 Qt一般情况下&#xff0c;其Mainwindow或弹出的…

咖啡机器人如何精准控制液位流量

在如今快节奏的生活中&#xff0c;精确控制液位流量的需求愈发迫切&#xff0c;特别是在咖啡机器人等精密设备中。为了满足这一需求&#xff0c;工程师们不断研发出各种先进的技术&#xff0c;以确保液体流量的精准控制。其中&#xff0c;霍尔式流量计和光电式流量计就是两种常…