2016-04-22 317 views
0

我正在使用MPU-9250 Invensense传感器,并从Android内核获取其驱动程序并与Linux内核集成。驱动程序工作正常,对内核和节点/ dev/iio:\ device0进行了一些修改,并且还生成了sys文件系统下的文件。所以我认为司机工作正常。从用户空间读取IIO设备数据

现在我想用应用程序使用/ 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 

这应该填充从传感器读取数据后。但没有任何显示。所以在此之后,我尝试读取来自dev文件系统的数据

# cat /dev/iio:\device0 

即使没有显示。

请有人告诉我如何读取数据。

Regards

+0

Hi @Vamsee,你解决了吗? – Tom

+0

是@Tom。我已经解决了这个 – Vamsee

+0

所以,你是如何解决它的? –

回答

-1

我相信你的问题涉及到你没有启用任何扫描元件的事实。

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

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

_type指的是扫描的类型,index是将在设备读取中分配给扫描的通道,以及_en指定哪个状态为“启用”。只需在要启用的扫描_en文件中写入“1”,写入/ buffer/length 100和/ buffer/enable“1”即可开始获取数据。

我不认为这是你的问题,因为你可能根本不能启用缓冲区,但你可能需要启用一个触发器,它也应该位于/ sys/bus/iio/devices。你应该在这里触发1/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 

希望这就是帮助。

+0

写入缓冲区/长度不起作用。这'echo 1>启用'产生'-sh:echo:写入错误:无效参数'。 –

+0

@BЈовић,检查是否设置了触发器名称:'cat path/trigger/current_trigger'。 – ViniCoder