设备树总结-基于rk3588

本文详细介绍了设备树在rk3588平台的应用,涵盖了设备树的基本知识,包括节点、属性、常用节点及其含义。讲解了compatible属性、status属性、clocks属性等关键属性的用法,并探讨了中断触发类型和相关名词解释,如PCIe、DisplayPort、IOMMU等。此外,还提到了温控、电源管理和中断控制器等内容。
摘要由CSDN通过智能技术生成

一 设备树的基本知识

        1. 每一个“{}”都是一个“节点”。“/ {…};”表示“根节点”

        2. /dts-v1/; 这是dts的版本,一定要有,不然编译会报错

        3. &, 这表示该节点在向已经存在的子节点追加数据

        4. 同级节点下节点名称不能相同,不同级节点名称可以相同

        5. node-name@unit-address ,node-name用于指定节点的名称,其中的符号“@”可以理解为是一个分割符,“unit-address”用于指定“单元地址”,没有实际意义, 它的值要和节点
“reg”属性的第一个地址一致,如果节点没有“reg”属性值,可以直接省略“@unit-address”

        6. 节点名“cpu@0”前面多了个“cpu0”,这个“cpu0”就是我们所说的节点标签。 通常节点标签是节点名的简写,所以它的作用是当其它位置需要引用时可以使用节点标签来向该节点中追加内容

cpu0:cpu@0

        “:”前面的是节点标签(label),“:”后面的才是节点名字,可以直接通过&label 来访问这个节点

        7. chosen 并不是一个真实的设备,chosen节点主要目的就是将uboot里面bootargs环境变量值传递给linux内核作为命令行参数。chosen子节点不代表实际硬件,它主要用于给内核传递参数。 此外这个节点还用作uboot向linux内核传递配置参数的“通道”, 我们在Uboot中设置的参数就是通过这个节点传递到内核的, 这部分内容是uboot和内核自动完成的,它必须是根节点的子节点 ,如:

chosen: chosen {
	bootargs = "earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0 root=PARTUUID=614e0000-0000 rw rootwait";
};

         8. 通过Documentation/devicetree/bindings/pinctrl看rockchip pinctrl的定义,设置复用关系

        9. device_type属性,只用于cpu节点或者memory节点进行描述

        10. pinctrl是为了统一各芯片原厂的pin脚管理
              
pinctrl-names 表示设备的状态,对应状态的引脚配置在pinctrl-N中定义,N=0,1,2...,由pinctrl-names中的状态数量决定

        11. 在 GPIO 控制器中,必须有 #gpio-cells 和 gpio-controller 属性

        12. i2c控制器节点存在子节点时,该控制器节点必须指定下面两个选项

                #address-cells  值必须是1
                #size-cells  值必须是0

#address-cells = <1>;
#size-cells = <0>;

         13. cpus 节点里面包含物理cpu的布局,具体如下:

cpu-map 节点主要用在描述大小核架构处理器中,名称不能变,cpu-map节点的父节点必须是cpus节点,子节点必须是一个或多个的cluster和socket节点
socket 节点描述的是主板上的cpu插槽,主板上有几个cpu插槽就有几个socket节点,socket节点的子节点必须是一个或者多个cluster节点,当有多个cpu插槽时,socket的命名方式必须是socketN N=0,1,2..
cluster 节点用来描述cpu的集群,cluster节点的命名方式必须是clusterN,N=0,1,2...,cluster节点的子节点必须是一个或者多个cluster节点或者core节点
core 节点用来描述一个cpu,如果是单核cpu,则core节点就是cpus的子节点,core节点的命名方式必须是coreN,N=0,1,2...,core节点的子节点必须是一个或者多个thread节点
thread 节点用来描述处理的线程,thread节点的命名方式必须是threadN,N=0,1,2...

         14. 设置PCIe接口使用的是RC模式还是EP模式。

                作为RC功能时,需要配置成compatible = "rockchip,rk3588-pcie", "snps,dw-pcie"; 

                而如果需要修改成EP模式,则需要修改为compatible = "rockchip,rk3588-pcie-ep", "snps,dw-pcie";

                reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;必须配置项**:此项是设置 PCIe 接口的 PERST#复位信号

        15. mmu600_pcie节点必须配置:

compatible = "arm,smmu-v3";       // 用于匹配ARM SMMU-v3驱动
#iommu-cells = <1>;               // 用于描述设备的stream ID 

         16. 节点属性分为标准属性和自定义属性,也就是说我们在设备树中可以根据自己的实际需要定义、添加设备属性。 标准属性的属性名是固定的,自定义属性名可按照要求自行定义

        17. 在中断控制器中,必须有一个属性#interrupt-cells,表示其他节点如果使用这个中断控制器需要几个cell来表示使用哪一个中断。在中断控制器中,必须有一个属性interrupt-controller,表示它是中断控制器。在设备树中使用中断,需要使用属性interrupt-parent=<&***>表示是中断信号链接的是哪个中断控制器,接着使用interrupts属性来表示中断引脚和触发方式。interrupts里有几个cell,是由interrupt-parent对应的中断控制器里面的#interrupt-cells属性决定。

        18. USB 3.0 Host 控制器为 xHCI,集成于 DWC3 OTG IP 中,所以不用单独配置 dts,只需要配置 DWC3 节点,并且设置 DWC3 的 dr_mode 属性为 dr_mode = "otg"或者 dr_mode = "host",就可以使能 xHCI 控制器

二 一些常用的节点

cru             是 clock & reset unit 的缩写,是clock controller 
pmu             是poower management unit的缩写,电源管理单元
gic             中断控制器
cpuinfo         节点, 用于提供 cpu id
rockchip_suspend    休眠配置,目前已支持的配置选项都定义在:include/dt-            
                    bindings/suspend/rockchip-rk3588.h
vdd_log_s0 logic    电源休眠配置
reserved-memory 预留内存,给设备驱动
l*_cache_*      都是缓存
panel-edp       edp屏的配置
backlight       背光配置
vdd_gpu         设备节点描述GPU所需的电源配置信息
gs13673	        触控
gt1x            触摸屏
es8388_sound    音频
saradc          ADC配置
tsadc           测量CPU温度,温控策略
tsadc_gpio_func	配置tsadc为gpio模式
tsadc_shut      配置tsadc为over temperature protection 模式
Termal zone     节点主要⽤于配置温控策略相关的参数并⽣成对应的⽤⼾态接口
display_subsystem     显示子系统,drm节点
pdm0 pdm1        数字麦 --- 常见的数字麦有纯pdm麦和通过一些codec芯片将数字麦转换为i2s信号输入到 
                 SOC;纯pdm麦就是直接进入SOC的pdm接口,走的是PDM信号
pdm0m0_clk       板载数字麦时钟
pdm0m0_clk1      外接数字麦时钟
adc_keys         adc的按键配置
vcc5v0_host_en   节点是配置 usb host电源使能的引脚 (USB_HOST_PWREN_H)
usbc0            节点是描述配置type-c的节点
usb-typec        节点是描述配置type-c的节点,该节点下有usbc0_int,typec5v_pwren两个子节点
usbc0_int        节点是配置HUSB311芯片上的INT引脚,该芯片是一款USB Type-C PD控制器,使用INT信 
                 号来请求中断
typec5v_pwren    节点是配置typec电源使能
vbus5v0_typec    节点是type-c5v电源的节点,该电源受typec5v_pwren控制,由vcc5v0_usb供给
vcc5v0_usb       节点是usb 5V电源的配置节点,
vcc12v_dcin      是板端输入电源12V的配置节点
vcc5v0_sys       系统的5V电源配置节点 
usbdrd3_0        是usb控制器的配置,有usbdrd_dwc3_0子节点
usbdrd3_1        是usb控制器的配置,有usbdrd_dwc3_1子节点
usbdrd_dwc3_0    节点,表示该 USB 控制器集成了 DWC3 控制器
dp0              dp0的节点配置
dp0_in_vp0       把dp0的显示接口连接在port0
dp0_in_vp1       把dp0的显示接口连接在port1
dp0_in_vp2       把dp0的显示接口连接在port2
dp1              dp1的节点配置
dp1_in_vp0       把dp1的显示接口连接在port0
dp1_in_vp1       把dp1的显示接口连接在port1
dp1_in_vp2       把dp1的显示接口连接在port2
dp0_sound        dp0的音频配置
dp1_sound        dp1的音频配置
hdmi0_sound      hdmi0的音频配置
hdmi1_sound      hdmi1的音频配置
dp0m*_pins       等节点,是配置对应gpio管脚的dp0_hpdin_m*复用

pcie2x1l0 pcie2x1l1 pcie2x1l2 pcie3x2 pcie3x4 ...  都是pcie控制器的节点
pcie30phy        是控制器pcie3x2的phy节点
combphy1_ps      是控制器pcie2x1l0的phy节点
combphy2_psu     是控制器pcie2x1l1的phy节点
combphy0_ps      是控制器pcie2x1l2的phy节点

adc-keys         ADC按键检测配置节点
volumeup-key     对应硬件连接上的recovery按键
bigcore0_grf     配置BIGCORE0_GRF寄存器地址的节点
bigcore1_grf     配置BIGCORE1_GRF寄存器地址的节点
litcore_grf      配置LITCORE_GRF 寄存器地址的节点
dsu_grf	         配置DSU_GRF寄存器地址的节点
gpu_grf          配置GPU_GRF寄存器地址的节点
npu_grf          配置NPU_GRF寄存器地址的节点
vop_grf          配置VOP_GRF寄存器地址的节点
vo0_grf          配置VO0_GRF寄存器地址的节点
vo1_grf          配置VO1_GRF寄存器地址的节点
mipidphy0_grf    配置CSIDPHY0_GRF寄存器地址的节点
mipidphy1_grf    配置CSIDPHY1_GRF寄存器地址的节点
mipidcphy0_grf   配置MIPIDCPHY0_GRF寄存器地址的节点
mipidcphy1_grf   配置MIPIDCPHY1_GRF寄存器地址的节点
pcie30_phy_grf	 配置PCIe3PHY_GRF寄存器地址的节点
pipe_phy0_grf    配置PIPE_PHY0_GRF寄存器地址的节点
pipe_phy1_grf    配置PIPE_PHY1_GRF寄存器地址的节点
pipe_phy2_grf    配置PIPE_PHY2_GRF寄存器地址的节点
usbdpphy1_grf    配置USBDPPHY1_GRF寄存器地址的节点
usbdpphy0_grf    配置USBDPPHY0_GRF寄存器地址的节点
usb2phy1_grf     配置USB2PHY1_GRF寄存器地址的节点
usb2phy0_grf     配置USB2PHY0_GRF寄存器地址的节点
usb2phy2_grf     配置USB2PHY2_GRF寄存器地址的节点
usb2phy3_grf     配置USB2PHY3_GRF寄存器地址的节点
usb_grf	         配置USB_GRF寄存器地址的节点
php_grf          配置PHP_GRF寄存器地址的节点
...

spdif_tx2        音频spdif接口发送相关的配置
spdif_tx4
spdif_tx5 
spdif_rx1        音频spdif接口接收相关的配置
spdif_rx2
i2s0_8ch         音频i2s接口相关的配置
...
i2s10_8ch

edp0             液晶显示屏edp接口的配置
edp1 

gmac0            网络控制器GMAC(10/100/1000M Ethernet controller)配置
sata0            硬盘接口sata接口配置
sata1
sata2
sfc              灵活的串行闪存接口(FSPI CFG)配置
sdmmc            SDMMC的配置
sdio             SDIO的配置
sdhci            EMMC的配置
crypto           是加密处理组件(CRYPTO_NS)的配置节点,它提供了一套通用的加密接口,crypto 节点必 
                 须定义在 U-Boot dts
rng              是真随机数生成器(TRNG_NS)的配置节点
hdptxphy1        是HDMI-显示端口组合PHY IP(HDPTX Combo PHY1)的配置节点

i2c*m*_xfer      是将gpio复用成i2c功能的配置节点(如果:i2c下的pinctrl-names = "default"(即 
                 i2c功能),系统会应用i2c*m*_xfer这个pinctrl,最终将针脚切换成对应的i2c功能)

rkisp_unite isp  单元的配置节点用以接收并处理图像,描述了两块isp
rkisp_unite_mmu isp    单元的内存管理单元节点,描述了两块isp内存管
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值