当前位置: 首页 > news >正文

【北京迅为】《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.lryc.cn/news/408129.html

相关文章:

  • C#初级——枚举
  • Linux 动静态库
  • 微信小游戏之 三消(一)
  • 软件测试---Linux
  • 数据库之数据表基本操作
  • 利用OSMnx求路网最短路径并可视化(二)
  • 双向门控循环神经网络(BiGRU)及其Python和MATLAB实现
  • 【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator
  • Unity UGUI 之 自动布局组件
  • 网络基础之(11)优秀学习资料
  • QT自定义无边框窗口(可移动控制和窗口大小调整)
  • Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)
  • RxJava 面试题及其答案
  • 【Rust】所有权OwnerShip
  • qt总结--翻金币案例
  • 最清楚的 BIO、NIO、AIO 详解!
  • 八股文学习第二天| HTTP请求报文和响应报文是怎样的,有哪些常见的字段?,HTTP有哪些请求方式?,GET请求和POST请求的区别?
  • C++初阶学习第四弹——类与对象(中)
  • 【计算机网络】期末实验答辩
  • 一步步教你学会如何安装VMare虚拟机(流程参考图)
  • WebGoC题解(14) 151.(2017dloi小乙)第5题 巧克力甜度(sweet)
  • 深入探索PHP框架:Symfony框架全面解析
  • 内卷的利与弊
  • 用Java手写jvm之实现查找class
  • 【React】组件:全面解析现代前端开发的基石
  • java学习--包装类
  • Python Django功能强大的扩展库之channels使用详解
  • 推荐3款将相片变为动漫风格的免费AI工具推荐
  • 【职业学习】高效工作法
  • 【iOS】Tagged Pointer