dtsi与dts_设备树dts dtsi文件
1.DTS文件布局(layout):
/dts-v1/;
[memory reservations] //格式为:memreserve /
;保留的内存区域,定义一部分内存留给自己用/{
[property definitions]
[child nodes]
}
Property格式1:
[label:] property-name = value;
Property格式2(没有值):
[label:] property-name;
Property取值只有3种:
arrays of cells(1个或多个32位数据, 64位数据使用2个32位数据表示),
string(字符串),
bytestring(1个或多个字节)
示例:
a.Arrays of cells:cell就是一个32位的数据
interrupts = <17 0xc>;
b.64bit数据使用2个cell来表示
clock-frequency = <0x00000001 0x00000000>;
c.A null-terminated string(有结束符的字符串):
compatible = "simple-bus"
d.A bytestring(字节序列):
local-mac-address = [00 00 12 34 56 78];//每个byte使用2个16进制来表示
local-mac-address =[000012345678];//每个byte之间可以不用空格表示
e. 可以是各种值的组合, 用逗号隔开:
compatible = "ns16550", "ns8250";
example = <0xf00f0000 19>, "a strange property format";
(2)
DTS文件布局(layout):
/dts-v1/;
[memory reservations] // 格式为: /memreserve/
;/ {
[property definitions]
[child nodes]
};
(3) 特殊的、默认的属性:
a. 根节点:
#address-cells // 在它的子节点的reg属性中, 使用多少个u32整数来描述地址(address)
#size-cells // 在它的子节点的reg属性中, 使用多少个u32整数来描述大小(size)
如#address-cells = <1>;表示在子节点里面这个reg属性里用1个32位的数据来代表地址
#size-cells = <1>;表示在子节点里面这个reg属性里用1个32位的数据来表示大小
compatible // 定义一系列的字符串, 用来指定内核中哪个machine_desc可以支持本设备
// 即这个板子兼容哪些平台
// uImage : smdk2410 smdk2440 mini2440 ==> machine_desc
eg: compatible = "samsung,smdk2440","samsung,s3c24xx" //定义一系列的字符串,内核先匹配前面的的字符串,匹配不到就匹配后面的字符串
model // 咱这个板子是什么
// 比如有2款板子配置基本一致, 它们的compatible是一样的
// 那么就通过model来分辨这2款板子
b. /memory
device_type = "memory";
reg // 用来指定内存的地址、大小
c. /chosen
bootargs // 内核command line参数, 跟u-boot中设置的bootargs作用一样
内核启动时命令行参数
d. /cpus
/cpus节点下有1个或多个cpu子节点, cpu子节点中用reg属性用来标明自己是哪一个cpu
所以 /cpus 中有以下2个属性:
#address-cells // 在它的子节点的reg属性中, 使用多少个u32整数来描述地址(address)
#size-cells // 在它的子节点的reg属性中, 使用多少个u32整数来描述大小(size)
// 必须设置为0
e. /cpus/cpu*
device_type = "cpu";
reg // 表明自己是哪一个cpu
(4) 引用其他节点:
a. phandle : // 节点中的phandle属性, 它的取值必须是唯一的(不要跟其他的phandle值一样)
pic@10000000 {
phandle = <1>;
interrupt-controller;
};
another-device-node {
interrupt-parent = <1>; // 使用phandle值为1来引用上述节点
};
b.指明 label:
PIC: pic@10000000 {
interrupt-controller;
};
another-device-node {
interrupt-parent = ; // 使用label来引用上述节点,
// 使用lable时实际上也是使用phandle来引用,
// 在编译dts文件为dtb文件时, 编译器dtc会在dtb中插入phandle属性
};
示例:dtsi文件
/dts-v1/;
/memreserve/ 0x33f00000 0x100000;
/ { #指定根节点
model = "SMDK24440"; #指定板子类型
compatible = "samsung,smdk2440"; #指定内核中哪个machine_desc可以支持本设备
#address-cells = <1>; #指定子节点(memory)reg属性里用1个32位数据代表地址
#size-cells = <1>; #指定子节点(memory)reg属性里用1个32位数据代表大小(size)
memory { /* /memory */ #内存子节点
device_type = "memory"; #设备类型
reg = <0x30000000 0x4000000 0 4096>; #设备起始地址和大小
};
/*
cpus {
cpu {
compatible = "arm,arm926ej-s"; // 表明自己是哪一个cpu
};
};
*/
chosen {
bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200"; // 内核command line参数, 跟u-boot中设置的bootargs作用一样
};
LED:led { //led子节点,LED表示可引用的标号
compatible = "jz2440_led";
pin = ;
};
};
dts文件:包含dtsi文件
示例1:覆盖dtsi的属性
/dts-v1/;
/{
led{
pin = ;
};
};
示例2:直接加标号引用
&LED{
pin = ;
};
编译:make dtbs
反汇编:./scripts/dtc/dtc - I dtb - O dts -o tmp.dts arch/arm/boot/dts/xxx.dtb
./scripts/dtc/dtc -I dtb -O dts -o output.dts ./arch/arm/boot/dts/stm32mp157c-dk2.dtb
内核查看:/Documentation/devicetree/usage-model.txt
对应驱动的设备文档设备树写法:/Documentation/devetree/bindings
点赞
收藏
分享
文章举报
守望者910
发布了31 篇原创文章 · 获赞 4 · 访问量 1872
私信
关注
dtsi与dts_设备树dts dtsi文件相关推荐
- dtsi与dts_设备树DTS规范
原标题:设备树DTS规范 ------ 作者:韦东山 来自(设备树维基教程第二课,一共2节): http://wiki.100ask.org/Linux_devicetree 第01节_DTS格式 d ...
- 设备树学习(二、设备树dts/dtsi格式)
说明:后续的博文参考自韦东山老师的设备树视屏,老师用的是2440的开发板,我用的是s5pv210的开发板.原理一样 一.前言 简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和 ...
- 设备树dts/dtsi格式
说明:后续的博文参考自韦东山老师的设备树视屏,老师用的是2440的开发板,我用的是s5pv210的开发板.原理一样 一.前言 简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和 ...
- 42.设备树---DTS的语法
Device Tree Usage - 摩斯电码 - 博客园 设备树dts/dtsi格式_孤独行者的专栏-CSDN博客_dts格式 Linux设备树语法详解 - Abnor - 博客园 设备树笔记 - ...
- Linux下设备树dts内容(详细)总结及示例解析
文章目录 一.简介 二.设备树基础内容 2.1 设备树文件存放路径 2.2 DTS.DTB和DTC关系 2.3 传统驱动代码和使用设备树的对比 三.设备树内容属性介绍 3.1 节点名称 3.2 com ...
- linux 设备树(.dts)实战解析
文章目录 前言 设备树 DTS语法内容 标准属性 向节点追加或修改内容 设备树在目录中的体现 Linux 内核解析 DTB 文件 帮助文档信息 设备树节点的操作函数 1.查找节点的 of 函数 2.查 ...
- Linux 设备树 DTS 语法
DTS 语法 .dtsi 头文件 设备树支持头文件,设备树的头文件扩展名为.dtsi //linux-5.5.4\linux-5.5.4\arch\arm\boot\dts\s5pv210-smdkv ...
- linux dts 语法格式,设备树DTS格式解析
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 宿主机: ubuntu16.04 开发板: tq-imx6ull 内核版本: linux-4.1.15 用实例讲解下设备 ...
- dts 编译过程_linux设备树dts移植详解
[转] 摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux 支持包的开发,使得单个内核镜像能支持多个系统.作为U-Boot 和Linux 内核之间的动态 接口,本文 ...
最新文章
- 牛客网:为什么不能将实数作为 HashMap 的 key?
- 信息化道路上,这两家龙头企业做了什么
- 计算机科学学院陈瑜,浙江大学城市学院计算机与计算科学学院 计算机科学与技术 陈则伦...
- tcp长连接和保活时间
- python selenium安装
- 网络编程学习记录-1
- 【转】图的割点、桥与双连通分支
- Java编写网络爬虫
- OpenCore引导配置说明第四版
- Mac使用手册:如何检查 Mac 或 iOS 设备仍在保修范围内
- 什么是pip?Python新手入门指南
- ASP计算周开始和一年有多少周及某年第一周开始日期
- JavaScript改变图片大小
- SDUT 3386 小雷的冰茶几
- ios和android 浏览器适配问题总结
- ETL工程师系列课程_Oracle数据库
- [附源码]java毕业设计小说网站的设计与实现1
- 基于[Python]的ATM取款机模拟实战
- Ubuntu Qt无法使用搜狗输入法
- html5 人在星空中,《在星空中》的教学设计
热门文章
- #今日论文推荐#ECCV 2022 | 清华字节提出MGD:适用于分类/检测/分割的生成式知识蒸馏
- C语言-求阶乘和的两种方法
- 数据分析,如何看待我国1400万人忍受极端通勤,单程通勤超60分钟!
- 卧槽,这太有用了!!!
- TARS-PHP:PHP构建高性能RPC框架
- 安装Linux虚拟机,修改主机名,破解密码
- 业余的他发现最小万有覆叠空间,解决百年数学难题!
- hdu6681 Rikka with Cake【线段树】【离散化】【2019 Multi-University Training Contest 9】
- 【Latex】插入中文
- 7-1 那就别担心了 (30分)