【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十七章 字符设备和杂项设备总结回顾
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、
【公众号】迅为电子
【粉丝群】258811263
第四十七章 字符设备和杂项设备总结回顾
本章内容对应视频讲解链接(在线观看):
字符设备和杂项设备总结回顾 → https://www.bilibili.com/video/BV1Vy4y1B7ta?p=18
到目前为止,我们已经学习完字符设备和杂项设备,为了方便大家的学习理解,我们制作了下面的思维导图。图一为杂项设备驱动框架。

字符设备是3大类设备(字符设备、块设备和网络设备)中的一类,其驱动程序完成的主要工作是初
始化、添加和删除cdev结构体,申请和释放设备号,以及填充file_operations结构体中的操作函数,实现file_operations结构体中的read()、write()和ioctl()等函数是驱动设计的主体工作。
图二为字符设备驱动框架,如下图所示:

字符设备驱动框架中的构建file_operation结构体和杂项设备驱动框架的file_operation结构体是一样的。那么我们为什么要构建file_operation结构体呢?如下图三所示,左边是应用层,应用层执行read()write()后会触发file_operation结构体中的xxx_open(),xxx_read(),xxx_write()函数,这几个函数都是操作硬件设备的,这样就实现了应用层操作硬件设备的流程。因为设备节点是连接应用和驱动的桥梁,所以file_operation结构体是必须要有的,也是非常重要的。

图二和图一对比可知,字符设备驱动框架要比杂项设备驱动框架要复杂多了,假如你以后有GPIO的需求,那么你想要用杂项设备还是字符设备呢?那当然是用杂项设备了,因为他们的功能是一样的,杂项设备更简单。
我们花了很长的时间带着大家学习框架,如果你的脑海里面已经有了这个框架,那么你写杂项设备驱动和字符设备驱动还发愁吗?如果让你点灯,让蜂鸣器响,你会做吗?本文档并没有具体怎么讲点灯,但是,你了解掌握了这些驱动框架,做点灯,蜂鸣器还是很容易的。所以我们要学习linux和你用哪个开发板关系并不大,如果你把一些通用的框架都掌握了,你随意换板子,那么你都可以玩得很溜。
相关文章:
【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十七章 字符设备和杂项设备总结回顾
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...
C#初级——枚举
枚举 枚举是一组命名整型常量。 enum 枚举名字 { 常量1, 常量2, …… 常量n }; 枚举的常量是由 , 分隔的列表。并且,在这个整型常量列表中,通常默认第一位枚举符号的值为0,此后的枚举符号的值都比前一位大1。 在将枚举赋值给 int 类型的…...
Linux 动静态库
一、动静态库 1、库的理解 库其实是给我们提供方法的实现,如上面的对于printf函数的实现就是在库中实现的,而这个库也就是c标准库,本质也是文件,也有对应的路径 2、区别 静态库是指编译链接时,把库文件的代码全部加入…...
微信小游戏之 三消(一)
首先设定一下 单个 方块 cell 类: 类定义和属性 init 方法 用于初始化方块,接收游戏实例、数据、宽度、道具类型和位置。 onWarning 方法 设置警告精灵的帧,并播放闪烁动作,用于显示方块的警告状态。 grow 方法 根据传入的方向…...
软件测试---Linux
Linux命令使用:为了将来工作中与服务器设备进行交互而准备的技能(远程连接/命令的使用)数据库的使用:MySQL,除了查询动作需要重点掌握以外,其他操作了解即可什么是虚拟机 通过虚拟化技术,在电脑…...
数据库之数据表基本操作
目录 一、创建数据表 1.创建表的语法形式 2.使用SQL语句设置约束条件 1.设置主键约束 2.设置自增约束 3.设置非空约束 4.设置唯一性约束 5.设置无符号约束 6.设置默认约束 7.设置外键约束 8.设置表的存储引擎 二、查看表结构 1.查看表基本结构 2.查看建表语句 三…...
利用OSMnx求路网最短路径并可视化(二)
书接上回,为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化,我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图,并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…...
双向门控循环神经网络(BiGRU)及其Python和MATLAB实现
BiGRU是一种常用的深度学习模型,用于处理序列数据的建模和预测。它是基于GRU(Gated Recurrent Unit)模型的改进版本,通过引入更多的隐藏层和增加网络的宽度,能够更好地捕捉复杂的序列数据中的模式。 背景:…...
【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator
ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我…...
Unity UGUI 之 自动布局组件
本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是自动布局组件…...
网络基础之(11)优秀学习资料
网络基础之(11)优秀学习资料 Author:Once Day Date: 2024年7月27日 漫漫长路,有人对你笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。 参考文档: 网络工程初学者的学习方法及成长之路(红…...
QT自定义无边框窗口(可移动控制和窗口大小调整)
QT是一个功能强大的跨平台开发框架,它提供了丰富的界面设计工具和组件。在界面开发中,QT窗口自带的标题栏无法满足我们的需求。我们就需要自定义无边框窗口,包括自定义标题栏和窗口大小调整功能。本文将介绍如何在QT中实现这些功能。 一、简…...
Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)
文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora 是一款专为 Markdown 爱好者设计的文本编辑器,它结合了简洁的界面设计与强大的 Markdown 渲染能力,为用户提供了一个流畅、高效的写作环境。以下是对 Typora 更详细的介绍: 核心特…...
RxJava 面试题及其答案
以下是一个全面的 RxJava 面试题及其答案,涵盖了 RxJava 的各个方面,包括基本概念、操作符、线程管理、错误处理、背压处理等: 基本概念 1. RxJava 的基本概念和原理是什么? 答案: RxJava 是一个用于响应式编程的库…...
【Rust】所有权OwnerShip
什么是所有权 rust使用由编译器检查的一些规则构成的所有权系统来管理内存。且这不会影响程序的运行效率。 所有权规则 rust中每一个每一个值都有一个owner。在同一时刻,只能有一个owner。当这个owner超过范围,则该值会被丢弃。 String类型 为什么需…...
qt总结--翻金币案例
完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…...
最清楚的 BIO、NIO、AIO 详解!
一、什么是 I/O? I/O 描述了计算机系统与外部设备(磁盘)之间通信的过程。 为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space &…...
八股文学习第二天| HTTP请求报文和响应报文是怎样的,有哪些常见的字段?,HTTP有哪些请求方式?,GET请求和POST请求的区别?
1、HTTP请求报文和响应报文是怎样的,有哪些常见的字段? 答: HTTP报文分为请求报文和响应报文。 (1) 请求报文 请求报文主要由请求行、请求头、空行、请求体构成。 请求行包括如下字段: 方法(…...
C++初阶学习第四弹——类与对象(中)
目录 一. 类的默认成员函数 二.六种默认成员函数 1、构造函数 1.1 构造函数的作用 1.2 特性 1.3 默认构造函数 2、析构函数 2.1 析构函数的作用 2.2 析构函数的用法 3、拷贝构造函数 3.1 拷贝构造函数的作用 3.2 特征 3.3 默认拷贝构造函数 三.总结 类与对象&…...
【计算机网络】期末实验答辩
注意事项: 1)每位同学要在下面做过的实验列表中选取三个实验进行答辩准备,并将自己的姓名,学号以及三个实验序号填入共享文档"1(2)班答辩名单"中。 2)在答辩当日每位同学由老师在表…...
3分钟掌握缠论可视化:通达信智能技术分析插件终极指南
3分钟掌握缠论可视化:通达信智能技术分析插件终极指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 还在为复杂的缠论理论头疼吗?还在手工画线分析K线图吗?CZSC缠论…...
dotfiles工程化:用Git与符号链接打造可移植的开发环境
1. 项目概述:dotfiles 是什么,以及为什么你需要它如果你在终端里敲命令的时间超过了你用鼠标点来点去的时间,那你大概率已经听说过dotfiles了。简单来说,dotfiles就是你系统里那些以点(.)开头的配置文件&am…...
AI模型API网关:统一管理多厂商大模型调用,实现高效治理与成本控制
1. 项目概述与核心价值最近在折腾AI应用开发,发现一个挺普遍的问题:当你的应用需要同时调用多个不同厂商的大模型API时,管理起来简直是一场噩梦。每个厂商的接口地址、认证方式、请求格式、计费逻辑都不一样,更别提还有速率限制、…...
EDA工具进化:从仿真瓶颈到静态分析,构建芯片验证分层防御体系
1. 从“工具崩溃”到“分钟级分析”:EDA工具的十五年进化之路十五年前,当Vinod Menon站在EDA联盟设计奖的领奖台上,手握五千美元支票,他的团队刚刚凭借SwitchIT F12M多端口以太网控制器赢得了业界认可。然而,这位AMD的…...
0401开源光刻机整机控制与量检测系统(A级 中期集中攻坚)1. 开源套刻精度核心原理
开源光刻机整机控制与量检测系统(A级 中期集中攻坚) 1. 开源套刻精度核心原理(全参数开源硬核工程溯源喂饭级量化) 前置硬核声明 本文100%开源所有套刻精度核心参数、误差公式、耦合模型、制程阈值、国产实测短板数据,…...
怎样轻松上手yuzu模拟器:3个实用技巧帮你快速畅玩Switch游戏
怎样轻松上手yuzu模拟器:3个实用技巧帮你快速畅玩Switch游戏 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 你是不是也想在电脑上玩Switch游戏,但又觉得模拟器配置太复杂?别担心…...
CC Desktop:基于Claude Code CLI的桌面AI编程工作台深度解析
1. 项目概述:一个为AI编程而生的桌面工作台 如果你和我一样,每天大部分时间都泡在终端里,和Claude Code CLI打交道,那你肯定也经历过这种场景:一边开着终端窗口敲命令,一边还得在浏览器和代码编辑器之间来…...
渗透测试之信息收集:这些技巧决定了渗透成败
渗透测试之信息收集:这些技巧决定了渗透成败作者:浅木先生前言 做渗透测试久了,你会越来越认同一个观点:信息收集的质量直接决定渗透测试的成败。 同样的目标URL,不同人扫出来的结果完全不同——有人只能扫出后台登录页…...
法律条款时间逻辑的DSL与状态机实现:从概念到工程实践
1. 项目概述:当法律条款遇上时间逻辑最近在做一个挺有意思的项目,叫“Clause-Logic/exoclaw-temporal”。光看名字,可能有点摸不着头脑,但如果你接触过合同、协议或者任何带有法律效力的文书,并且尝试过用代码去处理它…...
从佳能FS20文件管理混乱看工程师思维陷阱与视频素材管理实战
1. 项目概述:一个让技术博主抓狂的摄像机文件管理系统作为一名经常需要拍摄产品评测、开箱视频的技术博主,我每天打交道最多的除了代码,就是各种拍摄设备。最近在整理几年前的老项目素材时,翻出了一台经典的佳能FS20摄像机&#x…...
