2016-04-22 315 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