私はLSM330加速度計/ジャイロスコープモジュールをi.MX6ボードに接続しようとしています。/dev/iio:deviceXのLSM330からデータを読み取るには?
&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_2>;
status = "okay";
/* LSM330 motion detector (accelerometer) */
lsm330_accel: [email protected] {
compatible = "st,lsm330-accel";
st,drdy-int-pin = <1>;
reg = <0x1e>;
};
/* LSM330 motion detector (gyroscope) */
lsm330_gyro: [email protected] {
compatible = "st,lsm330-gyro";
st,drdy-int-pin = <2>;
reg = <0x6a>;
};
};
モジュールは、加速度計のための/dev/iio:device0
とジャイロスコープのための/dev/iio:device1
として表示:モジュールがI2Cバスに接続され、デバイスツリーのファイルの関連部分は以下の通りです。また、/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システムに公開して、ユーザーが画面を回転できるようにすることです。モジュールからセンサーの読み取り値を取得するにはどうすればよいですか?