DTS,DTC, DTB你都认识吗?

在现在的linux内核中都采用设备树来管理资源分配和模块装载,减少依赖性,在树莓派的内核系统中也是这样,设备树其实就是硬件资源的描述文件,代表硬件配置的节点,每一个节点又可以包括子节点和属性。设备树文件一般都是以.dts为后缀的文本文件,即我们常说的DTS(Device TreeSource), 语法有点像C语言,但还是有区别的,要注意。如下面的文件就是一个DTS文件

/dts-v1/;
/include/ "common.dtsi";
/ {
    node1 {
        a-string-property ="A string";
       a-string-list-property = "first string", "secondstring";
        a-byte-data-property= [0x01 0x23 0x34 0x56];
        cousin: child-node1{
            first-child-property;
           second-child-property = <1>;
           a-string-property = "Hello, world";
        };
        child-node2 {
        };
    };
    node2 {
        an-empty-property;
        a-cell-property =<1 2 3 4>; /* each number (cell) is a uint32 */
        child-node1 {
            my-cousin =<&cousin>;
        };
    };
};
/node2 {
   another-property-for-node2;
};

这里大家要注意一点一个DTS文件可以包含其他的DTS文件,如上图中的/include/"common.dtsi";这有点像C语言中的头文件包含。

那么这个DTS文件经过DTC(DeviceTree Compiler)编译后就变为DTB(DeviceTree Blob)文件。

关于更多DTS的语法和用法大家可以参考内核文档的booting-without-of.txtusage-model.txt文件内容。关于设备树中的节点和属性是如何来描述硬件细节的可以参考bindings文件中的文档,都有详细的说明。设备树的理解和应用也是一个难点,希望大家都理解和掌握。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2017-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java NIO 核心组件学习笔记

对于I/O操作,根据Oracle官网的文档,同步异步的划分标准是“调用者是否需要等待I/O操作完成”,这个“等待I/O操作完成”的意思不是指一定要读取到数据或者...

1042
来自专栏有趣的django

35.Django2.0文档

第四章 模板  1.标签 (1)if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系...

58410
来自专栏Golang语言社区

Golang工程经验(上)

作为一个C/C++的开发者而言,开启Golang语言开发之路是很容易的,从语法、语义上的理解到工程开发,都能够快速熟悉起来;相比C、C++,Golang语言更简...

5882
来自专栏一个会写诗的程序员的博客

CAS指令与MESI缓存一致性协议、 “轻量级锁” 与原子操作CAS指令与MESI缓存一致性协议、 “轻量级锁” 与原子操作

CAS指令,在Intel CPU上称为CMPXCHG。最常见的原子操作有Compare and Exchange,Self Increase/Decrease等...

1725
来自专栏iOS 开发杂谈

iOS多线程之一:基本概念

进程:就是一个正在执行的程序。 线程:是执行程序最基本的单元,它有自己栈和寄存器。

691
来自专栏Java学习123

Python3.4+Django1.7+SQLite3实现增删改查

3675
来自专栏Seebug漏洞平台

D-Link DIR-605L 拒绝服务错误报告 (CVE-2017-9675)

原文:http://hypercrux.com/bug-report/2017/06/19/DIR605L-DoS-BugReport/ 译者:Serene ...

3796
来自专栏码洞

Java高阶必备之Netty基础原理

Netty是Java程序员通向高阶之路必须要过的门槛之一。干了几年的Java程序员发现业务开发似乎就是在SSH的世界里摸滚打爬的时候,会开始感到迷茫,难道程序员...

1012
来自专栏信安之路

ring3层恶意代码实例汇总

之前一期我们学习了 IAT 的基本结构,相信大家对 C++ 有了一个基本的认识,这一期放点干货,我把 ring3 层恶意代码常用的编程技术给大家整理了一下,所有...

1380
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表页

9426

扫码关注云+社区

领取腾讯云代金券