设备树简介
- 设备树(DeviceTree),将这个词分开就是“设备”和“树”,描述设备树的文件叫DTS(DeviceTreeSource),这个DTS文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU数量、内存基地址、IIC接口上接了哪些设备、SPI接口上接了哪些设备等等。
- DTS是设备树源码文件,DTB是将DTS编译以后得到的二进制文件。而Linux识别的是二进制文件,所以就需要DTC将.c文件编译为.o。同时,为了调试方便,该工具也支持反编译
设备树的节点和常用属性
节点
- 设备树是采用树形结构来描述板子上的设备信息的文件,每个设备都是一个节点,叫做设备节点,每个节点都通过一些属性信息来描述节点信息,命名规则如下
node-name@unit-address
compatible属性
介绍了该外设的属性,一般来说由厂家和型号组成,像下图就是macronix生产,型号是mmx66u1g45g。内核在设别时就会根据该属性找到对应的驱动以及初始化方式。
reg属性
该属性描述了外设的物理地址,可以通过芯片的寄存器手册找到。下图就可以看出,spi外设总共有两个区域。起始地址是0xFF8D2000,大小为0x100。
clocks属性
该属性记录了该外设使用的时钟,如图看门狗的时钟是0xa节点,找到该节点
下图也就是0xa节点,为看门狗所使用的时钟,再去查看手册就可以设置看门狗的时钟频率
interrupts属性
该属性描述了外设所占用的中断号以及中断触发方式,共有三个值,如图所示,分别为:
<中断类型 中断号 中断触发方式>
-
中断类型
- IPI:inter-processer interrupt 中断号0~15
- PPI:per processor interrupts 中断号16~31
- SPI:shared processor interrupts 中断号 32 ~32+224
- SGI:software generated interrupts (SGI).
根据手册找到硬件中断号,确认其中断类型。
-
中断号
在手册可以找到硬件中断号,减去32即为此数值 -
中断触发方式
可以选择自己需求的触发方式,值如下
1, 上升沿触发
2, 下降沿触发
4, 高电平触发
8, 低电平触发