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)
觉得有帮助的话,打赏一下呗。。

相关文章:
linux驱动学习(七)之混杂设备
需要板子一起学习的可以这里购买(含资料):点击跳转 一、混杂设备 混杂设备也叫杂项设备,是对普通的字符设备(struct cdev)的一种封装,设计目的就是为了简化字符设备驱动设计的流程。具有以下特点: 1) 主设备号为10&a…...
【数据结构与算法 | 堆篇】力扣215, 703
1. 力扣215 : 数组中的第k个最大元素 (1). 题 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解…...
项目经理进入职场都会经历的三个阶段
对于项目经理而言,进入职场是一个不断学习和成长的过程。在这个过程中,项目经理通常会经历三个主要阶段,每个阶段都有其独特的特点和挑战。 一、基础建设与学习阶段 对于新入行的项目经理来说,最初的阶段主要是基础技能的积累和…...
消防设施工程乙级资质全解析:申请条件与流程“
消防设施工程乙级资质全解析:申请条件与流程 消防设施工程乙级资质,作为衡量企业从事特定规模消防设施设计能力的重要标尺,对于想要在消防工程领域拓展业务的企业而言至关重要。本文将全面解析申请消防设施工程乙级资质所需的条件、流程及相…...
【C语言】03.分支结构
本文用以介绍分支结构,主要的实现方式为if语句和switch语句。 一、if语句 1.1 if语句 if (表达式)语句表达式为真则执行语句,为假就不执行。在C语言中,0表示假,非0表示真.下图表示if的执行过程: 1.2 else语句 当…...
uniapp手机屏幕左滑返回上一页支持APP,H5
核心:touchstart"touchStart" touchend"touchEnd" 代码示例: <template><view class"payPasswordSetting" touchstart"touchStart" touchend"touchEnd"></view> </template&g…...
【Java毕业设计】基于JavaWeb的洗衣店管理系统
文章目录 摘要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 SpringBoot框架1.4.2 MySQL数据库1.4.3 MVC模式 2 系统需求分析2.1 可行性分析2.2 功能需求分析 3 系统设计3.1 功能模块设计3.2 系统流程设计3.3 数据库设计3.3.1 …...
使用sqlldr向oracle导入大量数据
(1)在Oracle主机安装oracle客户端 sqlldr,在命令行输入sqlldr,若有help指导即已经安装了; (2)创建一个xxx.ctl文件 这个文件是执行导入数据的语句,其中包含需要导入的数据&#x…...
Milvus LIKE操作符
在Milvus中,虽然LIKE操作符被用于模糊匹配字符串,但其支持的模式匹配能力有限。根据你收到的错误信息,Milvus目前只支持两种类型的LIKE模式匹配: 前缀匹配,例如LIKE ab%,这意味着任何以ab开头的字符串都会…...
iQOO neo 5精简内置组件
无他!系统自带了太多组件,都用不到,连打开都不曾打开过。 下午整理一篇精简组件的列表,各自按照各自的需要进行精简哦。别盲目跟风,要不然手机使用会出问题。 精简步骤 使用任意刷机工具,开启手机的开发权限,然后adb连接 删除组件列表如下: pm uninstall --user 0…...
为什么给网站安装SSL证书之后还是有被提示不安全?
分为两种情况一种是安装了付费证书之后还是显示无效,另一种是安装了免费SSL证书的。 付费SSL证书:直接找厂商帮助解决遇到的问题,一般都是有专业的客服来对接这些的。 免费SSL证书:出现这种情况的原因会有很多。因为免费SSL证书的…...
创建Frame单例,实现WPF页面跳转
需求: 有一个F0View主页面入口,三个子页面(First.xaml/Second.xaml/Third.xaml)用Frame默认加载第一个页面 First.xaml。实现三个页面之间顺序跳转,并且每个页面只初始化一次。 实现: 1,将三…...
正宇软件助力江西数字人大建设,高效解决群众“急难愁盼”问题
近日,赣州市南康区群众通过“江西数字人大”小程序成功解决道路塌陷等民生问题,引发社会广泛关注。这一成功案例不仅彰显了“数字人大”在解决群众“急难愁盼”问题中的重要作用,也凸显了江西地区近年来在数字化人大建设方面的显著成效。正宇…...
打造AIPC轻量化方案 360AI浏览器及360AI搜索全新发布
“搜索这20多年来没有发生变化,我们希望这次能来一场革命。”6月6日,360AI新品发布会暨开发者沟通会在京举办。会上,三六零(股票代码:601360.SH,以下简称360)集团发布全新360AI搜索及360AI浏览器…...
《effective c++》学习笔记
从今天开始看《effective c》这本书,把学到的东西当做笔记记下来,算是督促自己学习吧,也算是和大家一起分享一点东西,理解不当的地方,请谅解。(每天更新三个条款)。 一:让自己习惯C…...
11.盛水最多的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1&a…...
通过在idea上搭建虚拟hadoop环境使用MapReduce做词频去重
idea上的MapReduce 一般在开发中,若是等到环境搭配好了再进行测试或者统计数据,数据处理等操作,那会很耽误时间,所以一般都是2头跑,1波人去在客户机上搭建环境,1波人通过在idea上搭建虚拟hadoop环境&am…...
AI技术变革与企业服务创新
1、AI的技术变革 1)AI市场规模 2)AI大模型发展历程 3)AIGC发展背景 4)AIGC技术能力 AIGC的技术架构逻辑上分为基础层、技术层、能力层、应用层、终端层五大板块,其中核心技术层涵盖AI技术群和大模型的融合创新&#…...
探秘Facebook:社交媒体的未来之路
Facebook,作为全球最大的社交媒体平台之一,一直处于数字社交革命的前沿。然而,随着科技和社会的不断发展,Facebook正面临着新的挑战和机遇。本文将探索Facebook的未来之路,揭示社交媒体的新趋势和发展方向。 1. 深度社…...
rust的类型转换和一些智能指针用法(四)
基础类型 使用 as 关键字:用于基本数值类型之间的转换,例如将 i32 转换为 u32。 例子:let x: i32 10; let y: u64 x as u64; 使用标准库中的转换方法:如 from() 和 into() 方法,这些方法通常用于无风险的转换&#…...
Ostrakon-VL-8B零售AI创新:用像素游戏化设计提升一线员工使用意愿
Ostrakon-VL-8B零售AI创新:用像素游戏化设计提升一线员工使用意愿 1. 项目背景与设计理念 在零售和餐饮行业,一线员工使用AI工具的意愿往往不高。传统工业级UI界面过于复杂,操作流程繁琐,导致员工抵触新技术。Ostrakon-VL-8B团队…...
【linux】linux权限的详细讲解
一、Linux 权限的概念 1.1、用户分类 Linux下有两种用户:超级用户 (root) 与 普通用户超级用户:可以再linux系统下做任何事情,几乎不受权限的限制; 普通用户:在linux下做权限范围内的事情; 超级用户的命令提…...
从仿真到实战:在CST/HFSS中如何设置周期性边界条件评估紧耦合天线阵元性能
从仿真到实战:在CST/HFSS中设置周期性边界条件评估紧耦合天线阵元性能 天线阵列设计中最具挑战性的环节之一,是如何准确预测单个阵元在阵列环境中的真实工作状态。当我在设计第一个超宽带相控阵时,曾因忽视阵元间互耦效应导致实物测试结果与仿…...
Go AI 生态实战:从单机 RAG 到分布式智能服务架构演进
Go AI 生态实战:从单机 RAG 到分布式智能服务架构演进 摘要:本文面向具备后端与架构背景的技术人员,系统讲透 Go 在 AI 应用落地中的工程化方法。文章不再停留在“调用一个模型接口”的层面,而是从 RAG 原理、服务拆分、索引构建、高并发治理、缓存策略、容错机制、可观测性…...
物理信息机器学习新突破!连中SCI一区TOP刊!
小伙伴们好,我是小嬛。专注于人工智能、计算机视觉、AI大模型领域相关分享研究。【目标检测、图像分类、图像分割、目标跟踪等项目都可做,相关领域论文辅导也可以找我;需要的可联系(备注来意)】-------正文开始-------…...
Jenkins vs GitLab CI/CD:2026 企业级 CI/CD 工具深度选型评测
Jenkins vs GitLab CI/CD:2026 企业级 CI/CD 工具深度选型评测 作为在 CI/CD 领域摸爬滚打十余年的全栈老兵,我见证了从手工部署到云原生 DevOps 的完整演进。今天,我们将抛开宗教战争式的争论,用真实数据和生产环境案例ÿ…...
如何通过 SEO 优化提高企业品牌的曝光度
SEO优化提高企业品牌曝光度的关键策略 在当今数字化时代,企业品牌的曝光度直接关系到其市场竞争力和商业成功。SEO(搜索引擎优化)是提升企业品牌在搜索引擎中排名的重要手段。本文将详细探讨如何通过SEO优化提高企业品牌的曝光度,…...
如何从业务出发,设计一个可落地的智能客服 RAG 系统
一、核心原则以业务需求为锚点,而不是技术驱动很多 RAG 项目失败的根因:没搞清楚“解决谁的问题”一开始就堆模型、堆技术👉 正确做法:先拆需求,再设计系统二、三方核心需求拆解设计前必须明确三类角色目标:…...
Shell脚本编程与自动化运维了解006
一、Shell脚本基础1.1 Bash脚本概述Shell脚本是一种解释型编程语言,用于自动化Linux系统管理任务。Bash(Bourne Again SHell)是Linux系统中最常用的Shell解释器。脚本基本结构图#!/bin/bash # 这是一个注释 echo "Hello, World!"关…...
MySQL数据库基础聚合函数
聚合函数...
