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:50]
lhaosen [1.1 属性]
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 详解]]
  
  
-===== - node节点结构 =====+===== - 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节点 =====
  
 {}包围起来的结构称之为节点,dts中最开头的/ {},称为根节点。 \\ {}包围起来的结构称之为节点,dts中最开头的/ {},称为根节点。 \\
Line 15: Line 37:
  
 ==== - 一般属性 ==== ==== - 一般属性 ====
-=== - 地址(reg===+=== - reg ===
  
 reg的格式通常为<address length> \\ reg的格式通常为<address length> \\
Line 54: Line 76:
   };   };
  
-=== - 兼容性 ===+=== - compatible ===
  
 如果一个节点是设备节点,那么它一定要有compatible(兼容性),因为这将作为驱动和设备(设备节点)的匹配依据, \\ 如果一个节点是设备节点,那么它一定要有compatible(兼容性),因为这将作为驱动和设备(设备节点)的匹配依据, \\
Line 60: Line 82:
 而根节点的compatible也是非常重要的,因为系统启动后,将根据根节点的compatible来判断cpu信息,并由此进行初始化。 而根节点的compatible也是非常重要的,因为系统启动后,将根据根节点的compatible来判断cpu信息,并由此进行初始化。
  
-==== - 节点之间的联系 ==== +=== - pinctrl-names === 
-  * 节点与节点之间的关联,通常通过“标号引用”和“包含”来实现 +  
-    标号引用,就是在节点名称前加上标号,这样设备其他位置就能够通过&符号来调用/访问该节点 +pinctrl-names:定义设备不同工作状态,一般包括下面: \\ 
-    - 包含则是最基本的方式比如我们要在i2c1接口添加个i2c外设,那么就必须要在i2c1下面添加一节点+default、init、sleep、idle \\ 
 +其中,sleep、idle用于系统的电源管理,以达到控制系统功耗的目的。\\
  
-  * 标号引用常常还作为节点重写方式 +pinctrl-0:定义了一个phandles列表,每个phandle指向一个pinctrl的节点。 \\ 
-  * 如果一个节点是属性节点(即仅仅是作为属性被其他节点调用),可定义在任意位 +该配定义了该设备一种工作状态,其对应于pinctrl-names中首个工作状态。 
-属性节点定义在哪里其实无所谓,重要是调用的位置,比如lcd屏幕的时序,其实我们完全可以把它定义在任何地方在lcd节点下用&来调用它。这有点类似于函数:在哪定义不重要重要的是在哪调用。 + 
-     +下面举例说明一下: 
-==== - 属性的编写说明 ==== +  deviceA { 
-=== - 参考SDK中第的属性说明 ===+    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列表分别对应于两个状态。 
 + 
 + 
 +=== - 属性的编写说明 === 
 +== - 参考SDK中第的属性说明 ==
  
   #<path to sdk>     #<path to sdk>  
Line 77: Line 109:
   grep "arm,pl011" -rn *   grep "arm,pl011" -rn *
  
-=== - 在代码中获取属性编写格式 ===+== - 在代码中获取属性编写格式 ==
  
   #<path to sdk>   #<path to sdk>
   cd kernel/drivers/tty/serial/   cd kernel/drivers/tty/serial/
   grep "arm,pl011" -rn *   grep "arm,pl011" -rn *
 +
 +==== - 节点之间的联系 ====
 +  * 节点与节点之间的关联,通常通过“标号引用”和“包含”来实现
 +    - 标号引用,就是在节点名称前加上标号,这样设备树的其他位置就能够通过&符号来调用/访问该节点
 +    - 包含则是最基本的方式,比如我们要在i2c1接口添加一个i2c外设,那么就必须要在i2c1下面添加一个节点
 +
 +  * 标号引用常常还作为节点的重写方式
 +
 +  * 如果一个节点是属性节点(即仅仅是作为属性被其他节点调用),可定义在任意位置
 +属性节点定义在哪里其实无所谓,重要的是调用的位置,比如lcd屏幕的时序, \\
 +其实我们完全可以把它定义在任何地方,然后在lcd节点下用&来调用它。 \\
 +这有点类似于函数:在哪定义不重要,重要的是在哪调用。
 +    
 +===== - 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.1667188207.txt.gz · Last modified: 2022/10/31 11:50 by lhaosen