我试图添加ads1115传感器到我的Rpi4-b板与Openbmc 2.8.0。我的配置几乎完成了,但是phophor-hwmon没有开始读取这些值。我参考了以下问题,并认为我的conf文件可能没有正确安装。然而,我不知道为什么它没有按预期安装,有人请给我这方面的建议。
我提到过:如何将传感器添加到OpenBMC?#3063 https://github.com/openbmc/openbmc/issues/3063
这是我查过的。
向dts添加ads1115
ads1115@48 {
compatible = "ti,ads1115";
reg = <0x48>;
status = "okay";
};
ADS1115驱动程序为dts中的设备加载,传感器开始工作。
snipped lsmod output
root@raspberrypi4:/# lsmod
Module Size Used by
ads1015 16384 0
raspberrypi_hwmon 16384 0
hwmon 16384 2 ads1015,raspberrypi_hwmon
i2c_dev 20480 0
root@raspberrypi4:/#
添加的设备存在于fsys上
root@raspberrypi4:/# ls -la /sys/firmware/devicetree/base/soc/i2c\@7e804000/ads1115\@48/*
-r--r--r-- 1 root root 11 Jan 1 00:02 /sys/firmware/devicetree/base/soc/i2c@7e804000/ads1115@48/compatible
-r--r--r-- 1 root root 8 Jan 1 00:02 /sys/firmware/devicetree/base/soc/i2c@7e804000/ads1115@48/name
-r--r--r-- 1 root root 4 Jan 1 00:02 /sys/firmware/devicetree/base/soc/i2c@7e804000/ads1115@48/reg
-r--r--r-- 1 root root 5 Jan 1 00:02 /sys/firmware/devicetree/base/soc/i2c@7e804000/ads1115@48/status
root@raspberrypi4:/#
of_node正确地指出了添加的设备
root@raspberrypi4:/# cat /sys/class/hwmon/hwmon1/of_node/compatible
ti,ads1115
root@raspberrypi4:/# cat /sys/class/hwmon/hwmon1/of_node/name
ads1115
root@raspberrypi4:/# hexdump /sys/class/hwmon/hwmon1/of_node/reg
0000000 0000 4800
0000004
udevadm输出看起来没有问题,
root@raspberrypi4:/# udevadm test /sys/class/hwmon/hwmon1
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Load module index
Parsed configuration file /lib/systemd/network/99-default.link
Created link configuration context.
Reading rules file: /lib/udev/rules.d/50-udev-default.rules
Reading rules file: /lib/udev/rules.d/60-autosuspend-chromiumos.rules
Reading rules file: /lib/udev/rules.d/60-block.rules
Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib/udev/rules.d/60-drm.rules
Reading rules file: /lib/udev/rules.d/60-evdev.rules
Reading rules file: /lib/udev/rules.d/60-fido-id.rules
Reading rules file: /lib/udev/rules.d/60-input-id.rules
Reading rules file: /lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /lib/udev/rules.d/60-sensor.rules
Reading rules file: /lib/udev/rules.d/60-serial.rules
Reading rules file: /lib/udev/rules.d/61-autosuspend-manual.rules
Reading rules file: /lib/udev/rules.d/64-btrfs.rules
Reading rules file: /lib/udev/rules.d/70-hwmon.rules
Reading rules file: /lib/udev/rules.d/70-iio.rules
Reading rules file: /lib/udev/rules.d/70-joystick.rules
Reading rules file: /lib/udev/rules.d/70-leds.rules
Reading rules file: /lib/udev/rules.d/70-mouse.rules
Reading rules file: /lib/udev/rules.d/70-touchpad.rules
Reading rules file: /lib/udev/rules.d/75-net-description.rules
Reading rules file: /lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /lib/udev/rules.d/78-sound-card.rules
Reading rules file: /lib/udev/rules.d/80-drivers.rules
Reading rules file: /lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /lib/udev/rules.d/80-obmc-console-uart.rules
Reading rules file: /etc/udev/rules.d/99-com.rules
/etc/udev/rules.d/99-com.rules:10 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart0 $ALIASES/serial0; then echo 0;elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then echo 1; else exit 1; fi'" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.
/etc/udev/rules.d/99-com.rules:21 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart1 $ALIASES/serial0; then echo 0; elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then echo 1; else exit 1; fi '" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.
Reading rules file: /lib/udev/rules.d/99-systemd.rules
Reading rules file: /etc/udev/rules.d/can.rules
Reading rules file: /etc/udev/rules.d/touchscreen.rules
DEVPATH=/devices/platform/soc/fe804000.i2c/i2c-1/1-0048/hwmon/hwmon1
OF_NAME=ads1115
OF_FULLNAME=/soc/i2c@7e804000/ads1115@48
OF_COMPATIBLE_0=ti,ads1115
OF_COMPATIBLE_N=1
ACTION=add
SUBSYSTEM=hwmon
USEC_INITIALIZED=761973935
run: '/usr/bin/start_hwmon.sh start /devices/platform/soc/fe804000.i2c/i2c-1/1-0048/hwmon/hwmon1 /soc/i2c@7e804000/ads1115@48'
Unload module index
Unloaded link configuration context.
root@raspberrypi4:/#
ads1115驱动程序创建其值为的文件。
从in0到in7都有8个通道。
root@raspberrypi4:/sys/class/hwmon/hwmon1/device# ls
driver in0_input in2_input in4_input in6_input modalias of_node subsystem
hwmon in1_input in3_input in5_input in7_input name power uevent
root@raspberrypi4:/sys/class/hwmon/hwmon1/device#
没有将conf文件安装到右目录
root@raspberrypi4:/etc/default/obmc# ls -la
drwxr-xr-x 3 root root 1024 Sep 20 2021 .
drwxr-xr-x 4 root root 1024 Sep 20 2021 ..
-rw-r--r-- 1 root root 165 Sep 17 2021 mapper
drwxr-xr-x 2 root root 1024 Sep 20 2021 watchdog
root@raspberrypi4:/etc/default/obmc#
日志显示了“跳过”的日志。
root@raspberrypi4:/# journalctl | grep -i hwmon
Jan 01 00:00:05 raspberrypi4 systemd[1]: Created slice system-xyz.openbmc_project.Hwmon.slice.
Jan 01 00:00:05 raspberrypi4 systemd[1]: Condition check resulted in Phosphor Hwmon Poller being skipped.
Jan 01 00:00:05 raspberrypi4 systemd[1]: Condition check resulted in Phosphor Hwmon Poller being skipped.
root@raspberrypi4:/#
.Conf文件和BBappendfile
yocto@yocto-VM:~/Rpi4-2.8.0/openbmc/meta-evb/meta-evb-raspberrypi/recipes-phosphor$ tree
.
└── sensors
├── phosphor-hwmon
│ └── obmc
│ └── hwmon
│ └── soc
│ └── i2c@7e804000
│ └── ads1115@48.conf
└── phosphor-hwmon_%.bbappend
yocto@yocto-VM:~/Rpi4-2.8.0/openbmc/meta-evb/meta-evb-raspberrypi/recipes-phosphor$ cat sensors/phosphor-hwmon_%.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
CHIPS = "i2c@7e804000/ads1115@48"
ITEMSFMT = "soc/{0}.conf"
ITEMS = "${@compose_list(d, 'ITEMSFMT', 'CHIPS')}"
ENVS = "obmc/hwmon/{0}"
SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'ENVS', 'ITEMS')}"
yocto@yocto-VM:~/Rpi4-2.8.0/openbmc/meta-evb/meta-evb-raspberrypi/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/soc/i2c@7e804000$ cat ads1115@48.conf
LABEL_in4=cpu
WARNLO_in4=10
WARNHI_in4=270
CRITHI_in4=350
CRITLO_in4=0
根据我检查的内容,我认为设备被正确地定义为dts,并且驱动程序也相应地被加载。但是,没有按预期安装conf文件。我试着改变了几个参数,但没有起作用。现在,我不知道为什么没有安装conf文件。所以,我很感激有人对我的案子提出的建议。
发布于 2022-03-08 06:09:52
检查SYSTEMD_ENVIRONMENT_FILE_${PN}
的最终值可能会给您一些线索。..。实际上它只是给了我线索。这需要是:${PN}
而不是_${PN}
。约克托在大约6个月前改变了重写的语法,并且_语法没有解释它用于be.Change的方式-hwmon_%..bbappend文件中的SYSTEMD_ENVIRONMENT_FILE_${PN}
到SYSTEMD_ENVIRONMENT_FILE:${PN}
的值。看起来不错。
https://stackoverflow.com/questions/69277768
复制相似问题