The following list compiles the good practices that can be adopted at software level in high temperature applications. In Linux systems, the kernel implements most of these by default.
- Temperature control
- Enable the temperature sensor to periodically
read the die temperature. Make sure to use the calibration data provided by
Microchip to improve the initial temperature reading accuracy and mind that
this reading has a ±5°C accuracy. This means that the system should be shut
down when the temperature sensor reports TJ higher than 100°C.
- The Linux kernel
reports the die temperature in thermal zone 0. See Appendix A.
- Apply a temperature control policy to your
application to make sure corrective actions are taken when the temperature rises.
- The Linux kernel
defines several temperature trip points to trigger various actions
ranging from decreasing the CPU frequency to enabling an external
fan or stopping the system. See Appendix A.
- Dynamic power reduction
- As previously discussed, reducing at any time the dynamic power in an application reduces the device junction temperature, and therefore the leakage power that depends on TJ. This creates a virtuous circle.
- Disable any “unused” resource in the system. Pay
attention to all analog blocks like USB transceivers, PLLs, MIPI receiver,
etc. Most of these can be enabled only when needed.
- Implement a CPU frequency control policy to reduce or stop the CPU clock when possible and couple this frequency control with a voltage control on VDDCPU (DVFS technique).
- The Linux kernel implements the CPUfreq framework
for which Microchip has defined several Power performance states
(P-states).
- Reduce MCKx frequency to a lower value when
possible. This reduces the dynamic power consumption on VDDCORE. The maximum
speed specified for each MCKx is designed to sustain the internal bandwidth
requirements when the device runs a worst case scenario. From a data
bandwidth perspective, that means using all peripherals at the same time to
their maximum data rate. In some systems having reduced bandwidth needs, it
may be possible to set these MCKx to half their maximum value, for
example.