• linux platform简易的理解


    Platform是一种模型

    它把硬件和软件分离出来,就像单片机一样的,你在使用某个模块的时候,第一要看原理图,知道这个模块连在那个引脚上,要知道有多少个引脚,第二就是根据模块手册的上信息,去操作这些引脚。

    platform的device就是硬件(多少个引脚,用了什么资源),platform的driver就是驱动(操作这些引脚来初始化模块)。

    所以就要有两个文件:

    一个xxx_device.c,里面描述了硬件相关的信息。

    一个xxx_driver.c,里面描述着怎么操作模块。

    这两个文件怎么匹配起来?

    在结构体platform_device 中有一个成员name,它会和结构体platform_driver中的成员driver的成员name匹配,名字一样,说明driver可以去使用device的资源(即硬件)。

    匹配成功会发生什么?

    结构体platform_driver中有一个成员函数指针 probe,一旦匹配成功,就会去执行probe函数,在这里面就是初始化的操作了。

    设备树与platform

    可以去使用设备树,这样可以不需要额外写device.c文件。如果要使用设备树的方式,设备树中compatible中的属性值与结构体platform_driver的成员id_match_table的值保持一致,当这两个属性一致时,也会去调用probe函数,再调用相关函数即可获取到设备树中的节点资源,初始化模块。

     

  • 相关阅读:
    DEVMODE 结构体
    VS2019如何将主菜单从标题栏移到单独一行
    最近学到的东西
    线上问题处理相关思考
    mybatis+spring
    jenkins
    自动化case校验点
    Sqlserver大数据迁移,导出-》导入(BULK INSERT)
    阿里P7大佬带你解密Sentinel
    《高可用系列》-限流神器Sentinel,不了解一下吗?
  • 原文地址:https://www.cnblogs.com/r1chie/p/14057986.html
Copyright © 2020-2023  润新知