一:设备树概念
Linux内核发展早期arm架构关于SOC和开发板及其外设的板级文件极其庞大,随着越来越多的SOC和开发板的诞生,其板级文件以指数级增长,同时越来越多的“垃圾文件”被编译进了Linux内核中。对此linus有话要说:“This whole ARM thing is a fucking pain in the ass”,arm的东西糟糕透顶了,于是arm就引入了powerpc架构中的设备树技术,将这些描述板级信息的内容从Linux中分离出来,用一个专属的文件格式来描述,这个文件就是设备树,文件扩展名为“.dts”,对于相同SOC作出的不同开发板的共同信息则提取到“.dtsi”文件。Linux内核用到的是DTC工具对DTS源文件编译后的DTB二进制文件,DTC工具源码位于linux内核scripts/dtc目录下,设备树源文件DTS位于arch/arm/boot/dts,编译设备树命令为“make dtbs”。
二:设备树语法
1,设备节点
/ {
aliases {
can0 = &flexcan1;
can1 = &flexcan2;
... ...
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <0>;