Linux中platform用于做什么,有什么特点和好处
Admin 2022-07-21 群英技术资讯 1154 次浏览
这篇文章将为大家详细讲解有关“Linux中platform用于做什么,有什么特点和好处”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在linux中,platform是一个虚拟总线,与真实的“spi/sdio/usb/pcie”等总线对应;platform能够把硬件和软件分离出来,platform所描述的资源有一个共同点是在CPU的总线上直接取址,平台设备会分到一个名称以及一系列诸如地址和中断请求号之类的资源。

本教程操作环境:linux7.3系统、Dell G3电脑。
platform为虚拟总线,与真实的spi/sdio/usb/pcie等总线对应
逻辑总线的的一个重要功能是发现设备并且找到合适的驱动以操作这个设备。
platform总线是一种虚拟的逻辑总线,满足逻辑互联功能。为了统一管理设备,platform可以把物理上不存在总线的一类设备,用平台总线统一把它们管理起来。
常见的总线如USB,SPI,UART,PCI,I2S等总线,是在物理上实实在在存在的总线。Linux系统为这类总线设计了一种统一管理它们的方法,即bus。同时也为在物理上没有总线的设备也统一设计了platform总线,所以Linux内核设计者就设计了platform总线,也就是说,plarform 总线就是为了SoC内部设备在物理上没有总线的设备设计的,它统一归属bus总线一类。
这样做的好处是,设备(device)端代码的编写者只关心具体的硬件部分,设备共性的部分(稳定不变的部分)被内核设计者完成了,这样降低了驱动编写的难度。
通过platform总线,可以将设备属性(也叫数据)和驱动分离,这样可以使用相同的驱动支持同一功能核心硬件的不同设备。这样避免了一个设备就需要一个驱动的现象,降低了重复性劳动。
扩展知识
platform平台总线相关定义
platform平台总线相关的对象定义在文件 drivers/base/platform.c中。这个文件中实现了平台总线对象和对象操作方法方面的内容。
两个重要的数据结构体
1、platform_driver
这是内嵌一个device_driver 的结构体对象,其中定义了操作对象的方法。
2、platform_device
它是一个内嵌了device结构体对象,其中定义了设备描述资源的属性。
具体对象定义如下:
1、platform_driver 对象定义
struct platform_driver
{
int (*probe)(struct platform_device *); //探测函数,安装设备,初始化设备,并且判断是否能成功(初始化成功,通讯成功等等)
int (*remove)(struct platform_device *); //从内核中删除这个设备
void (*shutdown)(struct platform_device *); // 关闭设备
int (*suspend)(struct platform_device *, pm_message_t state); //挂起
int (*resume)(struct platform_device *); //唤醒
struct device_driver driver; //驱动的通用属性
const struct platform_device_id *id_table; //设备ID表
};platform_device对象对定义:
struct platform_device
{
const char* name; //平台总线中设备的名字,在平台总线下有多个设备,每个设备都有自己的名称
intid; //设备的排序
struct devicedev; //所有设备通用的属性
u32num_resources; //设备资源,如IO等一些外设等的个数
struct resource* resource; //设备资源的首地址,和上面的个数num_resources一起构成一个数组来表示这个资源
const struct platform_device_id*id_entry; //设备ID表,表示同一种类型的几个设备的ID号,数组表示。
struct pdev_archdataarchdata; /* arch specific additions *///用户自定义数据,扩展数据
};注册平台总线驱动的函数:
int platform_driver_register(struct platform_driver *drv)
注册平台总线设备的函数:
int platform_device_register(struct platform_device *pdev)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍一下linux系统的优缺点,一些朋友可能对linux系统不是很了解,对于linux系统和Windows系统的选择比较纠结,对此,下文给大家总结了linux系统优缺点,大家可以了解看看。
linux可以运行两个tomcat。运行方法:1、利用“vim /etc/profile”命令写入环境变量,并利用“source /etc/profile”使配置生效;2、修改“apache-tomcat-10.0.12/conf”目录下的“server.xml”文件;3、修改两个“tomcat/bin”目录下的“startup.sh”与“shutdown.sh”文件即可。
在Linux中添加定时任务是比较经常遇到的需求,那么我们如何来实现添加呢?crond是Linux下用来周期性的执行某种任务或者等待处理某些事件的一个守护进程,下面小编就介绍下如何用crond命令来添加定时任务,有需要的朋友就继续往下看吧。
在linux中,可以利用echo命令的“-n”参数来实现不换行;echo命令与PHP的echo指令类似,是用于输出字符串的,当参数设置为“-n”时,会取消输出后行末的换行符号,也即内容输出后不换行,语法为“echo -n 输出内容”。
linux创建文件夹命令是mkdir,语法为【mkdir (选项)(参数)】,其中Z为设置安全上下文,当使用SELinux时有效,version显示版本信息。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008