Difference between revisions of "Thermal management (Axel)"

From DAVE Developer's Wiki
Jump to: navigation, search
(XELK 2.x.y series)
(XELK 1.x.y series)
Line 23: Line 23:
 
At Linux level, a more sophisticated protection mechanism is implemented. Please refer to the following sections for more details.
 
At Linux level, a more sophisticated protection mechanism is implemented. Please refer to the following sections for more details.
  
=====XELK 1.x.y series=====
+
=====XELK 2.x.y series=====
 
Practically speaking, for [[Axel_Embedded_Linux_Kit_(XELK)#XELK_software_components|XELK 1.x.y series]] this mechanism makes use of two different thresholds, denoted as <code>trip_point0</code> and <code>trip_point1</code>. When Tj reaches <code>trip_point0</code>, Linux kernel scales down processor frequency:
 
Practically speaking, for [[Axel_Embedded_Linux_Kit_(XELK)#XELK_software_components|XELK 1.x.y series]] this mechanism makes use of two different thresholds, denoted as <code>trip_point0</code> and <code>trip_point1</code>. When Tj reaches <code>trip_point0</code>, Linux kernel scales down processor frequency:
 
<pre>
 
<pre>
Line 33: Line 33:
 
thermal thermal_zone0: critical temperature reached(100 C),shutting down
 
thermal thermal_zone0: critical temperature reached(100 C),shutting down
 
</pre>
 
</pre>
Trip point thresholds can be accessed via <code>sysfs</code> interface from user space.
 
  
The following example shows how to read the values of the trip points:
+
By default, temperature thresholds are set up as follows:
 +
*<code>trip_point0</code>:
 +
*<code>trip_point1</code>:
 +
 
 +
Trip point thresholds can be accessed via <code>sysfs</code> interface from user space. The following example shows how to read the values of the trip points:
 
<pre>
 
<pre>
 
root@axel-lite:~# cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
 
root@axel-lite:~# cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
Line 42: Line 45:
 
100000
 
100000
 
</pre>
 
</pre>
 
 
This example shows how to set trip points 0 and 1 to 95°C and 100°C respectively:
 
This example shows how to set trip points 0 and 1 to 95°C and 100°C respectively:
 
<pre>
 
<pre>
Line 48: Line 50:
 
echo 100000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
 
echo 100000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
 
</pre>
 
</pre>
{{ImportantMessage|text=Exceeding maximum junction temperature indicated by manufacturer datasheet may cause permanent damage.}}
+
{{ImportantMessage|text=Please note that
 +
*it is possible to set up trip points greater than the maximum junction temperature indicated by manufacturer datasheet
 +
*exceeding maximum junction temperature indicated by manufacturer datasheet may cause permanent damage
 +
}}
  
 
To read current processor temperature please issue this command (reported temperature is 36.676°C in the example):
 
To read current processor temperature please issue this command (reported temperature is 36.676°C in the example):

Revision as of 14:02, 15 April 2016

Info Box
Axel-04.png Applies to Axel Ultra
Axel-lite 02.png Applies to Axel Lite
Axel-02.png Applies to AXEL ESATTA


Software thermal protection[edit | edit source]

Axel Embedded Linux Kit (XELK)[edit | edit source]

In XELK, two software thermal protection mechanisms are implemented. Both are based on the processor's temperature sensor. It is worth remembering that maximum junction temperature (also denoted as Tj in the rest of the document) is:

  • 95°C for commercial parts
  • 105°C for extended commercial and industrial parts
  • 125°C for automotive parts.

U-Boot[edit | edit source]

At U-Boot level, automatic boot procedure is halted until Tj is smaller than (following temperatures might seem excessively low but they take into account the intrinsic poor precision of the temperature sensor to provide a reasonable safe margin):

  • 80°C for commercial parts
  • 90 for extended commercial and industrial parts
  • 110°C for automotive parts.

Linux kernel[edit | edit source]

At Linux level, a more sophisticated protection mechanism is implemented. Please refer to the following sections for more details.

XELK 2.x.y series[edit | edit source]

Practically speaking, for XELK 1.x.y series this mechanism makes use of two different thresholds, denoted as trip_point0 and trip_point1. When Tj reaches trip_point0, Linux kernel scales down processor frequency:

System is too hot. GPU3D will work at 1/64 clock.

If Tj reaches trip_point1, a complete shutdown is triggered:

thermal thermal_zone0: critical temperature reached(100 C),shutting down

By default, temperature thresholds are set up as follows:

  • trip_point0:
  • trip_point1:

Trip point thresholds can be accessed via sysfs interface from user space. The following example shows how to read the values of the trip points:

root@axel-lite:~# cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
85000
root@axel-lite:~# cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
100000

This example shows how to set trip points 0 and 1 to 95°C and 100°C respectively:

echo 95000 > /sys/class/thermal/thermal_zone0/trip_point_0_temp
echo 100000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
200px-Emblem-important.svg.png

Please note that

  • it is possible to set up trip points greater than the maximum junction temperature indicated by manufacturer datasheet
  • exceeding maximum junction temperature indicated by manufacturer datasheet may cause permanent damage

To read current processor temperature please issue this command (reported temperature is 36.676°C in the example):

root@axel-lite:~# cat /sys/class/thermal/thermal_zone0/temp
36676

For more details about this functionality, please refer to Documentation/thermal/sysfs-api.txt in the kernel sources.

XELK 3.x.y series[edit | edit source]

TBD inserire link della patch

Related links[edit | edit source]