User Tools

Site Tools


library:rk3568:dtsguide

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
library:rk3568:dtsguide [2022/10/31 11:54]
lhaosen [1.2 节点之间的联系]
library:rk3568:dtsguide [2023/06/05 23:30] (current)
lhaosen [1. DTS文件]
Line 1: Line 1:
 ====== DTS简述 ====== ====== DTS简述 ======
 +参考:
 +  * [[https://blog.csdn.net/qq_53144843/article/details/123829747|Linux DTS(Device Tree Source)]]
 +  * [[http://kernel.meizu.com/device-tree.html|Device Tree 详解]]
  
  
 +===== - DTS文件 =====
 +
 +DTS文件引用树:
 +
 +kernel/arch/arm64/boot/dts/rockchip/
 +
 +<code>
 +./rk3568-firefly-mplayer.dts
 +├─./rk3568-firefly-mplayer.dtsi
 +│ └─./rk3568-firefly-port.dtsi
 +│   ├─./rk3568-firefly-core.dtsi
 +│   │ └─./rk3568.dtsi
 +│   │   ├─./rk3568-dram-default-timing.dtsi
 +│   │   └─./rk3568-pinctrl.dtsi
 +│   │     └─./rockchip-pinconf.dtsi
 +│   ├─./rk356x-firefly-demo.dtsi
 +│   └─./rk3568-linux.dtsi
 +└─./rk3568-firefly-aioj-cam-8ms1m.dtsi
 +</code>
 ===== - node节点 ===== ===== - node节点 =====
  
Line 15: Line 37:
  
 ==== - 一般属性 ==== ==== - 一般属性 ====
-=== - 地址(reg===+=== - reg ===
  
 reg的格式通常为<address length> \\ reg的格式通常为<address length> \\
Line 54: Line 76:
   };   };
  
-=== - 兼容性 ===+=== - compatible ===
  
 如果一个节点是设备节点,那么它一定要有compatible(兼容性),因为这将作为驱动和设备(设备节点)的匹配依据, \\ 如果一个节点是设备节点,那么它一定要有compatible(兼容性),因为这将作为驱动和设备(设备节点)的匹配依据, \\
 compatible(兼容性)的值可以有不止一个字符串以满足不同的需求。 \\ compatible(兼容性)的值可以有不止一个字符串以满足不同的需求。 \\
 而根节点的compatible也是非常重要的,因为系统启动后,将根据根节点的compatible来判断cpu信息,并由此进行初始化。 而根节点的compatible也是非常重要的,因为系统启动后,将根据根节点的compatible来判断cpu信息,并由此进行初始化。
 +
 +=== - pinctrl-names ===
 + 
 +pinctrl-names:定义设备不同的工作状态,一般包括下面几个: \\
 +default、init、sleep、idle \\
 +其中,sleep、idle用于系统的电源管理,以达到控制系统功耗的目的。\\
 +
 +pinctrl-0:定义了一个phandles的列表,每个phandle指向一个pinctrl的节点。 \\
 +该配置项定义了该设备的一种工作状态,其对应于pinctrl-names中首个工作状态。
 +
 +下面举例说明一下:
 +  deviceA {
 +    pinctrl-names = “defalut”, “idle”;
 +    pinctrl-0 = <&state_0_node_a>;
 +    pinctrl-1 = <&state_1_node_a &state_1_node_b>;
 +  };
 +
 +deviceA节点,定义了"default","idle"两种工作状态,随后依次定义了pinctrl-0和pinctrl-1两个pins列表,分别对应于两个状态。
  
  
Line 87: Line 127:
 这有点类似于函数:在哪定义不重要,重要的是在哪调用。 这有点类似于函数:在哪定义不重要,重要的是在哪调用。
          
 +===== - DTS相关工具 =====
 +
 +==== - devicetree(linux) ====
 +
 +工具主页:https://gitee.com/yuwenhai/device-tree-tools
 +
 +  * 安装:
 +
 +  wget https://gitee.com/yuwenhai/device-tree-tools/raw/master/devicetree/dt.py;mv dt.py ~/bin/dt;chmod 755 ~/bin/dt
 +
 +  * 参数
 +
 +<code>
 +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, -find FIND_KEYWORD, --find FIND_KEYWORD
 +                        搜索指定内容
 +  -x {re,all}, -flag {re,all}, --flag {re,all}
 +                        re:启用正则表达式搜索 all:在所有树中显示
 +  -d, -debug, --debug   Debug模式运行
 +  -no-color, --no-color
 +                        禁用颜色显示
 +  -v, --version         显示当前版本
 +  --history             显示历史变更记录
 +  -h, --help            显示帮助页
 +</code>
 +
 +  * 设置:
 +
 +  dt -set ~/linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-mplayer.dts
 +
 +  * 运行:
 +
 +  dt -h
 +  dt -z
 +  
 +  dt -z -find pinctrl
 +
 +
library/rk3568/dtsguide.1667188445.txt.gz · Last modified: 2022/10/31 11:54 by lhaosen