This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
library:rk3568:dtsguide [2022/10/31 11:14] lhaosen [1.1 属性] |
library:rk3568:dtsguide [2023/06/05 23:30] (current) lhaosen [1. DTS文件] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== DTS简述 ====== | ====== DTS简述 ====== | ||
+ | 参考: | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
- | ===== - node节点结构 | + | ===== - DTS文件 ===== |
+ | |||
+ | DTS文件引用树: | ||
+ | |||
+ | kernel/ | ||
+ | |||
+ | < | ||
+ | ./ | ||
+ | ├─./ | ||
+ | │ └─./ | ||
+ | │ | ||
+ | │ │ └─./ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | └─./ | ||
+ | </ | ||
+ | ===== - node节点 ===== | ||
{}包围起来的结构称之为节点,dts中最开头的/ | {}包围起来的结构称之为节点,dts中最开头的/ | ||
Line 14: | Line 36: | ||
rtc: | rtc: | ||
- | ==== - 属性 ==== | + | ==== - 一般属性 ==== |
- | === - 地址(reg) === | + | === - reg === |
reg的格式通常为< | reg的格式通常为< | ||
Line 54: | Line 76: | ||
}; | }; | ||
- | ==== - 属性的编写说明 | + | === - compatible === |
- | 参考SDK中的说明: | + | |
+ | 如果一个节点是设备节点,那么它一定要有compatible(兼容性),因为这将作为驱动和设备(设备节点)的匹配依据, \\ | ||
+ | compatible(兼容性)的值可以有不止一个字符串以满足不同的需求。 \\ | ||
+ | 而根节点的compatible也是非常重要的,因为系统启动后,将根据根节点的compatible来判断cpu信息,并由此进行初始化。 | ||
+ | |||
+ | === - pinctrl-names === | ||
+ | |||
+ | pinctrl-names: | ||
+ | default、init、sleep、idle \\ | ||
+ | 其中, | ||
+ | |||
+ | pinctrl-0: | ||
+ | 该配置项定义了该设备的一种工作状态,其对应于pinctrl-names中首个工作状态。 | ||
+ | |||
+ | 下面举例说明一下: | ||
+ | deviceA { | ||
+ | pinctrl-names = “defalut”, | ||
+ | pinctrl-0 = <& | ||
+ | pinctrl-1 = <& | ||
+ | }; | ||
+ | |||
+ | deviceA节点,定义了" | ||
+ | |||
+ | |||
+ | === - 属性的编写说明 === | ||
+ | == - 参考SDK中第的属性说明 | ||
#<path to sdk> | #<path to sdk> | ||
cd kernel | cd kernel | ||
cd Documentation/ | cd Documentation/ | ||
grep " | grep " | ||
+ | |||
+ | == - 在代码中获取属性编写格式 == | ||
#<path to sdk> | #<path to sdk> | ||
cd kernel/ | cd kernel/ | ||
grep " | grep " | ||
+ | |||
+ | ==== - 节点之间的联系 ==== | ||
+ | * 节点与节点之间的关联,通常通过“标号引用”和“包含”来实现 | ||
+ | - 标号引用,就是在节点名称前加上标号,这样设备树的其他位置就能够通过& | ||
+ | - 包含则是最基本的方式,比如我们要在i2c1接口添加一个i2c外设,那么就必须要在i2c1下面添加一个节点 | ||
+ | |||
+ | * 标号引用常常还作为节点的重写方式 | ||
+ | |||
+ | * 如果一个节点是属性节点(即仅仅是作为属性被其他节点调用),可定义在任意位置 | ||
+ | 属性节点定义在哪里其实无所谓,重要的是调用的位置,比如lcd屏幕的时序, \\ | ||
+ | 其实我们完全可以把它定义在任何地方,然后在lcd节点下用& | ||
+ | 这有点类似于函数:在哪定义不重要,重要的是在哪调用。 | ||
+ | | ||
+ | ===== - DTS相关工具 ===== | ||
+ | |||
+ | ==== - devicetree(linux) ==== | ||
+ | |||
+ | 工具主页:https:// | ||
+ | |||
+ | * 安装: | ||
+ | |||
+ | wget https:// | ||
+ | |||
+ | * 参数 | ||
+ | |||
+ | < | ||
+ | usage: 从设置的根节点预览或搜索指定关键字 | ||
+ | |||
+ | 设备树查看器(0.9) | ||
+ | |||
+ | options: | ||
+ | -s SET_CONF, -set SET_CONF, --set SET_CONF | ||
+ | 设置dtv.conf文件 | ||
+ | -c, -config, --config | ||
+ | 显示当前使用的dtv.conf文件路径 | ||
+ | -r, -root, --root | ||
+ | -z, -hp, --hidePath, -short, --short | ||
+ | 按照最短路径显示 | ||
+ | -f FIND_KEYWORD, | ||
+ | 搜索指定内容 | ||
+ | -x {re,all}, -flag {re,all}, --flag {re,all} | ||
+ | re: | ||
+ | -d, -debug, --debug | ||
+ | -no-color, --no-color | ||
+ | 禁用颜色显示 | ||
+ | -v, --version | ||
+ | --history | ||
+ | -h, --help | ||
+ | </ | ||
+ | |||
+ | * 设置: | ||
+ | |||
+ | dt -set ~/ | ||
+ | |||
+ | * 运行: | ||
+ | |||
+ | dt -h | ||
+ | dt -z | ||
+ | | ||
+ | dt -z -find pinctrl | ||
+ | |||