Linux 设备树
系列文章目录
一、介绍
设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等,如下图所示:
在以前的内核中,还没有采用设备树,内核源码中有大量的arch/arm/mach-xxx和arch/arm/plat-xxx文件夹,用于存储不同平台的板级信息,但随着芯片产业的发展,加入内核中的板级信息日益庞大,导致内核“虚胖”,所以引入了PowerPC等架构已经采用的设备树。将这些描述板级硬件信息的内容都从Linux中分离,用一个专属的文件格式类描述,这个专属的文件就叫做设备树,文件扩展名为.dts。一个SOC可以出很多不同的班子,不同的板子肯定有相同的部分信息,将这些相同信息提取到一个文件中,其他dts文件引用这个文件,避免重复定义,这个通用文件就是dtsi文件,有点类似于C语言中的头文件。
二、分析
Linux设备树1 —— 基础说明
Linux设备树2 —— dts/dtsi格式
Linux设备树3 —— dtb格式格式
Linux设备树4 —— 内核head.S对uboot传参的处理
Linux设备树5 —— machine_desc
Linux设备树6 —— 设备树运行时配置信息
Linux设备树7 —— 设备节点转换
Linux设备树8 —— 根文件系统中查看设备树
Linux设备树9 —— 设备树数据流分析
Linux设备树10 —— 设备树文件结构解析以及总结
Linux 内核:设备树 学习总结
Linux 内核:设备树(1)dtb格式
工具
sudo apt-get install device-tree-compiler
dtc -I dts -O dtb -o <output_file>.dtb <input_file>.dts
dtc -I dts -O dtb -o mydevice.dtb mydevice.dts
hexdump -C /sys/firmware/fdt
ls -l /sys/firmware/
drwxr-xr-x 3 root root 0 1970年 1月 1日 devicetree
-r-------- 1 root root 57248 1月21日 14:33 fdt
# U-Boot 的 fdt 命令允许查看、修改和加载设备树
fdt print
dtoverlay --help
查找 DTS
# 1.
find arch/arm64/boot/dts/ -name *.dtb.cmd
arch/arm64/boot/dts/rockchip/.rk3568-firefly-aioj.dtb.cmd
# 2.
dtc -I fs -O dts -o output.dts /proc/device-tree
# 3.
qemu-system-aarch64 -cpu cortex-a72 -machine virt,gic-version=3,virtualization=on,dumpdtb=cortex-a72-virt.dtb
overlay
dtoverlay --help
在 Raspberry Pi 上使用设备树
设备树 overlay 机制深入拆解
dts overlay
overlay是Linux编译完后再
uboot下动态修改dtb文件
流程分析
具体分析见 Linux 设备树系列文章 。这里流程图补充下。
DTS 初始化主要分成 dtb 解析,以及相应设备注册两部分:
参考
☆
原文地址:https://blog.csdn.net/Liuqz2009/article/details/145288341
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!