type
status
date
slug
summary
tags
category
created days
new update day
icon
password
Created_time
Aug 25, 2025 09:10 AM
Last edited time
Dec 15, 2025 09:16 AM

一、设备树诞生的根本原因:ARM生态的"碎片化困境"

传统BSP开发模式的问题:

notion image
典型问题案例:三星S3C2410 ARM9处理器在内核中的实现:
  • arch/arm/mach-s3c2410/mach-smdk2410.c (1500+行代码)
  • 硬编码资源定义:
后果:内核中仅ARM架构就有200+个mach-目录,每次硬件变更都需要重新编译内核。

二、设备树设计框架:分层硬件描述模型

设备树框架架构图:

notion image
典型设备树结构示例:

三、设备树核心机制深度解析

1. 地址映射机制

notion image
实际案例

2. 中断映射机制

notion image
代码实现

四、设备树编译与运行时流程

notion image

关键步骤详解

  1. 编译阶段
    1. 启动阶段
      1. 内核解析
        1. 驱动匹配

          五、高级应用:设备树覆盖(Overlay)实战

          Overlay框架图:

          notion image

          全志D1开发板添加PWM设备

          加载流程

          六、设备树与传统开发模式对比

          notion image

          开发流程对比表:

          阶段
          传统模式
          设备树模式
          硬件变更
          修改内核源码,重新编译
          修改.dts,单独编译DTB
          驱动获取参数
          从platform_data结构体读取
          通过OF API解析设备树节点属性
          多板卡支持
          每个板卡需独立内核镜像
          单一内核+不同DTB文件
          外设扩展
          修改内核并重新编译
          动态加载DT Overlay

          驱动代码对比

          1. 分层设计原则
            1. 兼容性声明规范
              1. 引脚控制设计
                设备树通过结构化数据描述(DTS)、标准化编译链(DTC)、运行时解析框架(OF API)三位一体的设计,实现了:
                1. 硬件抽象层
                  1. notion image
                核心价值点:
                • 解耦性
                • 可扩展性
                • 可维护性:减少80%板级特定代码
                • 标准化
                1. 性能数据
                    • 内核镜像大小减少:35-60%
                    • 启动时间减少:15-30% (省去硬编码初始化)
                    • 支持硬件变体数量:无限扩展

                参考资料

                 
                在 Fedora 上使用 crosstool-ng 配置交叉工具链【转载】linux设备模型之kset/kobj/ktype分析 - LoyenWang - 博客园
                Loading...