6.1 Software Recommendations

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.