什么是设备树
设备树(Device Tree)是一种数据结构,用于描述计算机硬件的布局和配置,特别是在嵌入式系统中。它帮助操作系统内核识别和初始化硬件组件。
记住 DT 应该是与操作系统无关的,因此任何特定于 Linux 的东西都不应该存在。
设备树的主要特点
- 设备树以树状结构描述硬件组件及其属性,包括 CPU、内存、总线、外设等。
- 通过设备树,操作系统可以在不修改内核代码的情况下支持不同的硬件平台。
- 设备树与内核代码分离,使得硬件配置可以独立于软件开发进行修改和更新。
设备树的组成
- 节点(Node):
- 每个节点代表一个硬件设备或组件。
- 节点可以包含子节点,形成层次结构。
- 属性(Property):
- 每个节点包含多个属性,用于描述设备的特性,如地址、大小、中断等。
设备树文件
- 源文件(.dts):
- 人类可读的文本格式,用于定义设备树结构和属性。
- 二进制文件(.dtb):
- 设备树源文件编译后的二进制格式,供引导加载程序和操作系统使用。
设备树是现代嵌入式系统中硬件抽象的重要工具,帮助实现硬件和软件的解耦,提高系统的灵活性和可维护性。
rtthread对设备树目前的支持状态
- 有相关软件包GitHub - RT-Thread-packages/fdt: Device Tree package in RT-Thread
- 能够看到在开机启动时加载了设备树
能否动态加载?未知 - DM2.0是什么?
- 目前能用DM2.0的BSP
BSP | |
---|---|
cvitek\cv18xx_aarch64 | |
raspberry-pi\raspi-dm2.0 | |
rockchip\rk3500 | |
rockchip\rk3568 | |
qemu-virt64-aarch64 |
- Duo的bsp里面有dtb而有些bsp没有
- 在RT-Thread-smart启动流程详解RT-Thread问答社区 - RT-Thread里面提及启动时rt_hw_board_init()对设备树如何处理
- 修改设备树适配驱动?貌似和linux下做法一致,未知,未涉及领域。
Duo256的设备树情况
不清楚文件来源
multi.its是用于描述 U-Boot 引导加载程序中的多核镜像配置。它定义了多个内核、设备树和配置的布局和属性。
参考文献/不知道的东西
- TFTP加载设备树内核&NFS挂载根文件系统演示,ARM-Linux完全入门,用最快的路径实现单片机到ARM-Linux的过度!_哔哩哔哩_bilibili
- 【内核驱动】设备树编译和加载_rockchip 单独编译设备树-CSDN博客
- DM : Device Model,这是一个用于描述和管理设备的抽象层,特别是在 U-Boot 引导加载程序中。设备模型提供了一种统一的方法来初始化和配置硬件设备。
- 设备树使用
- RT-Thread-smart启动流程详解RT-Thread问答社区 - RT-Thread
- Arduino中文社区
- RaspberryPi/docs/0011_SoC设备树DTS分析.md at master · ZengjfOS/RaspberryPi · GitHub