ARM Linux设备树(1)

设备树是一种描述硬件的数据结构。设备树由一系列节点(Node)和属性(Property)组成,而节点本身可以包含子节点;属性,其实就是成对出现的名称和值。在设备树中,可描述的信息包括:1)CPU的数量和类别2)内存基地址和大小3)总线和桥4)外设连接5)中断控制器和中断使用情况6)GPIO控制器和GPIO使用情况7)时钟控制器和时钟使用情况Bootloader会将设备树传递给Linux内核,然后由内核解析设备树,据此展开出Linux内核中的platform_device、
摘要由CSDN通过智能技术生成

设备树是一种描述硬件的数据结构。

设备树由一系列节点(Node)和属性(Property)组成,而节点本身可以包含子节点;属性,其实就是成对出现的名称和值。在设备树中,可描述的信息包括:

1)CPU的数量和类别

2)内存基地址和大小

3)总线和桥

4)外设连接

5)中断控制器和中断使用情况

6)GPIO控制器和GPIO使用情况

7)时钟控制器和时钟使用情况

Bootloader会将设备树传递给Linux内核,然后由内核解析设备树,据此展开出Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、中断等资源信息也被传递到内核,内核会将相应的资源绑定给展开的这些设备。

(一)dts文件

dts文件是一种适合人类阅读的ASCII文本格式文件。

通常情况下,把SOC公用的部分、多个设备共同的部分提炼为.dtsi文件,.dtsi文件被.dts文件包含,类似于C语言的头文件使用方式:

/dts-v1/;
#include "arm-som-p0.dtsi"
#include <dt-bindings/gpio/gpio.h>

dts文件中的基本元素就是上述的节点和属性,如以下设备树内容:

/ {
    node1 {
        a-string-property = "A string";
        child-node1 {
            first-child-property;
            second-child-property = <1>;
            a-string-property = "Hello World";
        };

        child-node2 {
        };
    };

    node2 {
        an-empty-property;
    };
};

它表征了一个设备树文件的结构:

1)一个root节点 “/”

2)root节点下面包含了若干个子节点,上述示例中为node1和node2

3)节点node1和node2又可以包含若干个子节点,例如:child-node1和child-node2

4)每个节点都有一系列的属性,这些属性可能为空,例如an-empty-property;可能为字符串,例如a-string-property;还有可能为Cells(由uint32整数组成);还有可能为二进制数 ...

再看一个设备树文件,它描述的是一个双核ARM Cortex-A9 32位处理器、ARM本地总线上的内存映射区域分布着2个串口:串口1位于0x101F1000、串口2位于0x101F2000,中断控制器(位于0x10140000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值