zoukankan      html  css  js  c++  java
  • Linux 总线、设备、驱动模型 与 设备树

    1.总线、设备、驱动模型

      本着高内聚、低耦合的原则,Linux 把设备驱动模型分为了总线、设备和驱动三个实体,这三个实体在内核里的职责分别如下:

         

      设备和驱动向总线进行注册,总线负责把设备和对应的驱动绑定起来。

      驱动通过总线 API 接口 platform_get_resource() 取得板级设备信息,这样驱动和设备之间就实现了高内聚、低耦合的设计,

    无论设备怎么换,驱动都可以岿然不动。

      代码架构如下图所示:

    2、设备树

      引入设备树之前,关于硬件设备的描述信息一般放在一个个类似 arch/xxx/mach-xxx/board-xxx.c 的文件中,

    这些代码中除了描述的设备信息不同,其代码逻辑都是一样的。我们有理由,把这些设备端的信息,用一个非 C 的脚本语言来描述,这个脚本文件,就是 Device Tree(设备树)。

    设备树是一种 dts 文件,它用简单的语法描述每个板子上的所有设备,以及这些设备的连接信息。

    设备树文件存储在目录 arch/xxx/boot/dts 中,每一个 board 对应一个 dts 文件。

      引入设备树之后,大量重复的 C 代码(arch/xxx/mach-xxx/board-xxx.c)被去除——驱动的归于驱动 C 代码,设备的归于设备树脚本文件。

    arch/arm/mach-xxx/board-a.c 这样的文件永远地进入了历史的故纸堆,换个板子,只要换个 Device Tree 文件就好。

      代码架构如下图所示:

  • 相关阅读:
    codevs 1115 开心的金明
    POJ 1125 Stockbroker Grapevine
    POJ 2421 constructing roads
    codevs 1390 回文平方数 USACO
    codevs 1131 统计单词数 2011年NOIP全国联赛普及组
    codevs 1313 质因数分解
    洛谷 绕钉子的长绳子
    洛谷 P1276 校门外的树(增强版)
    codevs 2627 村村通
    codevs 1191 数轴染色
  • 原文地址:https://www.cnblogs.com/dhqy/p/10736008.html
Copyright © 2011-2022 走看看