Benutzer-Level-Anwendung kann nicht mit Hardware interagieren. Sie können über Systemaufruf (ioctl, öffnen, lesen und schreiben usw.) und Sysfs (sysfs ist ein virtuelles Dateisystem) kommunizieren.
1: - Ihr Gerät ist hwmom Gerät. Ihr Treiber ist "tmp102". Driver Expose diese drei temp1_input, temp1_max_hyst und temp1_max sysfs Eintrag für Benutzer-Anwendung.
SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, tmp102_show_temp, NULL , 0);
SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, tmp102_show_temp, tmp102_set_temp, 1);
SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, tmp102_show_temp,
tmp102_set_temp, 2);
Sie können lesen/sys/class/hwmom/TMP102/temp1_input sysfs-Datei. Sie können diese beiden sysfs-Datei/sys/class/hwmom/tmp102/temp1_max_hyst und sys/class/hwmom/tmp102/temp1_max lesen und schreiben.
2: - Die Dateien in/dev sind tatsächliche Gerätedateien, die UDEV zur Laufzeit erstellt.Eine Gerätedatei ist eine Schnittstelle für einen Gerätetreiber, der in einem Dateisystem wie eine normale Datei angezeigt wird. Ihr Treiber hat eine andere Gerätedatei verfügbar gemacht. thermal_zone_of_sensor_register (hwmon_dev, 0, hwmon_dev, & tmp102_of_thermal_ops). Sie haben den Knoten/dev/hwmom_dev.
Die Anwendung auf Benutzerebene kann nicht direkt mit dem i2c-Gerät oder der Hardware kommunizieren. Der Linux-Kernel hat Einschränkungen. Anwendung benötigt Treiber als Schnittstelle, um irgendeines der Geräte zu steuern.
bedeutet Lesen von Daten aus/sys/class/hwmon/hwmonX/tempX_input ist der ideale Weg im Vergleich zum Lesen über i2c Bus – Patrick
Ich habe die Gerätetreiber -> Hardware Monitoring-Unterstützung -> tmp102 in meinem Kernel, aber ich konnte nicht sehen jede Datei, die unter/sys/class/hwmon erstellt wurde. Aber es gibt eine Datei, die hier erstellt wurde/sys/bus/i2c/drivers/tmp102 – Patrick
Vielleicht hast du nicht alles aktiviert, was du brauchst. Vergessen Sie nicht über udev, das einen Mechanismus zum Laden des Treibers basierend auf Ereignissen bietet, obwohl ich denke, dass es nicht immer der Fall ist (einige alte, dh Nicht-ACPI, Nicht-DT Plattformen können es entweder aus dem eingebauten Code laden, oder manuell). – 0andriy