RK3588 温度监控:不仅能查 CPU,GPU/NPU 温度也能看(附映射表)

前言

RK3588 作为一款高性能 ARM 架构芯片(搭载 4 核 A76+4 核 A55,集成 GPU、NPU),广泛用于边缘计算、嵌入式设备、AI 开发板等场景。在编译 OpenCV、运行 AI 模型等高强度任务时,芯片温度直接影响稳定性和性能 —— 温度过高可能触发降频,甚至导致程序崩溃。本文将分享 3 种 RK3588 芯片温度查询方法,帮助开发者实时监控硬件状态。

图片[1]-RK3588 温度监控:不仅能查 CPU,GPU/NPU 温度也能看(附映射表)-天煜博客


一、核心原理:RK3588 温度传感器与系统文件

RK3588 内置多个温度传感器,分别监控 CPU(大核 / 小核)、GPU、NPU 等核心部件,传感器数据会实时写入 Linux 系统的 /sys/class/thermal/ 目录下(这是 Linux 内核统一的 thermal 子系统接口)。

每个 thermal_zoneX(X 为数字)对应一个传感器,通过读取 temp 文件即可获取温度值,单位为 0.001℃(例如输出 38500 表示实际温度 38.5℃)。


二、方法 1:直接读取 thermal 文件(最基础)

这是最直接的查询方式,无需安装额外工具,适合快速验证。

1. 查看所有温度传感器

首先进入 thermal 目录,查看系统识别的传感器数量:

cd /sys/class/thermal/ | ls -l | grep thermal_zone

输出示例(RK3588 通常有 7 个核心传感器):

lrwxrwxrwx 1 root root 0  thermal_zone0 -> ../../devices/virtual/thermal/thermal_zone0lrwxrwxrwx 1 root root 0  thermal_zone1 -> ../../devices/virtual/thermal/thermal_zone1...lrwxrwxrwx 1 root root 0  thermal_zone6 -> ../../devices/virtual/thermal/thermal_zone6

2. 读取指定部件温度

RK3588 的 thermal_zone 与硬件部件的对应关系(通用映射,不同开发板可能略有差异):

命令对应部件说明
cat /sys/class/thermal/thermal_zone0/temp芯片中心温度整体核心区域温度,参考价值最高
cat /sys/class/thermal/thermal_zone1/tempCPU 大核 A76(0/1)4 核 A76 中的前 2 个核心
cat /sys/class/thermal/thermal_zone2/tempCPU 大核 A76(2/3)4 核 A76 中的后 2 个核心
cat /sys/class/thermal/thermal_zone3/tempCPU 小核 A55(0-3)4 核 A55 所有核心
cat /sys/class/thermal/thermal_zone4/tempPD_CENTER电源管理芯片温度
cat /sys/class/thermal/thermal_zone5/tempGPUMali-G610 GPU 温度
cat /sys/class/thermal/thermal_zone6/tempNPU神经网络处理器温度(AI 任务核心)

3. 温度换算示例

执行命令后,输出结果为整数,需除以 1000 得到实际温度:

# 查询NPU温度
cat /sys/class/thermal/thermal_zone6/temp
# 输出:42300 → 实际温度42.3℃


三、方法 2:一键查询所有核心温度(脚本简化)

频繁手动输入命令繁琐,可编写简单脚本,一键输出所有部件温度并自动换算:

1. 创建脚本文件

vim rk3588_temp.sh

2. 写入脚本内容

#!/bin/bash
echo "===== RK3588 芯片温度监控 ====="
echo "芯片中心温度:$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))℃"
echo "CPU大核A76(0-1):$(($(cat /sys/class/thermal/thermal_zone1/temp)/1000))℃"
echo "CPU大核A76(2-3):$(($(cat /sys/class/thermal/thermal_zone2/temp)/1000))℃"
echo "CPU小核A55(0-3):$(($(cat /sys/class/thermal/thermal_zone3/temp)/1000))℃"
echo "电源管理芯片:$(($(cat /sys/class/thermal/thermal_zone4/temp)/1000))℃"
echo "GPU温度:$(($(cat /sys/class/thermal/thermal_zone5/temp)/1000))℃"
echo "NPU温度:$(($(cat /sys/class/thermal/thermal_zone6/temp)/1000))℃"
echo "=============================="

3. 赋予执行权限并运行

chmod +x rk3588_temp.sh
./rk3588_temp.sh

输出示例(清晰直观):

===== RK3588 芯片温度监控 =====
芯片中心温度:37℃
CPU大核A76(0-1):39℃
CPU大核A76(2-3):38℃
CPU小核A55(0-3):36℃
电源管理芯片:40℃
GPU温度:35℃
NPU温度:34℃
==============================


四、方法 3:实时监控温度变化(watch 命令)

若需要持续观察温度(如编译 OpenCV、运行 AI 模型时),可使用 watch 命令循环执行查询脚本:

# 每2秒刷新一次温度(-n 后接刷新间隔,单位秒)
watch -n 2 ./rk3588_temp.sh

退出实时监控:按 Ctrl+C 即可。


五、温度解读与注意事项

1. 正常温度范围(RK3588)

场景正常温度警戒温度危险温度
待机 / 轻负载30-45℃
中负载(如视频解码)45-60℃65℃+
高负载(编译 / AI 推理)60-75℃80℃+85℃+

2. 温度过高的处理建议

    • 若温度持续超过 80℃:检查设备散热(是否安装散热片 / 风扇);

    • 降频保护:RK3588 温度达到 85℃左右时,内核会自动降频以降温,导致性能下降;

    • 优化任务:高负载场景下(如编译 OpenCV),可减少编译线程数(如 make -j4 而非 j8),降低 CPU 压力。

3. 注意事项

    • 不同开发板(如 Firefly、Topeet)的 thermal_zone 映射可能略有差异,可通过 cat /sys/class/thermal/thermal_zoneX/type 查看传感器类型;

    • 无需 root 权限:普通用户(如 topeet)即可读取 temp 文件,无需sudo;

    • 兼容性:该方法适用于所有基于 Linux 内核的 RK3588 设备(Ubuntu、Debian 等系统)。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容