前言
RK3588 作为一款高性能 ARM 架构芯片(搭载 4 核 A76+4 核 A55,集成 GPU、NPU),广泛用于边缘计算、嵌入式设备、AI 开发板等场景。在编译 OpenCV、运行 AI 模型等高强度任务时,芯片温度直接影响稳定性和性能 —— 温度过高可能触发降频,甚至导致程序崩溃。本文将分享 3 种 RK3588 芯片温度查询方法,帮助开发者实时监控硬件状态。
![图片[1]-RK3588 温度监控:不仅能查 CPU,GPU/NPU 温度也能看(附映射表)-天煜博客](https://blog.itianyu.cn/wp-content/uploads/2025/10/20251026161255378-image-1024x606.png)
一、核心原理: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_zone62. 读取指定部件温度
RK3588 的 thermal_zone 与硬件部件的对应关系(通用映射,不同开发板可能略有差异):
| 命令 | 对应部件 | 说明 |
| cat /sys/class/thermal/thermal_zone0/temp | 芯片中心温度 | 整体核心区域温度,参考价值最高 |
| cat /sys/class/thermal/thermal_zone1/temp | CPU 大核 A76(0/1) | 4 核 A76 中的前 2 个核心 |
| cat /sys/class/thermal/thermal_zone2/temp | CPU 大核 A76(2/3) | 4 核 A76 中的后 2 个核心 |
| cat /sys/class/thermal/thermal_zone3/temp | CPU 小核 A55(0-3) | 4 核 A55 所有核心 |
| cat /sys/class/thermal/thermal_zone4/temp | PD_CENTER | 电源管理芯片温度 |
| cat /sys/class/thermal/thermal_zone5/temp | GPU | Mali-G610 GPU 温度 |
| cat /sys/class/thermal/thermal_zone6/temp | NPU | 神经网络处理器温度(AI 任务核心) |
3. 温度换算示例
执行命令后,输出结果为整数,需除以 1000 得到实际温度:
# 查询NPU温度
cat /sys/class/thermal/thermal_zone6/temp
# 输出:42300 → 实际温度42.3℃三、方法 2:一键查询所有核心温度(脚本简化)
频繁手动输入命令繁琐,可编写简单脚本,一键输出所有部件温度并自动换算:
1. 创建脚本文件
vim rk3588_temp.sh2. 写入脚本内容
#!/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










暂无评论内容