使用X5 EVB开发板,当前有散热问题

使用X5 EVB开发板,当前有散热问题,加风扇看起来可以,有相关温度参数技术要求吗?或者还有什么软件优化方,这种工况模式下功率估计5-10瓦,异常应该是ddr过热还是cpu过热导致的,与这颗ddr相关度多大?是否后期原厂更换ddr也是和这个问题相关案吗

X5 有三路独立温度读数(DDR/BPU/CPU),先看读数再谈“是 DDR 还是 CPU”,别用 5–10W 的总功率去反推——SoC 没有分模块功耗读数。

1. 温度参数依据

  • 整机环境温度:推荐 -20°C~60°C。
  • 系统热保护点(RDK 镜像默认,Thermal 控制):启动 80°C 即开机降频、95°C 触发 CPU/BPU 降频(CPU 最低 240MHz、BPU 最低 400MHz)、105°C 关机且不会自动重启,宕机点不要往上调。
  • X5 SDK 设备树里另一组值:CPU passive 95°C、critical 110°C;DDR 热区 95°C 触发 ddrc 降频(见 Thermal 系统)。两套文档的 zone 编号和阈值不完全一致,以你板子实际读数为准:
sudo hrut_somstatus          # 一次看到 DDR/BPU/CPU 温度 + CPU/BPU/DDR/GPU 频率
grep . /sys/class/thermal/thermal_zone*/type
cat /sys/class/thermal/thermal_zone*/trip_point_*_temp

芯片级的 Tj 上限、DDR 颗粒温度规格,官方文档没有给出数值,需要向原厂确认。

2. 区分 DDR 还是 CPU
按 X5 温度传感器 读:

cat /sys/class/hwmon/hwmon0/temp1_input   # DDR,精度 0.001℃
cat /sys/class/hwmon/hwmon0/temp2_input   # BPU,仅 BPU 运行时有值
cat /sys/class/hwmon/hwmon0/temp3_input   # CPU
cat /sys/class/devfreq/soc:ddrc-freq/cur_freq

判断规则:出现异常时哪一路贴近阈值、以及谁先被降频。DDR 那一路测量的是 SoC 内部 PVT 通道(设备树里 thermal-sensors = <&pvt 0>),反映 die 上 DDR 控制器/接口附近的温度,不是 LPDDR 颗粒表面的温度,所以“DDR 读数高”不能直接等同于“颗粒过热”。如果 DDR 频率被压到 266MHz,才会明显影响带宽和推理耗时。

3. 软件侧可做的降功耗

  • 确认 CPU governor,performance 是最高功耗;改 schedutil 或限制 scaling_max_freq。
  • DDR 支持 266M/2133M/2844M/4266M,可把 soc:ddrc-freq 的 governor 从 performance 改 simple_ondemand,避免常驻 4266MHz(命令见 低功耗模式调试指南)。
  • X5 的 BPU/GPU/ISP/CODEC 是独立电源域,驱动 close 即下电,所以释放不再使用的模型/编解码/摄像头节点,比调 governor 更有效;模型降分辨率、降帧率同样直接减热。
  • 不用的 HDMI 输出、外设节点关掉;风扇+散热片的贴合与风道仍是主线,软件只能减发热、不能提升散热能力(散热设计建议)。

4. 关于“原厂更换 DDR”
公开资料里没有“更换 DDR 与散热问题相关”的任何说明,论坛无法确认原厂是否会换、以及原因;EVB 上的 DDR 属于板级设计/选型,变更通常还牵涉 BSP 侧 DDR 初始化与频率参数,需要原厂评估。若你已进入产品化热设计或 DDR 选型评估阶段,可先在这里把实测温度、负载场景和结构方案梳理出来,再通过 DGP 项目对接与技术支持 找 FAE 做整机热设计评审。

补两个信息我能更准确判断:异常的具体表现是降频卡顿、随机重启/宕机,还是 DDR 访问报错?负载是长时间 BPU 推理/视频编码,还是 CPU 为主?

这是2路摄像头运行yolov5s的结果(没开风扇)


作为对比,这是加了物理风扇的结果

从这两组读数看,风扇起的作用是把 DDR 从温控限频中拉回来,而不是解决发热:

  • 不开风扇:temp1_input 105266(DDR 105.3℃)、temp3_input 105559(CPU 105.6℃),同时 soc:ddrc-freq 只有 2844MHz(满频 4266M 的 2/3)。
  • 加风扇:99.4℃ / 100.6℃,ddrc 回到 4266MHz。

DDR 频率自己降档,只可能是 thermal-ddr 温区触发了 DDR cooling device 的降频保护,这是温控动作,不是 DDR 出错或“颗粒过热”。所以 2 路 yolov5s 变慢的链条是:结温逼近阈值 → DDR 带宽被砍 → 推理耗时上升;换 DDR 颗粒改变不了 die 的发热。另外那路读数是 SoC 内部 PVT 通道,反映 die 上 DDR 控制器附近温度,不是 LPDDR 芯片表面温度(X5 温度传感器)。

还要注意你板子上的阈值和 RDK 文档默认值不一样:你读到的 DDR/CPU 两个温区 trip_point 是 105℃/110℃,而 Thermal 和 CPU 频率管理 里 X5 默认是 DDR 调频 95℃、CPU/BPU/GPU 调频 95℃、关机 105℃。说明你烧的多半是 X5 SDK/EVB 的 BSP 镜像,以你 sysfs 的实际值为准,但 105℃ 才降频、110℃ 关机这两点不该当作可长期工作的目标。hrut_somstatus 是 RDK 镜像里的命令包,你这套镜像没装,用 /sys 读法即可;顺带 cat /etc/version 或 rdkos_info 确认下镜像版本。

加风扇只压了 5–6℃,说明现在的散热路径(散热片贴合 + 风量/风道)还远不够,满载结温仍在 100℃ 上下,余量只剩几度。建议按顺序做:

  1. 先查接触与风道:散热片/导热垫与 SoC 的贴合面、风扇是否对着散热片而不是吹板面;目标是满载结温压到 90℃ 以下再谈稳定跑。
  2. 跑推理时补读一次 temp2_input(BPU 那一路只在 BPU 上电时有值),确认热源是 BPU 推理还是 CPU 侧取流/后处理;两路摄像头若都在做全流程推理,就是 2 个模型实例常驻。
  3. 结构实在受限时再降功耗:CPU governor 从 performance 改 schedutil、soc:ddrc-freq 的 governor 从 performance 改 simple_ondemand(见低功耗模式调试指南),以及降模型输入分辨率/帧率。软件只能减发热,不能提升散热能力。

关于“原厂更换 DDR 是否与此相关”:公开资料没有任何相关说明,你这组数据也指向 die 结温触发温控,不是颗粒选型问题。真要评估改板、DDR 选型或整机热设计,可先在这里把实测温度、负载场景和结构方案整理清楚,再通过 DGP 项目对接与技术支持 对接 FAE。

方便的话把两组情况下的帧率/单帧耗时也贴一下,能确认 DDR 降频实际吃掉了多少性能。

无风扇时 DDR/CPU 温区已到105.3/105.6℃,加风扇后仍有99.4/100.6℃,散热余量不够。官方 X5 参考95℃开始降频、最高结温105℃,你这套镜像的105/110℃保护配置不能当持续工作目标。先检查散热片、导热垫贴合及风道;软件侧可先降低双路推理帧率,CPU 若锁在 performance,可改 schedutil 对照。

DDR 频率从284升到426.6MHz,与降温后温控限频缓解相符,但不能据此认定 DDR 颗粒故障,也没有公开依据把原厂换 DDR 与此关联。

官方温度与散热要求:https://developer.d-robotics.cc/rdk_x_doc/RDK?p=RDK+X5&v=3.5.0

截图数值和之前那条一致:105.3℃ 时 ddrc 掉到 2844MHz,加风扇回到 99.4℃/4266MHz —— 这是 thermal-ddr 温区触发 DDR cooling device 的调频,不是 DDR 颗粒出错,换颗粒改变不了 die 的发热。

截图里还多出一个可对照官方的地方:官方 X5 只有 thermal_zone0(只挂 DDR 调频,默认 95℃)和 thermal_zone1(挂 CPU/BPU/GPU,trip1 默认 95℃ 调频、trip2 默认 105℃ 关机)两个温区,见 X5 Thermal 系统。你这台两个温区都是 105000 / 110000,保护点明显放宽了:105.3℃ 越过 zone0 的 105 点、ddrc 跟着降档,与“zone0 控 DDR 频率”一致,而没关机是因为 critical 被放到 110。这套值只能说明镜像配置不同,不能当持续工作目标。

加风扇后 DDR 99.4℃、CPU 100.6℃,距 105 只剩 4–5℃ 余量,主线仍是散热片/导热垫贴合与风道,调参数只减发热不增散热。

还缺两条能定性的信息:

  1. cat /sys/class/thermal/thermal_zone*/trip_point_*_type,确认你这镜像里 105/110 各自是 passive 还是 critical。
  2. 双路推理跑起来时读 temp2_input(BPU 只在 BPU 上电时有值),并给出对应的单帧耗时或帧率,才能算出 DDR 降频实际吃了多少性能。

另外提示符是 root@ubuntu、没有 hrut_somstatus,多半是 X5 SDK/EVB 的 Ubuntu BSP 而非 RDK OS,cat /etc/version 确认一下,别直接套 RDK 默认阈值排查。