本指南介绍了如何在robOS系统中使用AGX CPU温度数据自动控制风扇,同时保持原有的调试功能。
系统采用智能优先级机制来选择温度数据源:
-
手动模式(最高优先级)
- 使用
temp set <温度>命令设置的测试温度 - 用于调试和测试风扇曲线
- 设置后自动启用手动模式
- 使用
-
AGX自动模式(中等优先级)
- 使用AGX监控器实时采集的CPU温度
- 用于生产环境的自动风扇控制
- 当手动模式关闭时自动生效
-
默认模式(最低优先级)
- 使用固定的25°C作为默认值
- 当AGX数据不可用时的备用方案
# 设置手动测试温度(自动启用手动模式)
temp set 45
# 获取当前有效温度和数据源
temp get
# 切换到AGX自动模式
temp auto
# 切换到手动模式
temp manual
# 查看温度管理状态
temp status为保持向后兼容性,原有的 test temp <温度> 命令仍然可用,会自动重定向到新的 temp set 命令。
# 1. 设置手动测试温度
temp set 30
# 2. 设置风扇为曲线模式
fan mode 0 curve
# 3. 配置温度曲线
fan config curve 0 25:10 35:30 45:60 55:100
# 4. 测试不同温度点
temp set 25 # 风扇应该10%转速
temp set 35 # 风扇应该30%转速
temp set 45 # 风扇应该60%转速
temp set 55 # 风扇应该100%转速
# 5. 检查当前温度状态
temp status# 1. 启动AGX监控器
agx_monitor start
# 2. 切换到AGX自动模式
temp auto
# 3. 设置风扇为曲线模式
fan mode 0 curve
# 4. 配置适合的温度曲线
fan config curve 0 40:20 50:40 60:70 70:100
# 5. 检查状态
temp status
agx_monitor status
fan status# 从自动模式切换到手动调试
temp manual
temp set 50
# 从手动模式切换回自动
temp auto
# 检查当前模式和温度源
temp status当AGX监控器接收到新的CPU温度数据时,会自动推送到温度管理系统:
// AGX监控器会自动调用
console_set_agx_temperature(cpu_temperature);风扇控制器使用新的智能温度选择函数:
// 自动选择最高优先级的温度源
console_get_effective_temperature(&temperature, &source);temp status输出示例:
Temperature Mode: AGX Auto
Effective Temperature: 42.5°C
Temperature Source: AGX CPU
fan status输出示例:
Fan 0: Enabled, Auto-Curve, Speed: 45%, Temp: 42.5°C
-
检查AGX监控器状态:
agx_monitor status
-
检查温度源状态:
temp status
-
检查是否在手动模式:
temp auto # 切换到自动模式
-
确认风扇在曲线模式:
fan mode 0 curve
-
检查温度曲线配置:
fan config show 0
-
手动测试温度响应:
temp set 60 fan status
所有温度管理操作都使用互斥锁保护,确保多线程环境下的数据一致性。
- AGX温度数据推送频率:1Hz
- 风扇控制器更新频率:基于配置的更新间隔
- 温度获取操作延迟:<100ms
- 新增温度管理变量:约16字节
- 互斥锁开销:约100字节
- 总额外内存使用:<200字节
- 手动/自动模式状态:运行时状态,重启后重置为自动模式
- 风扇曲线配置:自动保存到NVS存储
- AGX监控器配置:保存到NVS存储
- 原有的
test temp命令完全兼容 - 现有风扇配置无需修改
- 升级后默认为AGX自动模式
- 开发调试时:使用
temp set进行手动测试 - 生产部署时:使用
temp auto启用自动控制 - 定期检查:使用
temp status和fan status监控系统状态 - 曲线调优:基于实际工作负载调整温度曲线参数
更新日期:2025-10-04
版本:1.0.0
作者:robOS Team