你好,游客 登录 注册 搜索
背景:
阅读新闻

platform总线概述

[日期:2017-08-15] 来源:Linux社区  作者:11674570 [字体: ]

一:什么是平台总线
    相对于I2C SPI USB等总线实际存在的物理总线来说,平台总线是一种虚拟的总线,它并不对应实际的物理总线。
二:为什么需要平台总线
    linux从2.6起就加入了一套新的驱动管理和注册的机制platform平台总线。平台总线中使用platform_device()来注册一个设备,使用platform_driver()来注册一个驱动。于传统的bus/device/driver机制相比,platform由内核进行统一管理,在驱动中使用资源,提高了代码的安全性和可移植性。个人理解,platform总线的作用就是用于将哪些不对应实际的物理总线的设备和驱动进行一个统一的管理。

三:platform总线的主要函数
1:platform_device_register():向platform总线注册设备,调用层次关系
platform_device_register()
    platform_device_add()
        device_add()    // 向内核注册设备

2:platform_driver_register():向platform总线注册驱动,调用层次关系
platform_driver_register()

    driver_register()  //向内核注册驱动
3:platform_match():匹配函数,
static int platform_match(struct device *dev, struct device_driver *drv)
{
    struct platform_device *pdev = to_platform_device(dev);
    struct platform_driver *pdrv = to_platform_driver(drv);
    /* match against the id table first */
    if (pdrv->id_table)
        return platform_match_id(pdrv->id_table, pdev) != NULL;
    /* fall-back to driver name match */
    return (strcmp(pdev->name, drv->name) == 0);
}

分析可知,platform的匹配过程是:
    先根据idtable的名字进行匹配,如果匹配失败,则再根据device和driver的名字进行匹配,如果匹配还匹配不成功,则说明驱动和设备不匹配,如果这里匹配失败,则会调用platform_driver_probe()函数

4:platform_driver_probe():驱动和设备匹配成功后自动执行的探测函数。

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-08/146262.htm

linux
相关资讯       platform  platform总线 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款