gpt4 book ai didi

linux - 从用户空间读取 IIO 设备数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:57 25 4
gpt4 key购买 nike

我正在使用 MPU-9250 Invensense 传感器,它的驱动程序来自 android 内核并与 linux 内核集成。驱动程序对内核和节点进行了一些修改,/dev/iio:\device0,并且还生成了 sys 文件系统下的文件。所以我假设驱动程序工作正常。

现在我想通过使用/dev/iio:\device0 节点的应用程序从用户空间读取传感器数据。为此,我需要在 MPU-9250 驱动程序中打开读取关闭功能。但是驱动程序中没有文件操作可用。

我试图从 sys 文件系统中读取数据,即

# echo 1 > /sys/bus/iio/devices/iio:device0/power_state
# echo 1 > /sys/bus/iio/devices/iio:device0/accel_enable
# echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length
# echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

在此之后,它应该填充从传感器读取的数据。但是什么也没有显示。所以在此之后我尝试从开发文件系统读取数据

# cat /dev/iio:\device0

即便如此,也没有显示任何内容。

谁能告诉我如何读取数据。

问候

最佳答案

我认为您的问题与您没有启用任何扫描元素这一事实有关。

扫描元素位于:/sys/bus/iio/devices/iio:device[x]/scan_elements.

在这里你应该启用你想要捕获的扫描元素。你应该有 3 个文件,后缀为:_en、_index 和 _type。

_type 是指扫描的类型,index 是设备读取中将分配给扫描的 channel ,_en 状态为“启用”。只需将“1”写入您希望启用的扫描 _en 文件,写入/buffer/length 100 和/buffer/enable“1”,您就应该开始获取数据了。

我不认为这是你的问题,因为你可能根本无法启用缓冲区,但你可能需要启用一个触发器,它也应该位于/sys/bus/iio/devices 中。你应该在这里有 trigger1/2/3 目录,这取决于你拥有的 IIO 设备的数量。您可能需要将触发器名称写到/sys/bus/iio/devices/iio:device[x]/trigger/current_trigger。

所以你应该这样做:

echo /sys/bus/iio/devices/trigger[x]/name > 
/sys/bus/iio/devices/iio:device[x]/trigger/current_trigger

希望对您有帮助。

关于linux - 从用户空间读取 IIO 设备数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com