SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Павел Курочкин General R&D, 2017
lm-sensors в embedded
От схемотехники до управления в linux
LM -- Linux Monitoring
Павел Курочкин General R&D, 2017
О чём пойдёт речь?
● Какую проблему решаем
● Схема, архитектура
● Чип сенсора в device-tree
● Детектим чип сенсора в linux
● hwmon userspace-интерфейс
● Конфигурируем sensors
● Конфигурируем управление вентиляторами
● Демо на живом устройстве
2
Павел Курочкин General R&D, 2017
Какую задачу решаем?
● Мониторинг напряжений на плате (3.3 В, 2.5 В, 5 В)
● Мониторинг напряжений БП (12 В)
● Мониторинг температуры (процессор, БП, среднее)
● Автоматическое управление вентиляторами
Нужен контроль подсистемы из linux!
3
Павел Курочкин General R&D, 2017
Блок-схема устройства
4
Павел Курочкин General R&D, 2017
Компоненты схемы
● adt7463 -- аналог National lm85
● ads7830 -- многоканальный АЦП
● Температурные сенсоры: 2N3906 и NTC-термистор
● AC/DC -- адаптер ~220V в 12V
● Power supply -- источники питания
5
Павел Курочкин General R&D, 2017
adt7463
Схемотехника:
● Мониторинг напряжений и температуры
● Автономное управление вентиляторами
● https://www.onsemi.com/pub/Collateral/ADT7463-D.PDF
Linux:
● https://www.kernel.org/doc/Documentation/hwmon/lm85
● modprobe lm85
6
Павел Курочкин General R&D, 2017
ads7830
Схемотехника:
● Мониторинг напряжений
● 8-ми канальный АЦП (8 бит)
● http://www.ti.com/lit/ds/symlink/ads7830.pdf
Linux:
● modprobe ads7828
● https://www.kernel.org/doc/Documentation/hwmon/ads7828
7
Павел Курочкин General R&D, 2017
Загрузка Linux на SoC
1. Первичный загрузчик (preloader)
2. Вторичный загрузчик (u-boot)
3. Linux kernel
4. init/systemd
Нужен корректный device-tree
8
Павел Курочкин General R&D, 2017
Добавляем чипы в device-tree
lm85@2d {
compatible = "national,adt7463";
reg = <0x2d>;
status = "okay";
};
adc@48 {
compatible = "at,ads7830";
reg = <0x48>;
status = "okay";
};
Поддерживается модулем ads7828.ko
~$ /sbin/modinfo ads7828 | grep ads7830
alias: i2c:ads7830
Поддерживается модулем lm85.ko
~$ /sbin/modinfo lm85 | grep adt7463
alias: i2c:adt7463
9
Павел Курочкин General R&D, 2017
Инструменты для i2c
● apt-get install i2c-tools
● Чтение-запись регистров: i2cget, i2cset
● Сканирование шины: i2cdetect, i2cdump
10
Павел Курочкин General R&D, 2017
Дебажим i2c
# i2cdetect -r 0
...
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- UU -- -- -- -- -- 2d 2e --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
используется драйвером
не используется
драйвером
11
Павел Курочкин General R&D, 2017
Загружаем модули
# modprobe lm85
# modprobe ads7828
# i2cdetect -r 0
...
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- UU -- -- -- -- -- UU UU --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
12
Павел Курочкин General R&D, 2017
hwmon
● Documentation/hwmon
/sys/class/hwmon
Documentation/hwmon/sysfs-interface
13
Павел Курочкин General R&D, 2017
hwmon sysfs interface
● Напряжение
● Ток
● Мощность
● Температура
● Вторжение
● Обороты вентиляторов
● PWM
● Можно использовать без sensors
● Documentation/hwmon/sysfs-interface
Наш случай
14
Павел Курочкин General R&D, 2017
adt7463 sysfs contents
# ls /sys/class/hwmon/hwmon1/
alarms in0_max in4_min pwm3_auto_pwm_minctl temp2_auto_temp_off
cpu0_vid in0_min name pwm3_enable temp2_input
device in1_alarm pwm1 pwm3_freq temp2_max
fan1_alarm in1_input pwm1_auto_channels subsystem temp2_min
fan1_input in1_max pwm1_auto_pwm_min temp1_alarm temp3_alarm
fan1_min in1_min pwm1_auto_pwm_minctl temp1_auto_temp_crit temp3_auto_temp_crit
fan2_alarm in2_alarm pwm1_enable temp1_auto_temp_max temp3_auto_temp_max
fan2_input in2_input pwm1_freq temp1_auto_temp_min temp3_auto_temp_min
fan2_min in2_max pwm2 temp1_auto_temp_off temp3_auto_temp_off
fan3_alarm in2_min pwm2_auto_channels temp1_fault temp3_fault
fan3_input in3_alarm pwm2_auto_pwm_min temp1_input temp3_input
fan3_min in3_input pwm2_auto_pwm_minctl temp1_max temp3_max
fan4_alarm in3_max pwm2_enable temp1_min temp3_min
fan4_input in3_min pwm2_freq temp2_alarm uevent
fan4_min in4_alarm pwm3 temp2_auto_temp_crit vrm
in0_alarm in4_input pwm3_auto_channels temp2_auto_temp_max
in0_input in4_max pwm3_auto_pwm_min temp2_auto_temp_min
15
Павел Курочкин General R&D, 2017
ads7830 sysfs interface
# ls /sys/class/hwmon/hwmon2/
device in1_input in3_input in5_input in7_input subsystem
in0_input in2_input in4_input in6_input name uevent
16
Павел Курочкин General R&D, 2017
Checkpoint 1
Имеем:
● Возможность настраивать и измерять
● Полный доступ к чипам по i2c
Ещё нужно:
● Дать мнемонические названия
● Конвертировать попугаев в Вольты и градусы
● Настроить пределы
● Настроить автоматическое управление вентиляторами
17
Павел Курочкин General R&D, 2017
sensors без конфига
# sensors
adt7463-i2c-0-2d
Adapter: Synopsys DesignWare I2C adapter
in0: +0.00 V (min = +0.00 V, max = +3.32 V) ALARM
in1: +0.01 V (min = +0.00 V, max = +2.99 V) ALARM
in2: +3.30 V (min = +2.97 V, max = +3.63 V)
in3: +0.00 V (min = +4.50 V, max = +5.50 V) ALARM
in4: +0.00 V (min = +0.00 V, max = +15.94 V) ALARM
fan1: 15000 RPM (min = 0 RPM)
fan2: 15000 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 15000 RPM (min = 0 RPM)
temp1: +32.0 C (low = +5.0 C, high = +50.0 C)
temp2: +34.5 C (low = +5.0 C, high = +50.0 C)
temp3: +63.0 C (low = +5.0 C, high = +85.0 C)
cpu0_vid: +0.000 V
18
Павел Курочкин General R&D, 2017
Конфигурируем sensors
● Каталог для конфигов /etc/sensors.d/
● Можно:
○ Назначить alias
○ Настроить min/max
○ Математические операции
○ Игнорировать поля
● ‘sensors -s’ применяет настройки
19
Павел Курочкин General R&D, 2017
sensors c конфигурацией
# sensors
adt7463-i2c-0-2d
Adapter: Synopsys DesignWare I2C adapter
3.3V: +3.30 V (min = +2.97 V, max = +3.63 V)
PSB1FAN: 15000 RPM (min = 0 RPM)
PSB0FAN: 15000 RPM (min = 0 RPM)
CHTEMP: +32.0 C (low = +5.0 C, high = +50.0 C)
INTTEMP: +34.5 C (low = +5.0 C, high = +50.0 C)
SOMTEMP: +62.0 C (low = +5.0 C, high = +85.0 C)
ads7830-i2c-0-48
Adapter: Synopsys DesignWare I2C adapter
PSB0TEMP: -1.87 V
PSB1TEMP: +39.69 V
3V3: +3.32 V
5V: +4.98 V
PSB0VIN: +5.74 V
PSB1VIN: +12.19 V
SYS12V: +12.07 V
20
Павел Курочкин General R&D, 2017
А кто будет управлять вентиляторами?
# export DEVPATH=/sys/class/hwmon/hwmon1
# echo 1 > $DEVPATH/pwm1_auto_channels
# echo 0 > $DEVPATH/pwm1_auto_pwm_min
# echo 20000 > $DEVPATH/temp1_auto_temp_min
# echo 19000 > $DEVPATH/temp1_auto_temp_off
# echo 35000 > $DEVPATH/temp1_auto_temp_max
pwm1 работает от первого канала
измерения температуры
При низкой температуре вентиляторы
не крутятся
Настраиваем границы
температурного диапазона
21
Павел Курочкин General R&D, 2017
Нюансы (грабли)
● При двухпроводном подключении вентиляторов PID-регулятор работать
не будет
● Требуется ручная настройка (i2cget/i2cset)
● Точность измерения низкая
22
Павел Курочкин General R&D, 2017
Итого
● Выбираем чип
● Находим его в Documentation/hwmon
● Прописываем в device-tree
● Находим на шине i2c
● Загружаем модуль
● Конфигурируем sensors
● Настраиваем через sysfs управление вентиляторами
23
Павел Курочкин General R&D, 2017
Ссылки
● https://www.kernel.org/doc/Documentation/hwmon/
● https://www.onsemi.com/pub/Collateral/ADT7463-D.PDF
● http://www.ti.com/lit/ds/symlink/ads7830.pdf
24

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

02. Порты ввода вывода микроконтроллеров
02. Порты ввода вывода микроконтроллеров02. Порты ввода вывода микроконтроллеров
02. Порты ввода вывода микроконтроллеров
 
08. adc
08. adc08. adc
08. adc
 
05. Таймеры STM32
05. Таймеры STM3205. Таймеры STM32
05. Таймеры STM32
 
Анатомия WebRTC
Анатомия WebRTCАнатомия WebRTC
Анатомия WebRTC
 
08. АЦП STM32(1)
08.  АЦП STM32(1)08.  АЦП STM32(1)
08. АЦП STM32(1)
 
11. ЦАП STM32
11. ЦАП STM3211. ЦАП STM32
11. ЦАП STM32
 
02. gpio
02. gpio02. gpio
02. gpio
 
09. usart
09. usart09. usart
09. usart
 
07. dma
07. dma07. dma
07. dma
 
Sys 4000 bip snmp
Sys 4000 bip snmpSys 4000 bip snmp
Sys 4000 bip snmp
 
Mitsubishi inverter review
Mitsubishi inverter reviewMitsubishi inverter review
Mitsubishi inverter review
 
12. spi
12. spi12. spi
12. spi
 
10. dac
10. dac10. dac
10. dac
 
описание процессор спутник
описание процессор спутникописание процессор спутник
описание процессор спутник
 
Scher khanb
Scher khanbScher khanb
Scher khanb
 
Scher khan-magicar-a
Scher khan-magicar-aScher khan-magicar-a
Scher khan-magicar-a
 
Scher khan logicar a user manual
Scher khan logicar a user manualScher khan logicar a user manual
Scher khan logicar a user manual
 
04. cs
04. cs04. cs
04. cs
 
Virt2real - есть ли жизнь в железе?
Virt2real - есть ли жизнь в железе?Virt2real - есть ли жизнь в железе?
Virt2real - есть ли жизнь в железе?
 
Scher khan logicar b user manual
Scher khan logicar b user manualScher khan logicar b user manual
Scher khan logicar b user manual
 

Ähnlich wie lm-sensors in embedded systems: from schematics to management from linux

Поиск неисправностей в беспроводных сетях, управляемых контроллерами
 Поиск неисправностей в беспроводных сетях, управляемых контроллерами Поиск неисправностей в беспроводных сетях, управляемых контроллерами
Поиск неисправностей в беспроводных сетях, управляемых контроллерами
Cisco Russia
 
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развития
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развитияВычислительная система Cisco UCS - обзор, преимущества и стратегия развития
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развития
Cisco Russia
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Mikhail Kurnosov
 
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000 Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
Cisco Russia
 
Александр Лямин, QratorLabs/HLL
Александр Лямин, QratorLabs/HLLАлександр Лямин, QratorLabs/HLL
Александр Лямин, QratorLabs/HLL
Ontico
 

Ähnlich wie lm-sensors in embedded systems: from schematics to management from linux (20)

Поиск неисправностей в беспроводных сетях, управляемых контроллерами
 Поиск неисправностей в беспроводных сетях, управляемых контроллерами Поиск неисправностей в беспроводных сетях, управляемых контроллерами
Поиск неисправностей в беспроводных сетях, управляемых контроллерами
 
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...Владимир Назаров, HPE:  Зачем нужна миграция с UNIX на Linux? Выводы на основ...
Владимир Назаров, HPE: Зачем нужна миграция с UNIX на Linux? Выводы на основ...
 
Hl++2013 lyamin
Hl++2013 lyaminHl++2013 lyamin
Hl++2013 lyamin
 
Организация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данныхОрганизация процесса регулярной обработки больших объемов данных
Организация процесса регулярной обработки больших объемов данных
 
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развития
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развитияВычислительная система Cisco UCS - обзор, преимущества и стратегия развития
Вычислительная система Cisco UCS - обзор, преимущества и стратегия развития
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 Smirnov
 
Программируемость и автоматизация решений Ciscо - практическое применение
Программируемость и автоматизация решений Ciscо - практическое применениеПрограммируемость и автоматизация решений Ciscо - практическое применение
Программируемость и автоматизация решений Ciscо - практическое применение
 
linux and freebsd monitoring
linux and freebsd monitoringlinux and freebsd monitoring
linux and freebsd monitoring
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
Performance optimization of virtual network infrastructure (RUS, OpenStack Me...
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
 
7.3.3 Преобразователи частоты Altivar 32
7.3.3 Преобразователи частоты Altivar 327.3.3 Преобразователи частоты Altivar 32
7.3.3 Преобразователи частоты Altivar 32
 
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000 Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
Развитие семейства коммутаторов для ЦОД Cisco Nexus 7000
 
Александр Лямин, QratorLabs/HLL
Александр Лямин, QratorLabs/HLLАлександр Лямин, QratorLabs/HLL
Александр Лямин, QratorLabs/HLL
 
WhereShock Platform 4CIO 09.2018
WhereShock Platform 4CIO 09.2018WhereShock Platform 4CIO 09.2018
WhereShock Platform 4CIO 09.2018
 
Networks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solutionNetworks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solution
 
Шеметов А.С. - ПАО "ФСК ЕЭС"
Шеметов А.С. - ПАО "ФСК ЕЭС"Шеметов А.С. - ПАО "ФСК ЕЭС"
Шеметов А.С. - ПАО "ФСК ЕЭС"
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
Data transcoder
Data transcoderData transcoder
Data transcoder
 
Архитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействиеАрхитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействие
 

Mehr von Pavel Kurochkin

Mehr von Pavel Kurochkin (8)

Sama5d3: how to run linux on it
Sama5d3: how to run linux on itSama5d3: how to run linux on it
Sama5d3: how to run linux on it
 
Measuring ethernet traffic parameters
Measuring ethernet traffic parametersMeasuring ethernet traffic parameters
Measuring ethernet traffic parameters
 
SoC-powered Linux / Linux-powered SoC
SoC-powered Linux / Linux-powered SoCSoC-powered Linux / Linux-powered SoC
SoC-powered Linux / Linux-powered SoC
 
Лекция 4: измерения в Е1
Лекция 4: измерения в Е1Лекция 4: измерения в Е1
Лекция 4: измерения в Е1
 
Лекция 3: оптические сети. Обзор
Лекция 3: оптические сети. ОбзорЛекция 3: оптические сети. Обзор
Лекция 3: оптические сети. Обзор
 
Лекция 2: Ethernet L1, L2. Обзор
Лекция 2: Ethernet L1, L2. ОбзорЛекция 2: Ethernet L1, L2. Обзор
Лекция 2: Ethernet L1, L2. Обзор
 
Лекция 1: обзор канала E1
Лекция 1: обзор канала E1Лекция 1: обзор канала E1
Лекция 1: обзор канала E1
 
Вводная лекция
Вводная лекцияВводная лекция
Вводная лекция
 

lm-sensors in embedded systems: from schematics to management from linux

  • 1. Павел Курочкин General R&D, 2017 lm-sensors в embedded От схемотехники до управления в linux LM -- Linux Monitoring
  • 2. Павел Курочкин General R&D, 2017 О чём пойдёт речь? ● Какую проблему решаем ● Схема, архитектура ● Чип сенсора в device-tree ● Детектим чип сенсора в linux ● hwmon userspace-интерфейс ● Конфигурируем sensors ● Конфигурируем управление вентиляторами ● Демо на живом устройстве 2
  • 3. Павел Курочкин General R&D, 2017 Какую задачу решаем? ● Мониторинг напряжений на плате (3.3 В, 2.5 В, 5 В) ● Мониторинг напряжений БП (12 В) ● Мониторинг температуры (процессор, БП, среднее) ● Автоматическое управление вентиляторами Нужен контроль подсистемы из linux! 3
  • 4. Павел Курочкин General R&D, 2017 Блок-схема устройства 4
  • 5. Павел Курочкин General R&D, 2017 Компоненты схемы ● adt7463 -- аналог National lm85 ● ads7830 -- многоканальный АЦП ● Температурные сенсоры: 2N3906 и NTC-термистор ● AC/DC -- адаптер ~220V в 12V ● Power supply -- источники питания 5
  • 6. Павел Курочкин General R&D, 2017 adt7463 Схемотехника: ● Мониторинг напряжений и температуры ● Автономное управление вентиляторами ● https://www.onsemi.com/pub/Collateral/ADT7463-D.PDF Linux: ● https://www.kernel.org/doc/Documentation/hwmon/lm85 ● modprobe lm85 6
  • 7. Павел Курочкин General R&D, 2017 ads7830 Схемотехника: ● Мониторинг напряжений ● 8-ми канальный АЦП (8 бит) ● http://www.ti.com/lit/ds/symlink/ads7830.pdf Linux: ● modprobe ads7828 ● https://www.kernel.org/doc/Documentation/hwmon/ads7828 7
  • 8. Павел Курочкин General R&D, 2017 Загрузка Linux на SoC 1. Первичный загрузчик (preloader) 2. Вторичный загрузчик (u-boot) 3. Linux kernel 4. init/systemd Нужен корректный device-tree 8
  • 9. Павел Курочкин General R&D, 2017 Добавляем чипы в device-tree lm85@2d { compatible = "national,adt7463"; reg = <0x2d>; status = "okay"; }; adc@48 { compatible = "at,ads7830"; reg = <0x48>; status = "okay"; }; Поддерживается модулем ads7828.ko ~$ /sbin/modinfo ads7828 | grep ads7830 alias: i2c:ads7830 Поддерживается модулем lm85.ko ~$ /sbin/modinfo lm85 | grep adt7463 alias: i2c:adt7463 9
  • 10. Павел Курочкин General R&D, 2017 Инструменты для i2c ● apt-get install i2c-tools ● Чтение-запись регистров: i2cget, i2cset ● Сканирование шины: i2cdetect, i2cdump 10
  • 11. Павел Курочкин General R&D, 2017 Дебажим i2c # i2cdetect -r 0 ... 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- 0c -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- UU -- -- -- -- -- 2d 2e -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- используется драйвером не используется драйвером 11
  • 12. Павел Курочкин General R&D, 2017 Загружаем модули # modprobe lm85 # modprobe ads7828 # i2cdetect -r 0 ... 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- 0c -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- UU -- -- -- -- -- UU UU -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 12
  • 13. Павел Курочкин General R&D, 2017 hwmon ● Documentation/hwmon /sys/class/hwmon Documentation/hwmon/sysfs-interface 13
  • 14. Павел Курочкин General R&D, 2017 hwmon sysfs interface ● Напряжение ● Ток ● Мощность ● Температура ● Вторжение ● Обороты вентиляторов ● PWM ● Можно использовать без sensors ● Documentation/hwmon/sysfs-interface Наш случай 14
  • 15. Павел Курочкин General R&D, 2017 adt7463 sysfs contents # ls /sys/class/hwmon/hwmon1/ alarms in0_max in4_min pwm3_auto_pwm_minctl temp2_auto_temp_off cpu0_vid in0_min name pwm3_enable temp2_input device in1_alarm pwm1 pwm3_freq temp2_max fan1_alarm in1_input pwm1_auto_channels subsystem temp2_min fan1_input in1_max pwm1_auto_pwm_min temp1_alarm temp3_alarm fan1_min in1_min pwm1_auto_pwm_minctl temp1_auto_temp_crit temp3_auto_temp_crit fan2_alarm in2_alarm pwm1_enable temp1_auto_temp_max temp3_auto_temp_max fan2_input in2_input pwm1_freq temp1_auto_temp_min temp3_auto_temp_min fan2_min in2_max pwm2 temp1_auto_temp_off temp3_auto_temp_off fan3_alarm in2_min pwm2_auto_channels temp1_fault temp3_fault fan3_input in3_alarm pwm2_auto_pwm_min temp1_input temp3_input fan3_min in3_input pwm2_auto_pwm_minctl temp1_max temp3_max fan4_alarm in3_max pwm2_enable temp1_min temp3_min fan4_input in3_min pwm2_freq temp2_alarm uevent fan4_min in4_alarm pwm3 temp2_auto_temp_crit vrm in0_alarm in4_input pwm3_auto_channels temp2_auto_temp_max in0_input in4_max pwm3_auto_pwm_min temp2_auto_temp_min 15
  • 16. Павел Курочкин General R&D, 2017 ads7830 sysfs interface # ls /sys/class/hwmon/hwmon2/ device in1_input in3_input in5_input in7_input subsystem in0_input in2_input in4_input in6_input name uevent 16
  • 17. Павел Курочкин General R&D, 2017 Checkpoint 1 Имеем: ● Возможность настраивать и измерять ● Полный доступ к чипам по i2c Ещё нужно: ● Дать мнемонические названия ● Конвертировать попугаев в Вольты и градусы ● Настроить пределы ● Настроить автоматическое управление вентиляторами 17
  • 18. Павел Курочкин General R&D, 2017 sensors без конфига # sensors adt7463-i2c-0-2d Adapter: Synopsys DesignWare I2C adapter in0: +0.00 V (min = +0.00 V, max = +3.32 V) ALARM in1: +0.01 V (min = +0.00 V, max = +2.99 V) ALARM in2: +3.30 V (min = +2.97 V, max = +3.63 V) in3: +0.00 V (min = +4.50 V, max = +5.50 V) ALARM in4: +0.00 V (min = +0.00 V, max = +15.94 V) ALARM fan1: 15000 RPM (min = 0 RPM) fan2: 15000 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) fan4: 15000 RPM (min = 0 RPM) temp1: +32.0 C (low = +5.0 C, high = +50.0 C) temp2: +34.5 C (low = +5.0 C, high = +50.0 C) temp3: +63.0 C (low = +5.0 C, high = +85.0 C) cpu0_vid: +0.000 V 18
  • 19. Павел Курочкин General R&D, 2017 Конфигурируем sensors ● Каталог для конфигов /etc/sensors.d/ ● Можно: ○ Назначить alias ○ Настроить min/max ○ Математические операции ○ Игнорировать поля ● ‘sensors -s’ применяет настройки 19
  • 20. Павел Курочкин General R&D, 2017 sensors c конфигурацией # sensors adt7463-i2c-0-2d Adapter: Synopsys DesignWare I2C adapter 3.3V: +3.30 V (min = +2.97 V, max = +3.63 V) PSB1FAN: 15000 RPM (min = 0 RPM) PSB0FAN: 15000 RPM (min = 0 RPM) CHTEMP: +32.0 C (low = +5.0 C, high = +50.0 C) INTTEMP: +34.5 C (low = +5.0 C, high = +50.0 C) SOMTEMP: +62.0 C (low = +5.0 C, high = +85.0 C) ads7830-i2c-0-48 Adapter: Synopsys DesignWare I2C adapter PSB0TEMP: -1.87 V PSB1TEMP: +39.69 V 3V3: +3.32 V 5V: +4.98 V PSB0VIN: +5.74 V PSB1VIN: +12.19 V SYS12V: +12.07 V 20
  • 21. Павел Курочкин General R&D, 2017 А кто будет управлять вентиляторами? # export DEVPATH=/sys/class/hwmon/hwmon1 # echo 1 > $DEVPATH/pwm1_auto_channels # echo 0 > $DEVPATH/pwm1_auto_pwm_min # echo 20000 > $DEVPATH/temp1_auto_temp_min # echo 19000 > $DEVPATH/temp1_auto_temp_off # echo 35000 > $DEVPATH/temp1_auto_temp_max pwm1 работает от первого канала измерения температуры При низкой температуре вентиляторы не крутятся Настраиваем границы температурного диапазона 21
  • 22. Павел Курочкин General R&D, 2017 Нюансы (грабли) ● При двухпроводном подключении вентиляторов PID-регулятор работать не будет ● Требуется ручная настройка (i2cget/i2cset) ● Точность измерения низкая 22
  • 23. Павел Курочкин General R&D, 2017 Итого ● Выбираем чип ● Находим его в Documentation/hwmon ● Прописываем в device-tree ● Находим на шине i2c ● Загружаем модуль ● Конфигурируем sensors ● Настраиваем через sysfs управление вентиляторами 23
  • 24. Павел Курочкин General R&D, 2017 Ссылки ● https://www.kernel.org/doc/Documentation/hwmon/ ● https://www.onsemi.com/pub/Collateral/ADT7463-D.PDF ● http://www.ti.com/lit/ds/symlink/ads7830.pdf 24