【北京迅为】《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和你用哪个开发板关系并不大,如果你把一些通用的框架都掌握了,你随意换板子,那么你都可以玩得很溜。

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

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

相关文章

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis,买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋,可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …

前端JS特效第50集:zyupload图片上传

zyupload图片上传,先来看看效果: 部分核心的代码如下(全部代码在文章末尾): var operimg_id; var zoom_rate100; var zoom_timeout; function rotateimg(){var smallImg$("#"operimg_id);var numsmallImg.attr(curr_rotate);if(nu…

ESP8266用AT指令实现连接MQTT

1准备工作 硬件(ESP8266)连接电脑 硬件已经烧入了MQTT透传固件 2实现连接 2-1(进入AT模式) 打开串口助手发送如下指令 AT 2-2(复位) ATRST 2-3(开启DHCP,自动获取IP&#x…

免费视频批量横版转竖版

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具,提供高效便捷的视频批量横转竖,主要功能: 导入与删除文件:轻松导入多个视频文件,删除不必要的文件。暂停与继续处理:随时暂停和继续处理。…

Python学习笔记43:游戏篇之外星人入侵(四)

前言 在前面的文章中,我们已经对项目进行了简单的分析,并且已经编写好了基础的代码,接下来的工作就是进一步的分析游戏的业务功能,在基础代码之上,进行填充。 背景颜色 我们简单的创建窗口以后,除了命名…

设置使用小米google play和APK的下载使用

我们常常遇到从google play无法下载apk文件,被迫从APKcombo和APKpure两个网站下载安装文件,可是安装文件在手机google play服务框架未开启时即使安装好了,也没法用。也需要把google play服务框架安装好,下面分别介绍: …

Mac 中安装内网穿透工具ngrok

ngrok 是什么? Ngrok 是一个网络工具,主要用于在网络中创建从公共互联网到私有或本地网络中运行的web服务的安全隧道。它充当了一个反向代理,允许外部用户通过公共可访问的URL访问位于防火墙或私有网络中的web应用程序或服务。Ngrok 特别适用…

Three.js 官方文档学习笔记

Address:Three.js中文网 (webgl3d.cn) Author:方越 50041588 Date:2024-07-19 第一个3D案例—创建3D场景 创建3D场景对象Scene: const scene new THREE.Scene(); 创建一个长方体几何对象Geometry: const geomet…

实验八: 彩色图像处理

目录 一、实验目的 二、实验原理 1. 常见彩色图像格式 2. 伪彩色图像 3. 彩色图像滤波 三、实验内容 四、源程序和结果 (1) 主程序(matlab (2) 函数FalseRgbTransf (3) 函数hsi2rgb (4) 函数rgb2hsi (5) 函数GrayscaleFilter (6) 函数RgbFilter 五、结果分析 1. …

某数据泄露防护(DLP)系统NetSecConfigAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NetSecConfigAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NetSecConfigAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请…

【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

springcloud接入skywalking作为应用监控

下载安装包 需要下载SkyWalking APM 和 Java Agent 链接: skywalking 安装 下载JDK17(可不配置环境变量) 目前skywalking 9.0及以上版本基本都不支持JDK8,需要JDK11-21,具体版本要求在官网查看。 我这里使用的是skywalking9.…

Unity UGUI 之 图集

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是图集 精灵图…

google 浏览器插件开发简单学习案例:TodoList;打包成crx离线包

参考: google插件支持: https://blog.csdn.net/weixin_42357472/article/details/140412993 这里是把前面做的TodoList做成google插件,具体网页可以参考下面链接 TodoList网页: https://blog.csdn.net/weixin_42357472/article/de…

phpstorm配置xdebug3

查看php路径相关信息 php --ini安装xdebug https://www.jetbrains.com/help/phpstorm/2024.1/configuring-xdebug.html?php.debugging.xdebug.configure php.ini 配置 在最后添加,以下是我的配置 [xdebug] zend_extension/opt/homebrew/Cellar/php8.1/8.1.29/p…

React 学习——行内样式、外部样式、动态样式

三种样式的写法 import "./index.css"; //同级目录下的样式文件 function App() {const styleCol {color: green,fontSize: 40px}// 动态样式const isBlock false;return (<div className"App">{/* 行内样式 */}<span style{{color:red,fontSiz…

工程视角:数据结构驱动的应用开发--字典(dictionary),列表(list)与实体

这里写目录标题 业务业务场景流程分析 实现数据访问层&#xff08;DAL&#xff09;业务逻辑层&#xff08;BLL&#xff09;用户界面层&#xff08;UI&#xff09;工具类 设计思路为什么抽出工具类关于U层使用字典的好处工程视角 业务 业务场景 在一个金融应用系统中&#xff0c…

.netcore TSC打印机打印

此文章给出两种打印案例&#xff0c; 第一种是单列打印&#xff0c;第二种是双列打印 需要注意打印机名称的设置&#xff0c;程序中使用的打印机名称为999&#xff0c;电脑中安装打印机时名称也要为999。 以下是我在使用过程中总结的一些问题&#xff1a; 一 TSC打印机使用使…

【Node.js基础02】fs、path模块

目录 一&#xff1a;fs模块-读写文件 1 加载fs模块对象 2 读制定文件内容文件 3 向文件中写入内容 二&#xff1a;path模块-路径处理 1 问题引入 2 __dirname内置变量 使用方法 一&#xff1a;fs模块-读写文件 fs模块封装了与本机文件系统交互方法和属性 1 加载fs模块…

弹性布局 flex layout HTML CSS

文章目录 效果图参考文档代码 效果图 其实弹性布局的好处是&#xff1a;当网页大小变化&#xff08;如窗口resize&#xff09;时&#xff0c;处于弹性容器(flex container)中的弹性元素(flex item) 之间的距离也会变化。 需要特别注意的是&#xff1a; 弹性布局的主要CSS如下。…