Thermal(1)——温控策略

本文介绍了Rockchip RK3399平台的功耗计算方法,包括静态和动态功耗公式,以GPU为例详细计算不同频率下的功耗,并展示了如何通过sys接口调整CPU和GPU频率。此外,还提及了CPU和GPU工作频率的设置及电压管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文档:
《Rockchip-Developer-Guide-Linux4.4-Thermal-CN》

功耗计算

静态功耗公式:
/* a、b、c、d、C是常量,在DTSI中配置,保持默认值即可,T是温度,V是电压,需要根据实际情况调整 */
t_scale = (a * T^3) + (b * T^2) + (c * T) + d
v_scale = V^3
P(s)= C * T_scale * V_scale
动态功耗公式:
/* C是常量,在DTSI中配置,保持默认值即可,V是电压,F是频率,需要根据实际情况调整 */
P(d)= C * V^2 * F

以RK3399为例,假设A53、A72、GPU都有⼯作,都需要限制,实际使⽤最⾼频分别为1416MHz(1125mV)、1800MHz(1200mV)、800MHz(1100mV)
在这里插入图片描述
在这里插入图片描述
以GPU为例:

GPU 动态功耗:C = 733(dynamic-coefficient配置为733),V = 1100mV,F = 800MHz
P_d_gpu = 733 * 1100 * 1100 * 800 / 1000000000 = 709 mW

GPU 静态功耗:DTSI中static-coefficient配置为411000,ts配置为32000 4700 -80 2,则C = 411000,
a = 2,b = -80,c = 4700,d = 32000,温度为开始降频的温度值T = 75000mC,V = 1100mV
t_scale = ( 2 * 75000 * 75000 * 75000 / 1000000 ) + ( -80 * 75000 * 75000 / 1000) + ( 4700 * 75000 ) + 32000 * 1000 = 778250
v_scale = 1100 * 1100 * 1100 / 1000000 = 1331
P_s_gpu = 411000 * 778250 / 1000000 * 1331 / 1000000 = 425mW
P_max = P_d_a53 + P_d_a72 + P_d_gpu + P_s_gpu = 4110mW
注意:当前只有GPU有计算静态功耗;当前只是列出计算⽅法,实际上通过exel表格计算⽐较⽅便;

当GPU主频最大为600MHz时

P_d_gpu = 733 * 925 * 925 * 600 / 1000000000 = 376 mW

t_scale = ( 2 * 75000 * 75000 * 75000 / 1000000 ) + ( -80 * 75000 * 75000 / 1000) + ( 4700 * 75000 ) + 32000 * 1000 = 778250
v_scale = 925 * 925 * 925 / 1000000 = 791
P_s_gpu = 411000 * 778250 / 1000000 * 791 / 1000000 = 253mW

P_max = P_d_a53 + P_d_a72 + P_d_gpu + P_s_gpu = 3605mW

设定75度后才降频,所以可以先让75度时的power为最⼤的power,再通过如下公式计算得sustainable的值:

sustainable + 2 * sustainable / (target- threshold) * (target- 75) = P_75

sustainable + 2 * sustainable / (85 - 70) * (85 - 75) = 3605
sustainable = 1545mW

在这里插入图片描述

相关内容

通过sys文件系统接口调CPU主频

查看CPU频率属性

A53
[root@rk3399:/]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_gove
rnors 
conservative ondemand userspace powersave interactive performance
[root@rk3399:/]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_freq
uencies 
408000 600000 816000 1008000 1200000 1416000

A72
[root@rk3399:/]# cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_freq
uencies 
408000 600000 816000 1008000 1200000 1416000 1608000 1800000

不同的工作频率对应了不同的工作电压,在userspace模式下,可以设置cpu的工作频率,设置为最大频率时,就可以测量最大的工作电压。

[root@rk3399:/]# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_g
overnor
[root@rk3399:/]# echo 1416000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_set
speed

GPU主频

参考文档:
《Rockchip-Developer-Guide-Linux4.4-Devfreq》

Linux4.4内核将频率、电压相关的配置放在了devicetree中,我们将这些配置信息组成的节点,称之为OPP Table。OPP Table节点包含描述频率和电压的OPP节点、leaakge相关配置属性、PVTM相关配置属性等。

 gpu_opp_table: opp-table2 {
  opp-200000000 {
   opp-hz = /bits/ 64 <200000000>;
   opp-microvolt = <825000>;
   opp-microvolt-L0 = <825000>;
   opp-microvolt-L1 = <825000>;
   opp-microvolt-L2 = <825000>;
   opp-microvolt-L3 = <825000>;
  };
...
  opp-800000000 {
   opp-hz = /bits/ 64 <800000000>;
   opp-microvolt = <1100000>;
   opp-microvolt-L0 = <1100000>;
   opp-microvolt-L1 = <1075000>;
   opp-microvolt-L2 = <1050000>;
   opp-microvolt-L3 = <1025000>;
  };
 };

GPU可以工作在opp-200000000、opp-300000000、opp-400000000、opp-600000000、opp-800000000这五种频率和电压状态。

### 半导体激光器温度控制设计方案 #### 1. 控制系统的总体架构 在Simulink中设计大功率半导体激光器的温度控制系统时,可以将其视为一个闭环反馈系统。该系统的主要目标是维持激光器的工作温度在一个设定范围内,以确保其输出功率和波长稳定性[^1]。 整个系统包括以下模块: - **传感器模块**:用于实时监测激光器的实际温度。 - **控制器模块**:接收来自传感器的温度信号并与设定值比较,生成相应的控制信号。 - **执行机构模块**:根据控制器发出的指令调节冷却装置(如热电制冷片TEC)或加热元件的工作状态。 - **被控对象模型**:即大功率半导体激光器本身及其热传导特性建模。 #### 2. 被控对象——大功率半导体激光器的热模型 为了精确地模拟激光器内部热量分布情况,在Simulink中需要建立详细的热力学模型。此模型应考虑到以下几个方面: - 激光二极管芯片产生的焦耳热; - 泵浦光源引入的能量损耗转换成热量; - 散热路径上的热阻抗参数; 这些都可以通过定义一组偏微分方程来表示,并利用有限元分析或者简化后的集中参数法来进行近似处理[^4]。 ```matlab % 定义基本参数 thermal_resistance = 5; % 假设热阻为5°C/W power_dissipation = 10; % 功耗假设为10W ambient_temperature = 25; % 环境温度设置为25°C % 计算结温 junction_temperature = ambient_temperature + power_dissipation * thermal_resistance; disp(['Junction Temperature: ', num2str(junction_temperature), '°C']); ``` #### 3. PID控制器的设计与实现 PID控制器因其简单易用且效果良好而成为工业界最常用的控制策略之一。对于本项目而言,可以选择标准形式的比例积分微分(PID)算法作为核心控制逻辑[^2]: \[ u(t)=K_p e(t)+K_i \int_{0}^{t}e(\tau)d\tau+K_d\frac{de(t)}{dt} \] 其中\(u(t)\)代表控制量,\(e(t)\)为目标值减去当前测量值得到误差项。\((K_p,K_i,K_d)\)分别是比例系数、积分时间和微分时间常数。 在Simulink环境中可以直接拖拽预置好的`PID Controller`模块至画布上完成配置操作即可快速搭建起初步框架结构图如下所示: ![Simulink Block Diagram](https://via.placeholder.com/600x400?text=Simulink+Block+Diagram) 注意调整各环节增益直至达到满意的动态响应性能为止. #### 4. 数字滤波器的应用 为了避免高频干扰可能引起不必要的震荡现象发生,可以在反馈回路加入低通数字滤波器进一步平滑采集回来的数据序列[^3]. 具体做法是在ADC采样之后立即接入一阶IIR型LPF电路单元,这样既能保留足够的带宽又能有效抑制噪声成分带来的负面影响. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值