zoukankan      html  css  js  c++  java
  • 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函数,再调用相关函数即可获取到设备树中的节点资源,初始化模块。

     

  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/r1chie/p/14057986.html
Copyright © 2011-2022 走看看