Linux中platform用于做什么,有什么特点和好处

Admin 2022-07-21 群英技术资讯 491 次浏览

这篇文章将为大家详细讲解有关“Linux中platform用于做什么,有什么特点和好处”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在linux中,platform是一个虚拟总线,与真实的“spi/sdio/usb/pcie”等总线对应;platform能够把硬件和软件分离出来,platform所描述的资源有一个共同点是在CPU的总线上直接取址,平台设备会分到一个名称以及一系列诸如地址和中断请求号之类的资源。

本教程操作环境:linux7.3系统、Dell G3电脑。

linux中platform是什么意思

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)



以上就是关于“Linux中platform用于做什么,有什么特点和好处”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: linux中platform

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服