Вопрос или проблема
Существуют ли инструменты консоли Linux для доступа к датчикам температуры DDR4 DRAM на модуле?
DDR4 DRAM имеют новый драйвер для доступа к SPD EEPROM. Термодатчики интегрированы в SPD (в отличие от предыдущих поколений SDRAM). Если у вас установлен правильный драйвер (EEPROM_EE1004), decode-dimms
может читать информацию SPD из файла, предоставленного драйвером в “файл” sysfs. Если в SPD присутствует соответствующий термодатчик, он сообщает:
Термодатчик Совместим с TSE2004
К сожалению, я не нашел (простого) способа для считывания температуры, и не нашел никаких попыток в упомянутом драйвере (он просто считывает страницы из SPD, хотя информация может быть там, но не декодирована decode-dimms).
Один ручной подход для поддержки командной строки и команды sensors в Linux является более универсальным, благодаря более независимому (стандартам JEDEC и чипам, совместимым с 42.4) модулю ядра jc42 для соответствия спецификациям SMBus в строгом диапазоне задержки низких 25-35 мс:
modprobe i2c-dev
i2cdetect -l
выберите адаптер I2C™/SMBus™ для чипсета, например, smbus 1
i2cdetect -y 1
выберите базовый адрес для датчика температуры DRAM, например, 0x18 или 0x19 или 0x1a
modprobe jc42
echo jc42 0x18 > /sys/bus/i2c/devices/i2c-1/new_device
выберите номер интерфейса hwmon и напечатайте значение(я) температуры
(все доступные температуры от датчиков)
cat /sys/class/hwmon/hwmon*/device/hwmon/hwmon*/temp*_input
Затем дополнительно
sensors
должен выводить значения температуры памяти.
Для проверки plausibility значений температуры:
Диапазоны температур для датчиков кажутся варьирующимися от -40°C(-55°C) до 125°C, а спецификация JEDEC (JEDEC JC-42.4 Спецификация компонентов датчиков температуры модулей памяти) поддерживает подходящий выход от -40°C до 85°C. Некоторые производители памяти DRAM поддерживают предел верхнего диапазона датчика до 95°C. Точность составляет не менее ±3°C (диапазон от -40°C до 120°C, улучшенный для более узких диапазонов) и время отклика для 50% тепловой настройки составляет около 1.0-1.5с и до 4-5 секунд для 100% теплового ответа.
.
Ответ или решение
Варианты доступа к датчикам температуры памяти DDR4 DRAM
Доступ к датчикам температуры модулей DDR4 DRAM в Linux можно реализовать с использованием ряда командных инструментов и драйверов. Ниже приведены основные шаги, позволяющие эффективно получить информацию о температуре памяти.
1. Использование драйвера SPD EEPROM
DDR4 DRAM предоставляет новый драйвер для доступа к EEPROM SPD. Датчики температуры, интегрированные в SPD, доступны при наличии соответствующего драйвера (EEPROM_EE1004
). Важно, чтобы в системе был установлен драйвер, который может обрабатывать данные SPD.
Команда decode-dimms
может использоваться для чтения информации из SPD, которая предоставляется через файл в файловой системе sysfs. Если в SPD присутствует совместимый термодатчик, это будет подтверждено сообщением:
Термодатчик Соответствует TSE2004
Однако на данный момент нет простого способа получить данные о температуре, так как драйвер не декодирует эту информацию. Необходимо использовать альтернативные методы.
2. Подход вручную через lm_sensors
Одним из вариантов, позволяющим получить данные о температуры модулей DDR4, является использование инструмента lm_sensors
, который обеспечивает встроенную поддержку датчиков температуры.
Шаги по настройке:
-
Загрузка необходимых модулей:
modprobe i2c-dev i2cdetect -l
-
Определение I2C-адаптера для чипсета. Например, если адаптер имеет номер 1:
i2cdetect -y 1
-
Открытие базового адреса для датчиков температуры DRAM. Часто используются адреса, такие как 0x18, 0x19 или 0x1a:
modprobe jc42 echo jc42 0x18 > /sys/bus/i2c/devices/i2c-1/new_device
-
Получение температурных значений:
Для вывода всех доступных температур из датчиков можно использовать следующую команду:cat /sys/class/hwmon/hwmon*/device/hwmon/hwmon*/temp*_input
-
Использование команды
sensors
:
После выполнения предыдущих шагов командаsensors
покажет значения температуры памяти:sensors
3. Проверка достоверности температурных значений
Температурные диапазоны для датчиков температуры варьируются от -40°C до 125°C, согласно спецификации JEDEC (JC-42.4), где поддерживаемая температура составляет от -40°C до 85°C. Некоторые производители DRAM могут поддерживать верхний предел температуры до 95°C. Точность измерений составляет не менее ±3°C (в диапазоне от -40°C до 120°C), с временем отклика около 1-1.5 секунд для 50% изменения температуры и до 4-5 секунд для 100% изменения.
Заключение
Для доступа к датчикам температуры модулей памяти DDR4 в Linux можно использовать комбинацию драйверов и командных инструментов, таких как lm_sensors
и decode-dimms
. Убедитесь, что соответствующие модули загружены, и следите за документацией для получения актуальных значений.