ARM SoC(高通平台)Device Tree互连定义与配置技术咨询
高通ARM SoC Device Tree互连配置详解
一、DT互连节点基础配置
1. 互连节点的定义
高通SoC的NoC互连节点(如mnoc、snoc)通常在SoC专属的dtsi文件中预定义,无需自行从零创建,标准格式示例:
mnoc: interconnect@100000 { compatible = "qcom,msm8998-mnoc"; reg = <0x100000 0x1000>; #interconnect-cells = <2>; // 固定为2,对应主/从设备索引 qcom,bw-scales = <1 1000>; clocks = <&gcc GCC_MNOC_CLK>; };
关键注意点:
compatible字符串必须严格匹配对应SoC的型号(如msm8998、sm8350)#interconnect-cells固定设为2,因为每条互连路径需要主设备端口ID+从设备端口ID- 节点需包含时钟、带宽缩放等SoC特定属性
2. 设备节点引用互连节点
在GPU、I2C等外设节点中,通过interconnects和interconnect-names属性完成引用:
interconnects格式:<&互连节点 主设备ID 从设备ID>,主设备是当前外设的NoC端口,从设备是目标节点(如DDR、其他外设)interconnect-names为对应路径的功能描述,比如"dma-mem"代表DMA到内存的路径,"gpu-mem"代表GPU到内存的路径
3. 内核依赖与绑定要求
- 内核必须开启
CONFIG_INTERCONNECT和CONFIG_INTERCONNECT_QCOM编译选项 - 必须严格遵循高通官方定义的绑定规则:每个SoC的主/从设备ID、compatible字符串都有固定值,不能随意自定义
- 外设驱动需调用
dev_of_get_interconnects()等内核API获取互连路径,否则配置不会生效
二、你的I2C节点配置验证
1. 配置格式正确性
你提供的I2C节点配置格式是正确的,但需要确认两个核心点:
&mnoc节点是否在当前SoC的dtsi文件中存在,且compatible属性匹配你的平台MASTER_I2C和SLAVE_DDR是否是该SoC对应的正确端口ID(部分平台I2C主ID可能是MASTER_I2C_0,DDR从ID可能是SLAVE_EBI_CH0,需查SoC技术文档或内核头文件)
三、运行时验证互连配置
1. sysfs验证方法
- 查看设备的互连路径:
cat /sys/bus/platform/devices/78b6000.i2c/interconnects,正常应输出你定义的mnoc MASTER_I2C SLAVE_DDR - 查看当前带宽限制:
cat /sys/bus/platform/devices/78b6000.i2c/interconnect/dma-mem/bw_limit(需驱动支持该sysfs节点)
2. debugfs验证方法
- 先挂载debugfs:
mount -t debugfs none /sys/kernel/debug - 查看全局互连拓扑:
cat /sys/kernel/debug/interconnect/topology,可看到所有互连节点和已配置的路径 - 查看特定设备的互连请求:
cat /sys/kernel/debug/interconnect/78b6000.i2c/dma-mem/requests
四、功耗/性能优化最佳实践
1. 动态带宽调整
- 外设驱动根据负载动态请求带宽:比如I2C在大数据传输时申请高带宽,空闲时降至最低值
- 利用内核
interconnect_set_bw()API实现动态调整,示例代码:
struct icc_path *path; path = dev_of_get_interconnect_by_name(dev, "dma-mem"); if (path) { // 大数据传输时请求100MB/s带宽 icc_set_bw(path, 0, 100 * 1024 * 1024); // 传输完成后将带宽降至1MB/s icc_set_bw(path, 0, 1 * 1024 * 1024); icc_put(path); }
2. 路径选择优化
- 对于支持多NoC路径的外设(如GPU可走mnoc或snoc),按需选择:追求性能选mnoc(高带宽),追求功耗选snoc(低功耗)
3. 合理配置带宽上限
- 避免过度请求带宽:外设实际不需要高带宽时,不要设置过高上限,减少NoC的功耗开销
- 利用互连节点的
qcom,bw-scales属性配置带宽缩放比例,让内核更精准计算带宽需求
4. 结合DVFS协同优化
- 互连带宽调整与外设时钟频率调整协同进行:比如提升GPU时钟时,同步提升对应NoC路径的带宽,避免成为性能瓶颈
内容的提问来源于stack exchange,提问作者skm
相关产品推荐
相关产品推荐

