文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

linux中platform是什么

2023-07-02 16:02

关注

这篇文章主要讲解了“linux中platform是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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中。这个文件中实现了平台总线对象和对象操作方法方面的内容。

两个重要的数据结构体

platform_driver

这是内嵌一个device_driver 的结构体对象,其中定义了操作对象的方法。

platform_device

它是一个内嵌了device结构体对象,其中定义了设备描述资源的属性。

具体对象定义如下:

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; //用户自定义数据,扩展数据};

注册平台总线驱动的函数:

int platform_driver_register(struct platform_driver *drv)

注册平台总线设备的函数:

int platform_device_register(struct platform_device *pdev)

感谢各位的阅读,以上就是“linux中platform是什么”的内容了,经过本文的学习后,相信大家对linux中platform是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯