转:http://blog.csdn.net/Q1302182594/article/details/52412202
1 简介
在没有设备树以前,需要将开发板的信息硬编码到内核的.c源文件中。不同开发板的硬件配置不一样,因此内核中存在大量的板级配置源码,从而造成代码冗余。
针对上述现象,PowerPC使用设备树的方法将板级配置信息独立存放到.dts和.dtsi文件中。此时,针对不同的开发板,只需要配置相应的.dts和.dtsi文件即可,从而避免大量重复的编码工作。
由于设备树具有上述优点,2011年开始Linux内核大规模采用这种机制(起初只是PowerPC使用而已),因此对于现在从事Linux底层开发的人员而言,必须了解设备树的原理和使用方法。
2 设备树语法
关于设备树的语法,网上资料较多,具体可以参考[1][9],本文不再赘言。
3 设备树展开
定义好设备树文件之后,内核是如何使用设备树的呢?参考资料[2]针对tiny4412开发板对内核如何展开设备树进行了较为具体的分析,参考资料[11]更是对设备树的源码进行了较为详细的分析。
参考资料
[1]ARM Linux 3.x的设备树(Device Tree)
[2]基于tiny4412的Linux内核移植 -- 设备树的展开
[3]Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
[4]linux设备树dts移植详解
[5]设备树概述
[6]imx6设备树pinctrl解析
[7]Linux设备树(Linux Device Tree)学习
[8]我眼中的Linux设备树(Device tree)概述
[9]Linux设备驱动开发详解--基于最新4.0内内核
[10]Device Tree(二):基本概念
[11]Device Tree(三):代码分析