Общая информация #
Троттлинг (thermal throttling) — это механизм защиты процессора от перегрева. При достижении заданной температуры система автоматически снижает частоту CPU, уменьшая тепловыделение и предотвращая повреждение устройства.
На платах Repka Pi троттлинг основан на показаниях встроенного термодатчика самого SoC, а не внешних датчиков на плате.
Источник температуры #
Температура CPU считывается через контроллер термодатчиков (THS, thermal sensor), встроенный в процессор:
-
В Repka Pi 4 (SoC H6) используется датчик:
&ths 0(канал 0 встроенного THS). Ниже представлено его описание по путиu-boot-2020-04-rc3/arch/arm/dts/sun50i-h6.dtsi:ths: thermal-sensor@5070400 { compatible = "allwinner,sun50i-h6-ths"; reg = <0x05070400 0x100>; interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_THS>; clock-names = "bus"; resets = <&ccu RST_BUS_THS>; nvmem-cells = <&ths_calibration>; nvmem-cell-names = "calibration"; #thermal-sensor-cells = <1>; }; -
В Repka Pi 3 (SoC H5) используется датчик:
&ths 0(канал 0 встроенного THS). Ниже представлено его описание по путиu-boot-2022-04/arch/arm/dts/sun50i-h5.dtsi:ths: thermal-sensor@1c25000 { compatible = "allwinner,sun8i-h3-ths"; reg = <0x01c25000 0x400>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; resets = <&ccu RST_BUS_THS>; clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; clock-names = "bus", "mod"; nvmem-cells = <&ths_calibration>; nvmem-cell-names = "calibration"; #thermal-sensor-cells = <1>; };
Таким образом, троттлинг ориентируется именно на температуру кристалла процессора.
Как работает троттлинг #
При достижении температурных порогов (trip points), заданных в системе:
- активируется механизм охлаждения через
cooling-device(обычно CPU); - снижается частота процессора;
- уменьшается энергопотребление и тепловыделение.
Если температура продолжает расти, возможно аварийное отключение системы.
Особенности настройки на Repka Pi #
- Для Repka Pi 4 параметры термоконтроля задаются в базовом описании SoC (dtsi). Само описание можно найти по пути
u-boot-2020-04-rc3/arch/arm/dts/sun50i-h6.dtsiв репозитории u-boot-2020-04-rc3. - Для Repka Pi 3 пороги троттлинга могут изменяться через overlay-профили (например,
profile-ver1.3,profile-ver1.4-1.6-passive). При этом источник температуры остаётся тем же — встроенный датчик SoC. Сами файлы оверлеев можно найти по путиu-boot-2022-04/arch/arm/dts/overlays/throttlingв репозитории u-boot-2022-04.
Температурные датчики #
В системе доступны несколько температурных зон, например:
cpu-thermalgpu-thermalthermal_zone0,thermal_zone1(с несколькими точками измерения)
Точное соответствие этих датчиков физическим точкам на плате зависит от конкретной реализации SoC и прошивки. Однако ключевым для управления троттлингом обычно является датчик процессора (cpu-thermal), т.к. она привязана к встроенному датчику SoC (ths, канал 0).
Допустимые температуры #
Согласно даташиту процессора рабочий диапазон: примерно от -20°C до +125°C. Однако: троттлинг активируется при более низких температурах и аварийное отключение также настроено заранее, чтобы избежать достижения критических значений.
Влияние нагрузки #
Наибольшее тепловыделение создаёт процессор (CPU). Нагрузка на другие компоненты оказывает значительно меньший эффект: RAM, Ethernet (LAN), Wi-Fi и SD-карта. Их вклад в общий нагрев платы обычно несоизмеримо ниже по сравнению с CPU.