【转】 linux iio子系统
原文網址:http://blog.csdn.net/tsy20100200/article/details/47101661
最近由于工作的需要,接觸了Linux iio子系統,對于這個目錄其實以前是很少接觸,接下了對 Linux iio 子系統進行分析。
?
1、首先 iio子系統在內核樹中位置:drivers/staging/iio
詳細的iio子系統說明文檔位置:drivers/staging/iio/Documentation(文檔是個好東西,詳細閱讀文檔,有利于更深層次的理解iio子系統)
?
2、簡介:
iiO子系統全稱是 Industrial I/O subsystem(工業 I/O 子系統),此子系統的目的在于填補那些分類時處在hwmon(硬件監視器)和輸入子系統之間的設備類型。在某些情況下,iio和hwmon、Input之間的相當大的重疊。
?
3、iio目錄結構架構:
[plain]?view plaincopy?
?
4、iio 目錄結構說明:
進入相應目錄,里面都有相關IC的驅動,網上查閱資料,對iio子系統做如下簡要的說明:
accel :
該文件夾下是一些加速度傳感器,例如:adis16201、kxsd9、lis3l02dq、sca3000等
adc :
該文件夾下是一些模數轉換器,將模擬信號轉換成數字信號,例如:ad7192、adt7310(數字溫度傳感器)等
addac :
Temperature Sensor 溫度傳感器,例如:adt7316
cdc :
電容數字轉換,例如:ad7150
dac :
一些數模轉換器,將數字信號轉換成模擬信號,例如:ad5064、ad5791(單通道、20位、無緩沖電壓輸出DAC)等
dds :
頻率掃描儀,頻率合成器,例如:ad5930、ad9951等
Documentation :
iio子系統相關文檔說明,相關說明比較詳細,說明文檔是個好東西……
gyro:
陀螺儀,例如:adis16060(角速度陀螺儀)、adis16260(數字陀螺儀)、adxrs450(角速率陀螺儀)等
impedance-analyzer :
阻抗測量芯片,只有一個芯片ad5933
imu:
慣性陀螺儀、磁力計、加速度計,例如:adis16400,其中的mpu子目錄有些重要的傳感器(目前工作中正在使用)
imu
??? └── mpu:有MPU3050(三軸)、MPU6050(六軸)、MPU9150(整合了MPU6050及AK8975電子羅盤)、MPU6515等
light :
光學傳感器,例如:isl29018、tsl2563等
magnetometer :
地磁傳感器、磁力計傳感器,例如:hmc5843、ak8975
meter :?
有功功率和電能計量,例如:ade7759(電能計量數據轉換器)、ade7753等
pressure :
壓力傳感器,例如:bmp182
resolver :
旋轉變壓器/數字轉換器,例如:ad2s1200(旋轉變壓器輸出的模擬信號轉化為數字信號)等
trigger:
觸發器
?
5、iio子系統架構圖:
?
6、iio子系統功能:
(1)、設備注冊和處理
(2)、通過虛擬文件系統(VFS)輪訓訪問設備
(3)、chrdevs事件
chrdevs事件包括閾值檢測器,自由下落檢測器和更復雜的動作檢測。chrdevs事件的輸入,iio為底層硬件觸發與用戶空間通行提供了通道,chrdevs事件本身已經不僅僅是一個事件的代碼和一個時間戳,與chrdevs事件相關聯的任何數據必須通過輪詢訪問。
(4)、硬件環緩沖支持
現在很多傳感器芯片上本身就包括?fifo / ring 緩沖,通過sensor自帶?fifo / ring 緩沖,可以大大的減少主芯片處理器的負擔。
(6)、觸發和軟件緩沖區(kfifo)支持
在許多數據分析中,觸發和軟件緩沖區(kfifo)支持就顯得非常有用,能夠更加高效的捕捉到外部信號數據。這些觸發包括(數據準備信號、GPIO線連接到外部系統、處理器周期中斷、用戶空間訪問sysfs中的特定文件等),都會產生觸發。
?
7、iio子系統的內核接口
為各種sensor提供了內核接口
?
8、iio子系統環形緩沖區(如下圖)
iio子系統采用環形緩沖區,環形緩沖區本質是一個數據結構(單一,固定大小,可調并首尾相連),這種結構非常適合緩沖數據流。這些緩沖區通常用來解決生產者消費者問題,在一些應用中,它被設計成生產者會(例如一個ADC)覆蓋消費者(例如一個用戶空間應用程序)無法暫時處理的過期數據。但是通常這種緩沖會被設置為適當的大小,以使這種情況不會發生。
?
更多詳細的說明可以參照:WIKI 中的說明
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【转】 linux iio子系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LAMP编译安装,并搭建discuz
- 下一篇: 一些或许用的到的小Demo