代码之家  ›  专栏  ›  技术社区  ›  Siu Lung Leung

如何从/dev/iio:deviceX中的LSM330读取数据?

  •  2
  • Siu Lung Leung  · 技术社区  · 9 年前

    &i2c1 {
        clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c1_2>;
        status = "okay";
    
        /* LSM330 motion detector (accelerometer) */
        lsm330_accel: lsm330_accel@0x1e {
            compatible = "st,lsm330-accel";
            st,drdy-int-pin = <1>;
            reg = <0x1e>;
        };
    
        /* LSM330 motion detector (gyroscope) */
        lsm330_gyro: lsm330_gyro@0x6a {
            compatible = "st,lsm330-gyro";
            st,drdy-int-pin = <2>;
            reg = <0x6a>;
        };
    };
    

    该模块显示为 /dev/iio:device0 /dev/iio:device1 对于陀螺仪。他们还表现为 /sys/bus/iio/devices/iio:device0 /sys/bus/iio/devices/iio:device1 .我可以通过 cat in_accel_x_raw 然而,运行 cat /dev/iio:device0

    在网上搜索之后,我还尝试了以下命令:

    cd /sys/bus/iio/devices/iio_sysfs_trigger
    echo 0 > add_trigger
    cd /sys/bus/iio/devices/iio:device0
    echo 1 > scan_elements/in_accel_x_en
    echo 1 > scan_elements/in_accel_y_en
    echo 1 > scan_elements/in_accel_z_en
    echo 1 > scan_elements/in_timestamp_en
    echo sysfstrig0 > trigger/current_trigger
    echo 100 > buffer/length
    echo 1 > buffer/enable
    echo 1 > /sys/bus/iio/devices/trigger0/trigger_now
    

    cat/dev/iio:device0 Device or resource busy cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw

    我对linux内核非常陌生,我的目标是将传感器数据暴露给Android系统,以便用户可以旋转屏幕等。我如何让Android从模块中获取传感器读数?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Siu Lung Leung    9 年前

    在查看了android logcat之后,发现android HAL没有读取或写入sysfs中目录的权限。我最后放了一堆 chmod init中的命令。rc文件,以便Android可以访问传感器数据。

    # Change permissions for the LSM330 sysfs entries (accelerometer)
    chmod 0666 /sys/bus/iio/devices/iio\:device0/sampling_frequency
    chmod 0666 /sys/bus/iio/devices/iio\:device0/buffer/enable
    chmod 0666 /sys/bus/iio/devices/iio\:device0/buffer/length
    chmod 0666 /sys/bus/iio/devices/iio\:device0/trigger/current_trigger
    chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_x_en
    chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_y_en
    chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_accel_z_en
    chmod 0666 /sys/bus/iio/devices/iio\:device0/scan_elements/in_timestamp_en
    chmod 0666 /dev/iio\:device0
    

    希望这对别人有帮助。

    推荐文章