[linux driver]驱动模型中为什么用一个虚拟的platform_bus/device?

Linux 设备驱动开发 —— platform 设备驱动 一、platform总线、设备与驱动         一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等确不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为platform总线,相应的设备称为platform_d 阅读详情

虚拟总线在linux驱动模型中出现,目的很明确,为众多没有“实际领袖”bus的controller找个共同的虚拟的“精神领袖”,既然是虚拟的,当然就可以挂接很多controller了,比如SPI controller, I2C controller等等;

那为什么驱动都要找个Bus挂接一下呢?---- 是为了管理大量的同类资源及其驱动而出现的一种管理方式,Bus-x负责所有X设备及其驱动的load-unload的管理工作;【如sysfs以及电源管理】

虚拟总线和普通总线一样,为Device驱动程序的“可移植”提供了必备的基础,有了Bus,就可以隔离BSP和具体的device driver,BSP上面的x-bus定义了当前board所需x-device的资源及其配置信息,然后随便取一个通用的device driver,就可以调用bus提供的API去获取“data”了,当然,你临时为此board写的driver,也可以被其他board借用了!

platform 与bus device driver模型的关系 学习Linux时相信大家都有听说过如下概念: 字符设备,块设备,网络设备。我已经无法明确界定是什么时候linux开始引入这些设备模型,总之从开始接触2.4 kernel时已经有这些基本类型了。 在Linux2.6内核引入了bus_type、device_driver、device分别描述总线,驱动和设备,这就是所谓的“总线设备驱动模型”。总线是三者联系起来的基础,通过一种总线类型,将设备和驱动 阅读详情

相关推荐

Linux设备驱动模型框架分析(三)——LDDM的实体bus_type、device和device_driver

在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其它设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者Platform Bus。 device和device driver是Linux驱动开发的基本概念。Linux kernel的思路很简单:驱动开发,就是要开发指

newdye的专栏 3256

xorg初始化过程分析,device节的自动配置

GDevPtr autoConfigDevice(GDevPtr preconf_device) {     GDevPtr ptr = NULL;     char *matches[20];          /* If we have more than 20 drivers we're in trouble */     int num_matches = 0, num_scre

linux-0.11调试教程 2707

STM32电机库(ST-MC-Workbench)实战指南——三电阻电流采样电路参数配置详解

本文详细解析了STM32电机库(ST-MC-Workbench)中三电阻电流采样电路的参数配置方法,涵盖电阻选型、放大增益计算、滤波时间优化等关键步骤。通过实战案例和调试技巧,帮助工程师快速掌握电流采样技术,提升电机控制系统的精度与稳定性。特别针对ST-MC-Workbench界面参数设置提供了详细指导。

weixin_29186249的博客 505

Linux Platform总线+SPI总线分析

本文以MPC8308(powerpc架构),HX软件包为依据,详细内容可参考源码 CPU: e300c3MPC8308 400MHz BOARD: Freescale MPC8308ERDB DRAM: 256M NAND: 1024M

风之伤 2864

【5G演进】4G到5G演进之网络架构与协议栈

4G到5G演进之网络架构与协议栈

Learning makes me happy (0^◇^0) 5530

手把手教你用LcmSim+TakeDotLib打造完美LCD显示效果(附12x12汉字配置模板)

本文详细介绍了如何使用LcmSim模拟器与TakeDotLib标准字库工具优化LCD显示效果,包括字体选择、字库生成和实体设备验证。通过12x12汉字与8x16 ASCII的黄金比例配置,帮助开发者解决嵌入式开发中的显示难题,提升用户体验。附赠12x12汉字配置模板,可直接用于项目。

weixin_29205061的博客 136

xserver框架浅析

这个我们应该分成几大块来说吧,kdrive和xorg的处理是很类似的。kdrive的驱动都在这个目录下面hw/kdrive/linux大家看到有键盘,鼠标,触摸屏,evdev等等的驱动。其实说白了,在linux系统上面,驱动是分好几部分的,如果我们从最上层来看,我们看到的是图形界面,也就是xserver,实际上xserver这里有这里的驱动层。以input为例吧,我们看看这个地方。http://x

5670

基于Python适用于YOLO目标检测算法的图片数据增强处理

为了增强模型的鲁棒性以及数据的丰富性,同 时为了防止由于数据过少发生过拟合,本设计对数 据集进行数据增强处理,包括随机亮度调节、随机 对比度调节、随机饱和度调节、加入高斯噪声、水 平翻转、运动模糊和旋转 15°

weixin_67136409的博客 699

LINUX驱动模型中bus与platform_bus区别和异同

 LINUX驱动模型中bus与platform_bus区别和异同 首先要明确的是platform_bus是BUS的一个字集,也就是说platform_bus是BUS定义的一个总线类型。可以看到platform与其它BUS下的总线是等级的。也就是说platform也是总线的一种。我们可以看到I2C,USB等总线下面都可以挂接多个相关设备,这说明i2c usb等总线是管理这类设备的一个主控

YACHL882828的博客 1940

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

本次安装实验基于苹果m2芯片的mac系统,使用vmware fusion搭建三台ubuntu24分布式虚拟机,确保在三台机器上安装了Java jdk8,并配置了免密码登录,网络互通,防火墙关闭,授时服务器已经同步。访问apche官网源,下载3.3.4版本,我们用二进制通用版即可,因为hadoop运行在java环境,跨平台性使得无需编译arm架构版本。至此,Hadoop的安装完成,包括hdfs文件存储系统,mapreduce计算框架,yarn资源管理系统均能正常、稳定使用。

qq_31412425的博客 2160

TensorFlow2深度学习实战(十四):目标检测算法 YOLOv4 解析

最易上手的【计算机视觉】小白教程!

不积跬步,无以至千里! 7635

Linux驱动之platform_bus、platform_device、platform_driver

概述: 在Linux驱动里面platform通常叫做platform bus,直译过来就是平台总线,实际上,是软件里面虚拟出来的总线,俗称虚拟总线。虚拟总线有什么作用呢?以及怎么用linux虚拟总线子框架?这就是本文要阐述的两个问题。 Platform Bus的作用 简单来说,有以下三个作用: 加载平台资源信息,即将reg(控制器,寄存器地址,memery地址)、interrupts(中断)信...

子木 2807

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1899

platform device/platform driver/platform bus解释整理

Platform Device and Drivers从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platform bus使用最小结构来

lihaoweiV的专栏 1980

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux设备模型(5) — platform bus/device/driver

本文有部分借鉴 wowo tech ,感谢作者的无私分享 目录 1、简介 2、Platform 软件架构 3、Platform 模块向其它模块提供的 APIs 3.1、数据结构 3.1.1、platform_device 3.1.2、platform_driver 3.2、APIs 3.2.1、Platform Device 提供的 APIs 3.2.2、Platform...

StephenZhou 2582

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

platform_bus、device及driver 注册及介绍

在目前常用的bus, driver, device 框架中,这三者的关系及注册是怎么样的呢?让我们一探究竟

保持一颗永远好奇、勇于探索的心 1238

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于platform的总线、设备、驱动模型分析

如I2C总线,I2C总线是集成在SOC内部的,因此总线是跟着平台走到,不同芯片厂商,所使用的I2C控制器不同,引起其驱动也有所不同,但又一个问题,如果不同芯片厂商与相同的I2C设备进行通讯,使这些外围的I2C设备工作起来,如果不对其解耦,那么每一个SOC平台都需要写一个对应的I2C设备驱动,这样耦合性过高,不方便移植。由 3.4 可知 module_init最终会注册一个设备到对应总线的总线设备链表中,再调用platform_driver_register时,即在总线中找到对应的设备,匹配成功。

jamecer的博客 1158

Linux Platform 平台设备驱动模型简介

内核版本:linux-3.10.61 1、Platform介绍 Platform 平台设备设备驱动模型的作用是将驱动的实现和资源分离,是一个虚拟的总线平台。这其中存在三个成员bus,device,drive。device需要在driver之前装载进内核,因为匹配工作在注册driver时实现。 Bus:由一个链表实现,不对应实际的物理总线。 Device:驱动的资源比如一些 I/O端口,中断号之类的。 Drive:驱动的功能实现比如 注册驱动,实现file_operations 等 2、主要结构体

JJ1116的博客 3061

Linux内核平台设备驱动模型platform_device和platform_driver框架

关于Linux内核的平台设备驱动模型框架

D584640810的博客 4390

Linux总线设备驱动模型深度理解

物理上的总线是一堆电路线路连线(比如I2C总线、SPI总线、USB总线等等),软件上用来描述控制器与外设的连接关系,内核使用Bus结构体来描述这种连接关系,本质上总线Bus只是一个数据结构,它的名字用对应通信接口命名罢了,而一些驱动程序没有实际对应的通信接口(比如GPIO),那就用platform来命名吧,我们冠名为虚拟的总线!2、接下来看总线设备驱动模型和各类子系统(以platform设备驱动为例子,platform可以理解为通用简单的总线设备驱动的实现之一)的实现细节;2、总线设备驱动 的含义?

STCNXPARM的博客 1276

Linux Platform 虚拟总线驱动模型

/ 定义内存资源:起始地址 0xfd60004,大小 4 字节0xfd60004// 定义中断资源:中断号 23// 初始化硬件、注册设备等return 0;// 释放资源return 0;{ },.name = "my_driver", // 用于名称匹配.of_match_table = of_match_ptr(my_of_ids), // 设备树匹配表},.id_table = my_ids, // 可选 ID 表函数功能根据节点名称查找设备树节点。

gede7890的博客 826

Linux驱动-platform驱动模型

Linux-驱动开发-platform驱动模型

weixin_47491758的博客 1096

platform_bus,platform_driver,platform_bus

一、platform_bus 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。Platform总线是2.6 kernel中最近引入的一种虚拟总线,主要用来管理CPU的片上资源,具有更好的移植性,因此在2.6 kernel中,很多驱动都用platform改写了。 /linux/device.h

xp_super的专栏 888

Linux驱动中platfrom-driver/device注册及probe执行过程分析

1、platform系统 platfrom系统在linux内核中包含三个部分 ①platfrom-bus虚拟总线,是一个内核抽象出来的虚拟的总线,在linux内核中以链表的形式表示,platform-driver/device通过挂载在platform虚拟总线上,实现设备和驱动之间的匹配,在内核表现形式为一系列platform-driver/device结构体组成的链表形式; ②platform-driver模型,内核中抽象出来的driver模型,表现形式为platfrom-driver的结构体,它的

QQ135102692的博客 2485
上一篇: [Linux driver] Hello world编译过程解析
下一篇: [Linux driver]解密module_init
embedded_man2011
博客等级 码龄16年 15粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值