RK3568平台 平台总线模型Platform

一.平台总线模型介绍

编写了一个独立的驱动程序,但这样编写出来的驱动程序在重用性和可移植性上是很低的,无论之后要编写一个同类型的驱动还是将该驱动更换一个平台,都要花费时间重新修改驱动代码,而驱动的分离和分层这一软件思路的提出。

平台总线(Platform bus)是 Linux 内核中提供的一种虚拟总线,用于管理和组织与特定硬件平台相关的设备和驱动。它充当了平台设备(platform device)和平台驱动(platformdriver)之间的桥梁,负责将它们进行匹配和绑定。

当系统注册一个平台驱动时,平台总线会寻找与之匹配的平台设备。它会遍历已注册的平台设备列表,尝试与每个平台设备进行匹配,直到找到与平台驱动匹配的设备为止。一旦找到匹配的设备,平台总线会将平台设备与平台驱动进行绑定,使得驱动可以管理和控制与该设备相关的操作。

二.平台总线的优势

我们编写的驱动程序将驱动和设备相关的内容放在一起,但是当涉及到多个相同类型的设备时,这种方法会引发一系列问题。举个例子,假设我们有一个硬件平台,该硬件平台上存在了 500 个模块,这些模块都使用了 LED 灯。如果我们使用杂项设备来编写驱动,虽然相比字符设备,杂项设备的代码量较少,但我们仍旧需要编写500 份类似的代码,从而生成相应的设备节点,以供上层应用在不同模块上控制 LED 灯。编写 500 份重复的代码会带来两个问题。首先,会造成大量重复劳动。其次,代码的重用性较差。如果我们需要将这些驱动从一个平台移植到另一个平台,就需要逐个修改驱动代码,尽管只需修改与硬件相关的部分,但仍旧是一个很大的工作量而在引入了平台总线模型后,这些问题就得到了很好地解决。通过使用平台总线模型,将设备驱动和平台设备进行了分离。这样一来,我们只需编写一份通用的驱动代码即可,然后针对不同的平台设备进行配置,这就大大减少了重复编写代码的工作量,并提高了驱动代码的重用性。当我们需要将驱动移植到不同的平台时,只需对硬件相关的部分进行适配即可,其他部分可以保持不变。

待更新。。。。。。。。。

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

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

相关文章

Pytorch基础:数据读取与预处理——图像读取与存储

Pytorch基础:数据读取与预处理——图像读取与存储 1.读取图片2. 使用 matplotlib 库显示和保存图像 1.读取图片 图像库 opencv-python、imageio、PIL 等都具有图像读取的功能。 (base) PS C:\Users\阳> conda activate yang (yang) PS C:\Users\阳> python …

【angular教程240109】06 Angular父子组件以及非父子组件之间通讯

【angular教程240109】06 Angular父子组件以及组件之间通讯 目录: 【angular教程240109】06 Angular父子组件以及组件之间通讯一、子组件获取父组件的数据、执行子组件的方法 父组件给子组件传值-input1子组件 二、子组件通过Output 结合事件驱动实现组件通讯1 子组…

onlyOffice实践-在线协同word、ppt、excel编辑

一、x86 安装docker 18.09.0版本及以上(我的版本是18.09.0)配置docker阿里源,下载国外的镜像加速(参考docker的常规使用总结-CSDN博客)docker search 186184848/documentserver选择对应的破解版本下载(这个…

脚本编程游戏引擎会遇到哪些问题

在游戏开发中,脚本编程已经成为了一种非常常见的方式,用来实现游戏逻辑和功能。但是脚本编程游戏引擎也可能会面临一些挑战和问题。下面简单的探讨一下都会遇到哪些问题,并且该如果做。 性能问题 脚本语言通常需要运行时解释执行&#xff0…

Android 自动滚动的RecyclerView,手动滑动和自动滑动无缝斜街,手动滑动时数据不重复

概要 做一个自动滑动的列表,用于展示聊天记录或者通知栏信息等,还是使用主流的RecyclerView来做。网上有很多案例,但当手动滑动时会一直无限循环,数据重复的出现,如果想要自动滑动时能无限循环,手动滑动时又…

端到端自动驾驶

自动驾驶主要流程:感知->预测->规划 预测是预测周围目标(车、行人、动物等)的轨迹,规划是规划自车的运动轨迹。 UniAD[CVPR 2023]: 使用transformer架构,统一自动驾驶流程,完成所有检测&#xff0c…

Springboot对接ceph集群以及java利用s3对象网关接口与ceph集群交互

springboot中引入相关依赖 <dependency><groupId>software.amazon.awssdk</groupId><artifactId>regions</artifactId><version>2.22.13</version></dependency><dependency><groupId>software.amazon.awssdk<…

【Kafka-3.x-教程】-【六】Kafka 外部系统集成 【Flume、Flink、SpringBoot、Spark】

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

Pycharm 重命名SSH的conda解释器后,提示该解释器不可用

结论 目前已知是BUG&#xff0c;截至投稿日未修复已经提交给youtrack.jetbrains.com&#xff0c;如下图&#xff1a; 解决方法&#xff0c;待更新…

monorepo工程开发交互nodejs命令行程序

前言 [MixedCli](https://zhangfisher.github.io/mixed-cli/)为monorepo应用开发命令行程序提供了一套解决方案&#xff0c;提供了更加友好的命令行开发体验。 第1步&#xff1a;创建工程 以一个典型的monorepo为例开始&#xff1a; flexapppackagescli corevuereact示例…

如何给AVR16芯片解锁

AVRM16核心板本身集成了强大的芯片自解锁功能模块&#xff0c;当由于熔丝位设置错误&#xff0c;导致芯片锁死&#xff0c;无法正常使用时候&#xff0c;可以利用畅学AVR16核心板上的解锁功能给芯片解锁。 &#xff08;如果芯片没有锁死&#xff0c;可以跳过此步骤&#xff09…

ffmpeg解码音频planar模式和packed模式

转载&#xff1a;原文地址&#xff1a; FFmpeg连载4-音频解码-阿里云开发者社区ffmpeg连载系列https://developer.aliyun.com/article/1197520 导读 前面我们介绍了使用FFmpeg解码视频&#xff0c;今天我们使用FFmpeg解码音频。我们的目标将mp4中的音频文件解码成PCM数据&…

python 文本内容随机生成器

这段代码是一个用于生成指定长度的随机文本的函数。主要包括两个函数&#xff1a;generate_text()和generate_other_content()。 generate_text(original_text, length)函数接受两个参数&#xff1a;原始文本和生成文本的长度。该函数的作用是根据原始文本生成指定长度的文本。…

Java异常及网络编程

异常续 throws关键字 当一个方法中使用throw抛出一个非RuntimeException的异常时&#xff0c;就要在该方法上使用throws声明这个异常的抛出。此时调用该方法的代码就必须处理这个异常&#xff0c;否则编译不通过。 package exception; ​ /*** 测试异常的抛出*/ public clas…

【普中开发板】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易密码锁设计 1.主要功能&#xff1a;资料下载链接&#xff1a; 实物图&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 【普中】基于51单片机的简易密码锁设计 ( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.16(有低版本) 程…

vue知识-04

计算属性computed 注意&#xff1a; 1、计算属性是基于它们的依赖进行缓存的 2、计算属性只有在它的相关依赖发生改变时才会重新求值 3、计算属性就像Python中的property&#xff0c;可以把方法/函数伪装成属性 4、computed: { ... } 5、计算属性必须要有…

css的一些属性

我们在写项目的时候&#xff0c;会遇到多种多样的样式&#xff0c;大部分都是由css来实现的&#xff0c;css可以让我们的页面更美观&#xff0c;css通常是配合HTML使用&#xff0c;代码较为简单! 下面我就给大家举几个较为常用的一些css属性。 1.CSS中怎样让元素圆角化&#…

【从零开始学习微服务 | 第一篇】什么是微服务

目录 前言&#xff1a; 架构风格&#xff1a; 单体架构&#xff1a; 分布式架构&#xff1a; 微服务&#xff1a; 总结&#xff1a; 前言&#xff1a; 在当今快速发展的软件开发领域&#xff0c;构建大型应用程序已经成为一项巨大的挑战。传统的单体应用架构往往难以满足…

未完成销量任务的智己汽车突发大规模车机故障,竞争压力不小

2024年刚开年&#xff0c;智己汽车便上演了一出“开门黑”。 近日&#xff0c;不少车主在社交平台发帖&#xff0c;反映智己LS6出现大规模车机故障&#xff0c;包括但不限于主驾驶屏幕不显示车速、档位、行驶里程&#xff0c;左右转盲区显示失效&#xff0c;无转向灯、雷达提醒…

CSS-设置背景图片的大小

要设置背景图片的大小&#xff0c;您可以使用CSS的background-size属性。这个属性允许您指定背景图片的尺寸。 background-size属性可以接受不同的值&#xff0c;包括&#xff1a; auto&#xff1a;保持原始图片的尺寸。cover&#xff1a;将图片缩放到完全覆盖背景区域&#…