日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析

發(fā)布時(shí)間:2023/12/9 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)于Exynos4412 IIC 裸機(jī)開發(fā)請(qǐng)看 :Exynos4412 裸機(jī)開發(fā) —— IIC總線?,下面回顧下 IIC 基礎(chǔ)概念

一、IIC 基礎(chǔ)概念

? ? ? ?IIC(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。IIC總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇。可隨時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。


1、 IIC總線的特點(diǎn)

? ? ? ?IIC總線最主要的優(yōu)點(diǎn)是其簡單性有效性。由于接口直接在組件之上,因此IIC總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。總線的長度可高達(dá)25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件。IIC總線的另一個(gè)優(yōu)點(diǎn)是,它支持多主控(multimastering), 其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。


2、IIC總線工作原理

a -- 總線構(gòu)成

? ? ? IIC總線是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號(hào)碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過程中,IIC總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。

CPU發(fā)出的控制信號(hào)分為地址碼控制量兩部分:

1) 地址碼用來選址,即接通需要控制的電路,確定控制的種類;

2) 控制量決定該調(diào)整的類別(如對(duì)比度、亮度等)及需要調(diào)整的量。

? ? 這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。

b --?信號(hào)類型

? ? IIC總線在傳送數(shù)據(jù)過程中共有四種類型信號(hào):

開始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)

結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)

數(shù)據(jù)傳輸信號(hào):在開始條件以后,時(shí)鐘信號(hào)SCL的高電平周期期問,當(dāng)數(shù)據(jù)線穩(wěn)定時(shí),數(shù)據(jù)線SDA的狀態(tài)表示數(shù)據(jù)有效,即數(shù)據(jù)可以被讀走,開始進(jìn)行讀操作。在時(shí)鐘信號(hào)SCL的低電平周期期間,數(shù)據(jù)線上數(shù)據(jù)才允許改變。每位數(shù)據(jù)需要一個(gè)時(shí)鐘脈沖。

應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。


? ? ? 目前有很多半導(dǎo)體集成電路上都集成了IIC接口。帶有IIC接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供IIC接口。

3、總線基本操作

? ? ?IIC規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來表示起始和停止條件

a -- 控制字節(jié)

? ? ? 在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),接著三位為片選,最后一位為讀寫位,當(dāng)為1時(shí)為讀操作,為0時(shí)為寫操作

b -- 寫操作

? ? ? 寫操作分為字節(jié)寫和頁面寫兩種操作,對(duì)于頁面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同。關(guān)于頁面寫的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序。

c -- 讀操作

? ? ? 讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。圖4給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件

d -- 總線仲裁

? ? ? ?主機(jī)只能在總線空閑的時(shí)候啟動(dòng)傳輸。兩個(gè)或多個(gè)主機(jī)可能在起始條件的最小持續(xù)內(nèi)產(chǎn)生一個(gè)起始條件,結(jié)果在總線上產(chǎn)生一個(gè)規(guī)定的起始條件。

? ? ? ?當(dāng)SCL線是高電平時(shí),仲裁在SDA線發(fā)生這樣,在其他主機(jī)發(fā)送低電平時(shí),發(fā)送高電平的主機(jī)將斷開它的數(shù)據(jù)輸出級(jí),因?yàn)榭偩€上的電平和它自己的電平不同

? ? ? 仲裁可以持續(xù)多位。從地址位開始,同一個(gè)器件的話接著就是數(shù)據(jù)位(如果主機(jī)-發(fā)送器),或者比較相應(yīng)位(如果主機(jī)-接收器)。IIC總線的地址和數(shù)據(jù)信息由贏得仲裁的主機(jī)決定,在這個(gè)過程中不會(huì)丟失信息。

仲裁不能在下面情況之間進(jìn)行:

1)重復(fù)起始條件和數(shù)據(jù)位;
2)停止條件和數(shù)據(jù)位;
3)重復(fù)起始條件和停止條件。


4、特性總結(jié)

? ? ? IIC肯定是2線的(不算地線)IIC協(xié)議確實(shí)很科學(xué),比3/4線的SPI要好,當(dāng)然線多通訊速率相對(duì)就快了

IIC的原則是

a -- 在SCL=1(高電平)時(shí),SDA千萬別忽悠!!!否則,SDA下跳則"判罰"為"起始信號(hào)S",SDA上跳則"判罰"為"停止信號(hào)P".

b -- 在SCL=0(低電平)時(shí),SDA隨便忽悠!!!(可別忽悠過火到SCL跳高)

c -- 每個(gè)字節(jié)后應(yīng)該由對(duì)方回送一個(gè)應(yīng)答信號(hào)ACK做為對(duì)方在線的標(biāo)志.非應(yīng)答信號(hào)一般在所有字節(jié)的最后一個(gè)字節(jié)后.一般要由雙方協(xié)議簽定.

d --?SCL必須由主機(jī)發(fā)送,否則天下大亂

e -- 首字節(jié)是"片選信號(hào)",即7位從機(jī)地址加1位方向(讀寫)控制.從機(jī)收到(聽到)自己的地址才能發(fā)送應(yīng)答信號(hào)(必須應(yīng)答!!!)表示自己在線.其他地址的從機(jī)不允許忽悠!!!(當(dāng)然群呼可以忽悠但只能聽不許說話)

f -- 讀寫是站在主機(jī)的立場(chǎng)上定義的."讀"是主機(jī)接收從機(jī)數(shù)據(jù),"寫"是主機(jī)發(fā)送數(shù)據(jù)給從機(jī).

g-- 重復(fù)位主要用于主機(jī)從發(fā)送模式到接收模式的轉(zhuǎn)換"信號(hào)",由于只有2線,所以收發(fā)轉(zhuǎn)換肯定要比SPI復(fù)雜,因?yàn)镾PI可用不同的邊沿來收發(fā)數(shù)據(jù),而IIC不行.

h -- 在硬件IIC模塊,特別是MCU/ARM/DSP等每個(gè)階段都會(huì)得到一個(gè)準(zhǔn)確的狀態(tài)碼,根據(jù)這個(gè)狀態(tài)碼可以很容易知道現(xiàn)在在什么狀態(tài)和什么出錯(cuò)信息.

i -- 7位IIC總線可以掛接127個(gè)不同地址的IIC設(shè)備,0號(hào)"設(shè)備"作為群呼地址.10位IIC總線可以掛接更多的10位IIC設(shè)備.


二、 Linux下IIC驅(qū)動(dòng)架構(gòu)

? ? ? ? ?Linux定義了系統(tǒng)的IIC驅(qū)動(dòng)體系結(jié)構(gòu),在Linux系統(tǒng)中,IIC驅(qū)動(dòng)由3部分組成,即IIC核心IIC總線驅(qū)動(dòng)IIC設(shè)備驅(qū)動(dòng)。這3部分相互協(xié)作,形成了非常通用、可適應(yīng)性很強(qiáng)的IIC框架。




? ? ? ?上圖完整的描述了linux i2c驅(qū)動(dòng)架構(gòu),雖然I2C硬件體系結(jié)構(gòu)比較簡單,但是i2c體系結(jié)構(gòu)在linux中的實(shí)現(xiàn)卻相當(dāng)復(fù)雜。

? ? ? ?那么我們?nèi)绾尉帉懱囟╥2c接口器件的驅(qū)動(dòng)程序?就是說上述架構(gòu)中的那些部分需要我們完成,而哪些是linux內(nèi)核已經(jīng)完善的或者是芯片提供商已經(jīng)提供的


1、架構(gòu)層次分類

 ??第一層:提供i2c adapter的硬件驅(qū)動(dòng),探測(cè)、初始化i2c adapter(如申請(qǐng)i2c的io地址和中斷號(hào)),驅(qū)動(dòng)soc控制的i2c adapter在硬件上產(chǎn)生信號(hào)(start、stop、ack)以及處理i2c中斷。覆蓋圖中的硬件實(shí)現(xiàn)層

? ?第二層:提供i2c adapter的algorithm,用具體適配器的xxx_xferf()函數(shù)來填充i2c_algorithm的master_xfer函數(shù)指針,并把賦值后的i2c_algorithm再賦值給i2c_adapter的algo指針。覆蓋圖中的訪問抽象層、i2c核心層

 ??第三層:實(shí)現(xiàn)i2c設(shè)備驅(qū)動(dòng)中的i2c_driver接口,用具體的i2c device設(shè)備的attach_adapter()、detach_adapter()方法賦值給i2c_driver的成員函數(shù)指針。實(shí)現(xiàn)設(shè)備device與總線(或者叫adapter)的掛接覆蓋圖中的driver驅(qū)動(dòng)層

 ?第四層:實(shí)現(xiàn)i2c設(shè)備所對(duì)應(yīng)的具體device的驅(qū)動(dòng),i2c_driver只是實(shí)現(xiàn)設(shè)備與總線的掛接,而掛接在總線上的設(shè)備則是千差萬別的,所以要實(shí)現(xiàn)具體設(shè)備device的write()、read()、ioctl()等方法,賦值給file_operations,然后注冊(cè)字符設(shè)備(多數(shù)是字符設(shè)備)。覆蓋圖中的driver驅(qū)動(dòng)層


??? ?第一層和第二層又叫i2c總線驅(qū)動(dòng)(bus),第三第四屬于i2c設(shè)備驅(qū)動(dòng)(device driver)

? ? ?在linux驅(qū)動(dòng)架構(gòu)中,幾乎不需要驅(qū)動(dòng)開發(fā)人員再添加bus,因?yàn)閘inux內(nèi)核幾乎集成所有總線bus,如usb、pci、i2c等等。并且總線bus中的(與特定硬件相關(guān)的代碼)已由芯片提供商編寫完成,例如三星的s3c-2440平臺(tái)i2c總線bus為/drivers/i2c/buses/i2c-s3c2410.c

? ? ??第三第四層與特定device相干的就需要驅(qū)動(dòng)工程師來實(shí)現(xiàn)了


2、Linux下I2C驅(qū)動(dòng)體系結(jié)構(gòu)三部分詳細(xì)分析

a --?IIC核心

? ? ? ?IIC 核心提供了IIC總線驅(qū)動(dòng)和設(shè)備驅(qū)動(dòng)的注冊(cè)、注銷方法,IIC通信方法(即“algorithm”,筆者認(rèn)為直譯為“運(yùn)算方法”并不合適,為免引起誤解, 下文將直接使用“algorithm”)上層的、與具體適配器無關(guān)的代碼以及探測(cè)設(shè)備、檢測(cè)設(shè)備地址的上層代碼等。

? ? ?在我們的Linux驅(qū)動(dòng)的i2c文件夾下有algos,busses,chips三個(gè)文件夾,另外還有i2c-core.ci2c-dev.c兩個(gè)文件。

? ? ?i2c-core.c文件實(shí)現(xiàn)了I2Ccore框架,是Linux內(nèi)核用來維護(hù)和管理的I2C的核心部分,其中維護(hù)了兩個(gè)靜態(tài)的List,分別記錄系統(tǒng)中的I2Cdriver結(jié)構(gòu)和I2Cadapter結(jié)構(gòu)。I2Ccore提供接口函數(shù),允許一個(gè)I2Cadatper,I2Cdriver和I2Cclient初始化時(shí)在I2Ccore中進(jìn)行注冊(cè),以及退出時(shí)進(jìn)行注銷。同時(shí)還提供了I2C總線讀寫訪問的一般接口,主要應(yīng)用在I2C設(shè)備驅(qū)動(dòng)中。


b -- IIC總線驅(qū)動(dòng)

? ? ? ?IIC總線驅(qū)動(dòng)是對(duì)IIC硬件體系結(jié)構(gòu)中適配器端的實(shí)現(xiàn),適配器可由CPU控制,甚至直接集成在CPU內(nèi)部。總線驅(qū)動(dòng)的職責(zé),是為系統(tǒng)中每個(gè)I2C總線增加相應(yīng)的讀寫方法。但是總線驅(qū)動(dòng)本身并不會(huì)進(jìn)行任何的通訊,它只是存在那里,等待設(shè)備驅(qū)動(dòng)調(diào)用其函數(shù)。

? ???IIC總線驅(qū)動(dòng)主要包含了IIC適配器數(shù)據(jù)結(jié)構(gòu)i2c_adapterIIC適配器的algorithm數(shù)據(jù)結(jié)構(gòu)i2c_algorithm控制IIC適配器產(chǎn)生通信信號(hào)的函數(shù)。經(jīng)由IIC總線驅(qū)動(dòng)的代碼,我們可以控制IIC適配器以主控方式產(chǎn)生開始位、停止位、讀寫周期,以及以從設(shè)備方式被讀寫、產(chǎn)生ACK等。

 Busses文件夾下的i2c-mpc.c文件實(shí)現(xiàn)了PowerPC下I2C總線適配器驅(qū)動(dòng),定義描述了具體的I2C總線適配器的i2c_adapter數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)比較底層的對(duì)I2C總線訪問的具體方法。I2Cadapter 構(gòu)造一個(gè)對(duì)I2Ccore層接口的數(shù)據(jù)結(jié)構(gòu),并通過接口函數(shù)向I2Ccore注冊(cè)一個(gè)控制器。I2Cadapter主要實(shí)現(xiàn)對(duì)I2C總線訪問的算法,iic_xfer() 函數(shù)就是I2Cadapter底層對(duì)I2C總線讀寫方法的實(shí)現(xiàn)。同時(shí)I2Cadpter 中還實(shí)現(xiàn)了對(duì)I2C控制器中斷的處理函數(shù)。


c -- IIC設(shè)備驅(qū)動(dòng)

? ? ? IIC設(shè)備驅(qū)動(dòng)是對(duì)IIC硬件體系結(jié)構(gòu)中設(shè)備端的實(shí)現(xiàn),設(shè)備一般掛接在受CPU控制的IIC適配器上,通過IIC適配器與CPU交換數(shù)據(jù)。設(shè)備驅(qū)動(dòng)則是與掛在I2C總線上的具體的設(shè)備通訊的驅(qū)動(dòng)。通過I2C總線驅(qū)動(dòng)提供的函數(shù),設(shè)備驅(qū)動(dòng)可以忽略不同總線控制器的差異,不考慮其實(shí)現(xiàn)細(xì)節(jié)地與硬件設(shè)備通訊。

? ? ? IIC設(shè)備驅(qū)動(dòng)主要包含了數(shù)據(jù)結(jié)構(gòu)i2c_driver和i2c_client,我們需要根據(jù)具體設(shè)備實(shí)現(xiàn)其中的成員函數(shù)。

? ? ?i2c-dev.c文件中實(shí)現(xiàn)了I2Cdriver,提供了一個(gè)通用的I2C設(shè)備的驅(qū)動(dòng)程序,實(shí)現(xiàn)了字符類型設(shè)備的訪問接口,實(shí)現(xiàn)了對(duì)用戶應(yīng)用層的接口,提供用戶程序訪問I2C設(shè)備的接口,包括實(shí)現(xiàn)open,release,read,write以及最重要的ioctl等標(biāo)準(zhǔn)文件操作的接口函數(shù)。我們可以通過open函數(shù)打開 I2C的設(shè)備文件,通過ioctl函數(shù)設(shè)定要訪問從設(shè)備的地址,然后就可以通過 read和write函數(shù)完成對(duì)I2C設(shè)備的讀寫操作。

? ??通過I2Cdriver提供的通用方法可以訪問任何一個(gè)I2C的設(shè)備,但是其中實(shí)現(xiàn)的read,write及ioctl等功能完全是基于一般設(shè)備的實(shí)現(xiàn),所有的操作數(shù)據(jù)都是基于字節(jié)流,沒有明確的格式和意義。為了更方便和有效地使用I2C設(shè)備,我們可以為一個(gè)具體的I2C設(shè)備開發(fā)特定的I2C設(shè)備驅(qū)動(dòng)程序,在驅(qū)動(dòng)中完成對(duì)特定的數(shù)據(jù)格式的解釋以及實(shí)現(xiàn)一些專用的功能。


3、重要的結(jié)構(gòu)體

? ? ? 因?yàn)镮IC設(shè)備種類太多,如果每一個(gè)IIC設(shè)備寫一個(gè)驅(qū)動(dòng)程序,那么顯得內(nèi)核非常大。不符合軟件工程代碼復(fù)用,所以對(duì)其層次話:

? ? ?這里簡單的將IIC設(shè)備驅(qū)動(dòng)分為設(shè)備層總線層。理解這兩個(gè)層次的重點(diǎn)是理解4個(gè)數(shù)據(jù)結(jié)構(gòu),這4個(gè)數(shù)據(jù)結(jié)構(gòu)是i2c_driver、i2c_client、i2c_algorithm、i2c_adapteri2c_driver、i2c_client屬于設(shè)備層i2c_algorithm、i2c_adapter屬于總線型。如下圖:

? ? 設(shè)備層關(guān)系到實(shí)際的IIC設(shè)備,總線層包括CPU中的IIC總線控制器和控制總線通信的方法。值得注意的是:一個(gè)系統(tǒng)中可能有很多個(gè)總線層,也就是包含多個(gè)總線控制器;也可能有多個(gè)設(shè)備層,包含不同的IIC設(shè)備

? ? ??? 由IIC總線規(guī)范可知,IIC總線由兩條物理線路組成,這兩條物理線路是SDA和SCL。只要連接到SDA和SCL總線上的設(shè)備都可以叫做IIC設(shè)備。

a -- i2c_client?

? ? ? ?一個(gè)IIC設(shè)備由i2c_client數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述:

[cpp]?view plaincopy
  • struct??i2c_client??
  • {??
  • ????unsigned?short??flags;???????????????????????? ?//標(biāo)志位??
  • ????unsigned?short??addr;              ??//設(shè)備的地址,低7位為芯片地址??
  • ????char?name[I2C_NAME_SIZE];          ???//設(shè)備的名稱,最大為20個(gè)字節(jié)??
  • ????struct??i2c_adapter?*adapter;           //依附的適配器i2c_adapter,適配器指明所屬的總線??
  • ????struct??i2c_driver?*driver;             //指向設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序??
  • ????struct?device??dev;                 //設(shè)備結(jié)構(gòu)體??
  • ????int?irq;                       //設(shè)備申請(qǐng)的中斷號(hào)??
  • ????struct?list_head??list;                //連接到總線上的所有設(shè)備??
  • ????struct?list_head?  detected;           //已經(jīng)被發(fā)現(xiàn)的設(shè)備鏈表??
  • ????struct?completion  released;           //是否已經(jīng)釋放的完成量??
  • };??
  • 設(shè)備結(jié)構(gòu)體i2c_client中addr的低8位表示設(shè)備地址。設(shè)備地址由讀寫位、器件類型和自定義地址組成,如下圖:

    第7位是R/W位,0表示寫,2表示讀,所以I2C設(shè)備通常有兩個(gè)地址,即讀地址和寫地址;

    類型器件由中間4位組成,這是由半導(dǎo)體公司生產(chǎn)的時(shí)候就已經(jīng)固化了;

    自定義類型由低3位組成。由用戶自己設(shè)置;


    ? ? ?IIC設(shè)備還有一些重要的注意事項(xiàng):

    1、i2c_client數(shù)據(jù)結(jié)構(gòu)是描述IIC設(shè)備的“模板”,驅(qū)動(dòng)程序的設(shè)備結(jié)構(gòu)中應(yīng)包含該結(jié)構(gòu);

    2、adapter指向設(shè)備連接的總線適配器,系統(tǒng)可能有多個(gè)總線適配器。內(nèi)核中靜態(tài)指針數(shù)組adapters記錄所有已經(jīng)注冊(cè)的總線適配器設(shè)備;

    3、driver是指向設(shè)備驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)程序是在系統(tǒng)檢測(cè)到設(shè)備存在時(shí)賦值的


    b --?IIC設(shè)備驅(qū)動(dòng) ? ? i2c_driver

    [cpp]?view plaincopy
  • struct??i2c_driver??
  • {??
  • ????int?id;?????????????????????????//驅(qū)動(dòng)標(biāo)識(shí)ID??
  • ????unsigned?int?class;???????????????//驅(qū)動(dòng)的類型??
  • ????int?(*attach_adapter)(struct?i2c_adapter?*);?????????????//當(dāng)檢測(cè)到適配器時(shí)調(diào)用的函數(shù)??
  • ????int?(*detach_adapter)(struct?i2c_adapter*);??????????????//卸載適配器時(shí)調(diào)用的函數(shù)??
  • ????int?(*detach_client)(struct?i2c_client?*)???__deprecated;?????????????//卸載設(shè)備時(shí)調(diào)用的函數(shù)??
  • ????
  • ?????//以下是一種新類型驅(qū)動(dòng)需要的函數(shù),這些函數(shù)支持IIC設(shè)備動(dòng)態(tài)插入和拔出。如果不想支持只實(shí)現(xiàn)上面3個(gè)。要不實(shí)現(xiàn)上面3個(gè)。要么實(shí)現(xiàn)下面5個(gè)。不能同時(shí)定義??
  • ????int??(*probe)(struct?i2c_client?*,const?struct??i2c_device_id?*);??????????????//新類型設(shè)備探測(cè)函數(shù)??
  • ????int?(*remove)(struct?i2c_client?*);???????????????????//新類型設(shè)備的移除函數(shù)??
  • ????void?(*shutdown)(struct?i2c_client?*);??????????????//關(guān)閉IIC設(shè)備??
  • ????int?(*suspend)(struct??i2c_client?*,pm_messge_t?mesg);???????????//掛起IIC設(shè)備??
  • ????????int?(*resume)(struct??i2c_client?*);???????????????????????????????//恢復(fù)IIC設(shè)備??
  • ????int?(*command)(struct?i2c_client?*client,unsigned?int?cmd,void?*arg);????????//使用命令使設(shè)備完成特殊的功能。類似ioctl()函數(shù)??
  • ????struct?devcie_driver??driver;?????????????????????????//設(shè)備驅(qū)動(dòng)結(jié)構(gòu)體??
  • ????const?struct??i2c_device_id?*id_table;???????????????????????//設(shè)備ID表??
  • ????int?(*detect)(struct?i2c_client?*,int??kind,struct??i2c_board_info?*);??????????//自動(dòng)探測(cè)設(shè)備的回調(diào)函數(shù)??
  • ??
  • ????const??struct?i2c_client_address_data??????????*address_data;?????????????????//設(shè)備所在的地址范圍??
  • ????struct??list_head????clients;????????????????????//指向驅(qū)動(dòng)支持的設(shè)備??
  • };??
  • 結(jié)構(gòu)體i2c_driver和i2c_client的關(guān)系較為簡單,其中i2c_driver表示一個(gè)IIC設(shè)備驅(qū)動(dòng),i2c_client表示一個(gè)IIC設(shè)備。關(guān)系如下圖:

    c -- i2c_adapter

    ? ? ? IIC總線適配器就是一個(gè)IIC總線控制器,在物理上連接若干個(gè)IIC設(shè)備。IIC總線適配器本質(zhì)上是一個(gè)物理設(shè)備,其主要功能是完成IIC總線控制器相關(guān)的數(shù)據(jù)通信:

    [cpp]?view plaincopy
  • struct?i2c_adapter??
  • {??
  • ????struct?module?*owner;????????????????????????//模塊計(jì)數(shù)??
  • ????????unsigned??int?id;??????????????????????????????????//alogorithm的類型,定義于i2c_id.h中??
  • ????????unsigned???int??class;???????????????????????????//允許探測(cè)的驅(qū)動(dòng)類型??
  • ????const?struct?i2c_algorithm?*algo;?????????//指向適配器的驅(qū)動(dòng)程序??
  • ????????void?*algo_data;??????????????????????????????????//指向適配器的私有數(shù)據(jù),根據(jù)不同的情況使用方法不同??
  • ????????int?(*client_register)(struct??i2c_client?*);??????????//設(shè)備client注冊(cè)時(shí)調(diào)用??
  • ????????int?(*client_unregister(struct??i2c_client?*);???????//設(shè)備client注銷時(shí)調(diào)用??
  • ????????u8?level;???????????????????????????????????????????????????????????
  • ????struct??mutex??bus_lock;?????????????????????????????//對(duì)總線進(jìn)行操作時(shí),將獲得總線鎖??
  • ????????struct??mutex??clist_lock?;????????????????????????????//鏈表操作的互斥鎖??
  • ????????int?timeout;??????????????????????????????????????????????????//超時(shí)??
  • ????int?retries;?????????????????????????????????????????????????????//重試次數(shù)??
  • ????struct?device?dev;??????????????????????????????????????????//指向?適配器的設(shè)備結(jié)構(gòu)體??
  • ????int??nr?;????????????????????????????????????????????????????????????
  • ????struct??list_head??????clients;????????????????????????????//連接總線上的設(shè)備的鏈表??
  • ????char?name[48];??????????????????????????????????????????????//適配器名稱??
  • ????struct?completion?????dev_released;???????????????//用于同步的完成量??
  • };??

  • d --?i2c_algorithm

    ? ? ? ?每一個(gè)適配器對(duì)應(yīng)一個(gè)驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序描述了適配器與設(shè)備之間的通信方法:

    [cpp]?view plaincopy
  • struct??i2c_algorithm??
  • {??
  • ????int??(*master_xfer)(struct??i2c_adapter?*adap,??struct??i2c_msg?*msg,?int?num);??????????????//傳輸函數(shù)指針,指向?qū)崿F(xiàn)IIC總線通信協(xié)議的函數(shù),用來確定適配器支持那些傳輸類型??
  • ????int??(*smbus_xfer)(struct??i2c_adapter?*adap,?u16??addr,?unsigned??short?flags,?char??read_write,?u8?command,?int?size,?union??i2c_smbus_data??*data);????//smbus方式傳輸函數(shù)指針,指向?qū)崿F(xiàn)SMBus總線通信協(xié)議的函數(shù)。SMBus和IIC之間可以通過軟件方式兼容,所以這里提供了一個(gè)函數(shù),但是一般都賦值為NULL??
  • ????u32??(*functionality)(struct??i2c_adapter?*);???????????????????//返回適配器支持的功能??
  • ??
  • };??

  • ? ? ? IIC設(shè)備驅(qū)動(dòng)程序大致可以分為 設(shè)備層和總線層 。設(shè)備層包括一個(gè)重要的數(shù)據(jù)結(jié)構(gòu),i2c_client。總線層包括兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu),分別是i2c_adapter和i2c_algorithm。一個(gè)i2c_algorithm結(jié)構(gòu)表示適配器對(duì)應(yīng)的傳輸數(shù)據(jù)方法。3個(gè)數(shù)據(jù)結(jié)構(gòu)關(guān)系:

    IIC設(shè)備層次結(jié)構(gòu)較為簡單,但是寫IIC設(shè)備驅(qū)動(dòng)程序卻相當(dāng)復(fù)雜。

    IIC設(shè)備驅(qū)動(dòng)程序的步驟:



    4、各結(jié)構(gòu)體的作用與它們之間的關(guān)系

    a -- i2c_adapter與i2c_algorithm

      i2c_adapter對(duì)應(yīng)與物理上的一個(gè)適配器,而i2c_algorithm對(duì)應(yīng)一套通信方法,一個(gè)i2c適配器需要i2c_algorithm中提供的(i2c_algorithm中的又是更下層與硬件相關(guān)的代碼提供)通信函數(shù)來控制適配器上產(chǎn)生特定的訪問周期。缺少i2c_algorithm的i2c_adapter什么也做不了,因此i2c_adapter中包含其使用i2c_algorithm的指針。

    ? ? ? ? i2c_algorithm中的關(guān)鍵函數(shù)master_xfer()用于產(chǎn)生i2c訪問周期需要的start stop ack信號(hào),以i2c_msg(即i2c消息)為單位發(fā)送和接收通信數(shù)據(jù)。

      i2c_msg也非常關(guān)鍵,調(diào)用驅(qū)動(dòng)中的發(fā)送接收函數(shù)需要填充該結(jié)構(gòu)體

    [cpp]?view plaincopy
  • struct?i2c_msg?{????
  • ????__u16?addr;?/*?slave?address????????????*/????
  • ????__u16?flags;????????????
  • ????__u16?len;??????/*?msg?length???????????????*/????
  • ????__u8?*buf;??????/*?pointer?to?msg?data??????????*/????
  • };????

  • b --i2c_driver和i2c_client

    ? ? ? i2c_driver對(duì)應(yīng)一套驅(qū)動(dòng)方法,其主要函數(shù)是attach_adapter()和detach_client()

    ? ? ? i2c_client對(duì)應(yīng)真實(shí)的i2c物理設(shè)備device,每個(gè)i2c設(shè)備都需要一個(gè)i2c_client來描述

    ? ? ? 2c_driver與i2c_client的關(guān)系是一對(duì)多。一個(gè)i2c_driver上可以支持多個(gè)同等類型的i2c_client.



    c -- i2c_adapter和i2c_client

      i2c_adapter和i2c_client的關(guān)系與i2c硬件體系中適配器和設(shè)備的關(guān)系一致,即i2c_client依附于i2c_adapter,由于一個(gè)適配器上可以連接多個(gè)i2c設(shè)備,所以i2c_adapter中包含依附于它的i2c_client的鏈表。


     從i2c驅(qū)動(dòng)架構(gòu)圖中可以看出,linux內(nèi)核對(duì)i2c架構(gòu)抽象了一個(gè)叫核心層core的中間件,它分離了設(shè)備驅(qū)動(dòng)device driver和硬件控制的實(shí)現(xiàn)細(xì)節(jié)(如操作i2c的寄存器),core層不但為上面的設(shè)備驅(qū)動(dòng)提供封裝后的內(nèi)核注冊(cè)函數(shù),而且還為小面的硬件事件提供注冊(cè)接口(也就是i2c總線注冊(cè)接口),可以說core層起到了承上啟下的作用。

    總結(jié)

    以上是生活随笔為你收集整理的Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    欧美精品久久久久性色 | 综合网伊人 | 伊人婷婷综合 | 国产第一页福利影院 | 久久精品欧美视频 | av在线播放不卡 | 国产精品欧美激情在线观看 | 国产成年免费视频 | 色婷婷久久久 | 欧美-第1页-屁屁影院 | 超碰人人99 | 午夜精品一区二区三区视频免费看 | 国产精品一区免费看8c0m | 91麻豆网| 91精品蜜桃 | 国产精品久久久久久一区二区 | 中文字幕亚洲欧美日韩 | 深爱激情五月婷婷 | 成人黄大片视频在线观看 | 丝袜制服天堂 | 日韩久久久久久久久久久久 | 91av片| 久章草在线 | 一区二区日韩av | 国产精品白丝jk白祙 | 99精品免费久久久久久久久日本 | 91男人影院| 在线观看免费观看在线91 | 亚洲区精品视频 | 人人草人 | 在线视频日韩精品 | 九九精品在线观看 | 国产精品一区欧美 | 国产无区一区二区三麻豆 | 欧美一二三视频 | 午夜影院一级片 | 婷婷狠狠操 | 免费看片日韩 | 毛片无卡免费无播放器 | 香蕉色综合 | 国产亚洲精品美女 | 国产精品久一 | 日韩在线观看一区二区 | av在线短片| 麻豆视频在线 | 日韩伦理片一区二区三区 | 中国老女人日b | 在线播放91 | 中文在线a∨在线 | 国产精品9999久久久久仙踪林 | www.亚洲黄| 国产精品成久久久久三级 | 久精品视频在线观看 | 久久激五月天综合精品 | 国产精品专区在线观看 | 亚洲黄色激情小说 | 美女网站在线播放 | 五月天婷婷免费视频 | 在线一区电影 | 天天色天 | 欧美 日韩 视频 | 丁香六月婷婷激情 | 精品福利视频在线观看 | 丁香激情综合国产 | 狠狠狠综合 | 亚州av一区 | 久久伦理电影网 | 国产中文字幕亚洲 | 狠狠狠狠狠狠天天爱 | 日一日操一操 | 亚洲精品99久久久久中文字幕 | 欧美a√大片 | 天堂久久电影网 | 日本最大色倩网站www | 操操操人人 | 久久精品视频免费 | 国产精品久久久久永久免费 | 欧美日韩中文字幕综合视频 | 国产精品麻豆99久久久久久 | 在线观看91视频 | 中文字幕在线观看完整版电影 | 久草在线资源免费 | 久久99九九99精品 | 国产美女精品人人做人人爽 | 黄色特一级 | 欧美成年人在线观看 | 丝袜+亚洲+另类+欧美+变态 | 免费av观看网站 | 亚洲视频一级 | 久久艹久久 | 久久久精品电影 | 97视频在线| 国产视频亚洲 | 国产视频二 | 99久久精品无码一区二区毛片 | 久久精品人人做人人综合老师 | 6080yy精品一区二区三区 | 国产成人综合在线观看 | 波多野结衣亚洲一区二区 | 日韩二区在线播放 | www欧美日韩| 色香蕉在线视频 | 亚洲国产合集 | 色视频在线看 | 深爱婷婷网 | 久久九九久久九九 | 久久精品欧美视频 | 欧美在线视频第一页 | 欧美久久久久久久久中文字幕 | a电影免费看 | 天天爽天天射 | 91av视频导航| 亚洲va在线va天堂va偷拍 | 国产美女免费观看 | 美女网站在线播放 | 婷婷五月在线视频 | 亚洲尺码电影av久久 | 91一区啪爱嗯打偷拍欧美 | 91女神的呻吟细腰翘臀美女 | 久久国产精品色婷婷 | .精品久久久麻豆国产精品 亚洲va欧美 | 日本特黄特色aaa大片免费 | 久久男人视频 | 九九久久在线看 | 天天操操操操操 | 日韩一级电影在线观看 | 国产一级视屏 | 日韩特级黄色片 | www.久久久精品 | 韩国av一区二区三区 | 麻豆国产视频下载 | 成人av一区二区三区 | 国产又粗又猛又色又黄网站 | 久久久国产精品视频 | 免费av免费观看 | 中文字幕免费高清在线 | 国产成人一区二区三区在线观看 | 91中文字幕网 | 天天摸天天舔天天操 | 日韩精品在线视频 | 国产精品美女久久久免费 | 亚洲精品中文在线资源 | 日本精品视频在线观看 | 国产精品麻豆果冻传媒在线播放 | av成人在线网站 | 欧美va天堂在线电影 | 国产精品一区二区三区99 | 有码中文字幕在线观看 | 91自拍视频在线观看 | 亚洲综合在线一区二区三区 | 夜夜操网 | 中文字幕在线电影 | 天天鲁天天干天天射 | 草莓视频在线观看免费观看 | 久久国产精品小视频 | 日韩欧美精品在线观看 | 伊人亚洲精品 | 伊人色综合久久天天网 | 九九激情视频 | 婷婷伊人综合 | 亚洲欧美视频网站 | 8x8x在线观看视频 | 中文理论片 | 999久久国产精品免费观看网站 | 国内丰满少妇猛烈精品播放 | 国产一在线精品一区在线观看 | 久久中文字幕在线视频 | 久久免费片 | 久草免费在线观看视频 | 一区二区三区在线免费观看视频 | av中文字幕在线免费观看 | 国产一区二区在线播放 | 丁香视频全集免费观看 | 伊人宗合| 久久精品国产久精国产 | 国产精品高清在线观看 | 色婷婷亚洲婷婷 | 超碰97在线人人 | 黄色三级免费观看 | 草久久久久 | 日韩电影在线观看中文字幕 | 国产麻豆果冻传媒在线观看 | 亚洲国产成人高清精品 | 免费观看www7722午夜电影 | 成人av在线影院 | 色黄久久久久久 | 最新av电影网站 | 四虎在线永久免费观看 | 久久精品一区八戒影视 | av怡红院| 精品一区二区电影 | 免费能看的av | 99久久久久免费精品国产 | 99久久久久久久久 | 国产美女无遮挡永久免费 | 中文字幕欧美日韩va免费视频 | 国产又黄又爽又猛视频日本 | 韩国一区二区三区在线观看 | 日韩中文字幕第一页 | 91成人免费在线视频 | 在线99| 亚洲最新合集 | 欧美综合在线观看 | 青青草在久久免费久久免费 | 91丨九色丨国产丨porny精品 | av黄色av| 91免费的视频在线播放 | 91污在线观看 | 伊人丁香 | 久久久久久久99精品免费观看 | 色av资源网 | 国产精品欧美激情在线观看 | 麻豆91在线播放 | 天天操天天摸天天爽 | 99 视频 高清 | 三级av在线播放 | 亚洲国产成人精品电影在线观看 | 91麻豆精品国产自产在线 | 精品久久久久久久久久久久久久久久久久 | 国产免费人成xvideos视频 | 久久久久久免费网 | 波多野结衣一区二区三区中文字幕 | 国产品久精国精产拍 | 国产字幕在线看 | 国产成人亚洲精品自产在线 | 国产成人精品综合久久久 | 91av在线国产 | 午夜久久影院 | 一区二区在线不卡 | 麻豆视频免费网站 | 99在线精品视频在线观看 | 在线精品视频在线观看高清 | 色婷婷综合久久久久 | 97超碰人人澡人人爱学生 | 三级午夜片 | 久久久国产在线视频 | 在线观看视频在线观看 | 国产精品免费在线观看视频 | 久久黄色网址 | 麻豆传媒电影在线观看 | 在线免费试看 | 午夜精品久久久久久久99婷婷 | av一区二区三区在线播放 | 欧洲一区二区在线观看 | 丁香综合五月 | 手机成人在线电影 | 久操97 | 欧美激情综合色综合啪啪五月 | 欧美a级片网站 | 超碰在线个人 | 久草线 | 天堂中文在线视频 | 美女免费视频网站 | 久久99久久99精品免视看婷婷 | 激情欧美日韩一区二区 | 欧美在线一 | 国产亚洲综合性久久久影院 | 成人高清av在线 | 草久久精品 | 成人三级av| 国产精品久久一区二区三区, | 国产黄色片久久久 | 黄色免费在线看 | 久久影视精品 | 久久精品99精品国产香蕉 | 91在线视频免费 | 黄色av一区二区三区 | 天天操网站 | 欧美激情第28页 | 亚洲午夜精品一区二区三区电影院 | 中文字幕在线国产 | 国产成人一区三区 | 欧美网站黄色 | 人成免费网站 | 久日精品 | 五月婷婷开心 | 亚洲成av片人久久久 | 国产精品一区二区美女视频免费看 | 96国产精品视频 | 久久国产精品一区二区三区 | 91在线中文字幕 | 亚洲视频网站在线观看 | 国产精品欧美久久久久天天影视 | 国产专区在线视频 | 久久精品久久精品久久39 | 少妇超碰在线 | 狠狠操综合 | 亚洲精品综合欧美二区变态 | 久草在线电影网 | 欧美亚洲成人免费 | 夜夜操网站 | www.夜夜爽 | 九九久久久久久久久激情 | 中文字幕av免费 | 一级黄色片在线 | 天天操天天射天天插 | 久草在线资源视频 | 色综合久久久久综合 | 久久99网站 | 国产成人精品亚洲精品 | 久热这里有精品 | 亚洲区另类春色综合小说 | 日韩精品一区二区三区免费观看 | 久久福利| 国产视频日韩视频欧美视频 | 很黄很污的视频网站 | 久久天堂亚洲 | 青草视频在线看 | 午夜精品三区 | 精品亚洲一区二区三区 | 在线观看黄色的网站 | 99操视频 | 97人人艹 | 精品在线视频一区二区三区 | 中文字幕视频观看 | 天天草天天摸 | 在线观看91网站 | 怡红院成人在线 | 欧美日韩综合在线 | 少妇bbbb | 一区二区不卡高清 | 欧日韩在线视频 | 人人干人人爽 | 国产精品入口麻豆www | 欧美超碰在线 | 国产一级久久 | 中文区中文字幕免费看 | 91久久精品一区二区二区 | 午夜婷婷综合 | 青青看片 | 久久99最新地址 | 2022国产精品视频 | 色婷婷av一区二 | 在线a亚洲视频播放在线观看 | 欧美精品一区二区三区四区在线 | 久久草草热国产精品直播 | 狠狠狠狠狠狠天天爱 | 91成品人影院 | 成人精品一区二区三区电影免费 | 2023亚洲精品国偷拍自产在线 | 色婷婷国产| 国产精品国产三级国产aⅴ入口 | 亚洲国产精品电影在线观看 | 韩国av一区二区 | 五月天综合婷婷 | 四虎永久视频 | 91欧美国产 | 探花国产在线 | 狠狠干网| 99精彩视频| 国产99久久久国产精品 | 国产黄色片一级三级 | 国产精品亚洲片夜色在线 | 亚洲精品视频在线免费播放 | 人人草人人草 | 午夜久久福利视频 | 99久久影视| 亚洲综合欧美精品电影 | 久久这里只有精品首页 | 天天干,天天干 | 最近免费观看的电影完整版 | 国产精品久久久久久久免费观看 | 国产精品免费久久久久久 | 婷婷去俺也去六月色 | 国产精品福利午夜在线观看 | 日韩和的一区二在线 | 九九综合久久 | 亚洲国产精品久久久久婷婷884 | 亚洲国产免费网站 | 美女福利视频在线 | 久久视讯 | 在线观看亚洲国产 | 樱空桃av | 在线激情影院一区 | 国产三级国产精品国产专区50 | 午夜10000| 国产伦精品一区二区三区免费 | 国产精品色婷婷视频 | 一区二区欧美激情 | 国模一二三区 | 国产精品美女久久久久久久久 | 亚洲五月六月 | 国产视频久久久久 | 99精品在线 | 尤物97国产精品久久精品国产 | 国产中文a | 日本婷婷色 | 又色又爽又黄高潮的免费视频 | 91视频xxxx| 麻豆成人在线观看 | 91视频在线自拍 | 国产福利在线免费 | 在线观看视频在线观看 | 亚洲精品视频免费看 | 亚洲六月丁香色婷婷综合久久 | 久久视频精品 | 黄色三级免费观看 | 久久精品免视看 | 国产一区私人高清影院 | 日韩免费在线视频观看 | 91传媒免费在线观看 | 精品在线视频一区 | 天天干天天看 | 日韩欧美高清在线观看 | 成人91免费视频 | 69国产成人综合久久精品欧美 | 国产精品亚洲人在线观看 | 丁香婷婷在线观看 | 亚洲精品视频免费观看 | 51久久成人国产精品麻豆 | 国产精品成人一区二区三区 | 啪啪资源 | 久九视频| 波多野结衣视频一区 | 99精品久久久久久久 | 国产精品理论片在线播放 | 天天干,夜夜爽 | 国产一区二区三区四区在线 | 色综合久久久久久久久五月 | 六月天综合网 | 国内精品久久久久影院一蜜桃 | 久久久久国产精品一区二区 | 亚洲mv大片欧洲mv大片免费 | 国产一区在线免费 | 欧美另类美少妇69xxxx | 国产亚洲成人网 | 日本在线成人 | www.久久成人 | 国产黄色在线 | 激情综合色综合久久 | 91丨九色丨高潮丰满 | 人人添人人 | 福利一区二区三区四区 | av日韩精品| 精品国产一区二区三区在线观看 | 亚洲精品乱码久久久久v最新版 | aaa亚洲精品一二三区 | 99久久日韩精品视频免费在线观看 | 国产香蕉97碰碰久久人人 | 国产黑丝一区二区 | 九九久久国产精品 | 精品视频123区在线观看 | 中文字幕日韩国产 | 精品少妇一区二区三区在线 | 国产va饥渴难耐女保洁员在线观看 | 丁香午夜婷婷 | 91九色国产蝌蚪 | 国产在线毛片 | 就要色综合 | 国产精品乱码久久 | 久久在线一区 | 亚洲六月丁香色婷婷综合久久 | 亚洲日本一区二区在线 | 欧美一级日韩三级 | 国产97色| 日韩美av在线 | 日韩精品久久久久久久电影竹菊 | 日韩精品中文字幕有码 | 亚洲精品日韩av | 国产福利一区二区三区视频 | 亚洲视频分类 | 亚洲五月婷 | 久草在线免费色站 | 成人免费一区二区三区在线观看 | 日韩av影视在线观看 | 免费观看的黄色片 | 五月天综合激情 | 国产精品 美女 | 午夜精品久久久久久久99 | 日日日天天天 | 成人av一区二区三区 | 色五丁香 | 天天躁日日躁狠狠 | 九九九热精品免费视频观看网站 | 在线视频第一页 | 99久久99久久精品国产片果冰 | 日韩欧美一区二区三区在线观看 | 日韩欧美精品一区二区三区经典 | 在线视频国产区 | 婷婷中文字幕在线观看 | 夜夜爽夜夜操 | 成人免费网站视频 | 国产精品成人自拍 | 香蕉看片 | 天天操天天谢 | 欧美九九视频 | 成人毛片一区 | 91精品视频在线 | 免费网站看v片在线a | 日韩剧情 | 麻豆高清免费国产一区 | 国产精品久久久久久久久久久杏吧 | 91九色免费视频 | 99热最新精品 | 91在线看黄 | 欧美日韩18 | 国产理论影院 | 国产一区二区在线精品 | 亚洲黄色在线播放 | 午夜视频在线观看欧美 | 精品久久久一区二区 | 最新精品国产 | 夜夜爽www| 日韩在线看片 | 97小视频| 精品亚洲在线 | 六月丁香六月婷婷 | 国产女人40精品一区毛片视频 | 91av资源在线| 久久国产精品99久久久久久丝袜 | 欧美国产日韩一区二区三区 | 免费看的黄色片 | 在线免费观看黄色 | 天天se天天cao天天干 | 天堂在线一区二区 | 久久精品视频在线免费观看 | 国产色道 | 久久精品美女 | 激情丁香综合 | 精品美女国产在线 | 日韩av成人在线观看 | 99久久精品午夜一区二区小说 | 日韩欧美精选 | 91看片网址 | 日韩三级中文字幕 | 片黄色毛片黄色毛片 | 久久久69 | av在线一二三区 | 日韩网站在线播放 | 精品自拍sae8—视频 | 99欧美| 人人爽人人爽人人片av免 | 91成年视频 | 亚洲一区视频在线播放 | aaa亚洲精品一二三区 | www.香蕉视频在线观看 | 99r国产精品 | 国产人免费人成免费视频 | 最近免费中文字幕 | 国产一级电影网 | 国产99久久99热这里精品5 | 亚洲精品久久激情国产片 | 久久99国产精品自在自在app | 亚洲男人天堂a | 97国产在线播放 | 91人人澡人人爽 | 成人免费网站在线观看 | 久久电影中文字幕视频 | 免费看的黄色网 | 国产69精品久久久久99尤 | 精品免费国产一区二区三区四区 | 色94色欧美 | 激情av一区二区 | 国产精品美女久久久久久久网站 | 亚洲年轻女教师毛茸茸 | 色狠狠一区二区 | 久久亚洲专区 | 久草视频手机在线 | 456成人精品影院 | 成人黄色免费在线观看 | 欧美大香线蕉线伊人久久 | 97超碰人人澡人人爱学生 | 亚洲h在线播放在线观看h | 草久久影院 | 日韩免费福利 | 国产精品大片在线观看 | 天天操夜夜操夜夜操 | 欧美一级免费高清 | 精品国产乱码久久久久久天美 | 天天操天天射天天插 | 狠狠色狠狠色 | 国产成人a亚洲精品 | 超碰在线人人艹 | 精品久久久久久国产91 | 国产精品露脸在线 | 国产精品99久久久久人中文网介绍 | 91看片看淫黄大片 | 欧美日韩中文在线观看 | 五月天婷亚洲天综合网精品偷 | 国产小视频网站 | 99在线精品免费视频九九视 | 色噜噜在线观看 | 午夜久久影视 | 久久免费福利视频 | 国产黄在线 | 久久久久久久久久久久电影 | 免费高清av在线看 | 国产在线免费av | 亚洲精品在线观看免费 | 麻豆影视在线播放 | 色a综合| 激情久久综合 | 国产三级国产精品国产专区50 | 99精品视频免费在线观看 | 久久久久国产成人精品亚洲午夜 | 日韩在线第一区 | 亚洲视频每日更新 | 五月天婷婷在线播放 | 欧美爽爽爽 | 精品在线观看免费 | av免费电影在线观看 | 色婷婷六月 | 91av超碰| 99国产视频 | 中文字幕日韩电影 | 91av电影在线 | 99精品国产视频 | 在线观看国产永久免费视频 | 国产黄色大全 | avav99| 国产福利免费看 | 国产一区二区视频在线播放 | 成人精品视频久久久久 | 国产精品成人久久久 | 亚洲成人国产精品 | 久久情侣偷拍 | 国产成人精品免费在线观看 | 九九在线播放 | 精品黄色在线 | 在线免费观看麻豆视频 | 欧美精品久久久久a | 久久成视频 | 日日久视频 | 91 在线视频| 欧美成年人在线观看 | 久久夜靖品 | 国产专区在线视频 | 日韩美av在线 | 久久久久日本精品一区二区三区 | 狠狠插狠狠干 | 黄色av大片 | 成人在线播放视频 | 国产成人精品日本亚洲999 | 四虎成人精品永久免费av九九 | 国产精品资源网 | 国产婷婷视频在线 | 欧美成a人片在线观看久 | 欧美一区二区三区免费看 | 国产一区二区中文字幕 | 综合久久精品 | 国产精品成人一区二区三区吃奶 | 欧美日韩网址 | 五月黄色 | 色资源网免费观看视频 | 超碰个人在线 | 国产色在线视频 | 人人看黄色 | 有码中文在线 | 免费热情视频 | 日韩av不卡在线 | 久久久免费观看视频 | 欧美日韩在线精品 | 国产在线观 | 九九爱免费视频 | 色中色综合 | 成人a大片 | 99精品国产福利在线观看免费 | 欧美日韩99| 九九在线播放 | 在线 欧美 日韩 | 亚洲精品乱码久久久久久蜜桃91 | 国产中文字幕久久 | 国产精品精品久久久 | 免费a网| 成人欧美一区二区三区在线观看 | 婷婷在线播放 | 黄色av网站在线观看 | 在线视频日韩一区 | 狠狠黄| 中文字幕在线观看视频免费 | 久久婷婷视频 | 久久久免费 | 亚洲婷婷在线视频 | 欧美大片在线观看一区 | av不卡免费看 | 日韩一区二区三区免费视频 | 色综合欧洲 | 麻豆视频免费播放 | 一级黄毛片| 免费看黄网站在线 | 91在线精品播放 | 亚洲国产成人在线观看 | 懂色av一区二区三区蜜臀 | 东方av在线免费观看 | 91精品国产麻豆 | 国产成人精品午夜在线播放 | 日韩欧美精品一区 | 美女精品网站 | 国产成人99av超碰超爽 | 亚洲女欲精品久久久久久久18 | 日韩在线视频网址 | 天天综合天天做 | 免费观看一级视频 | 日本不卡视频 | 国产精品久久艹 | av电影在线免费观看 | 久久黄页 | 久久高清免费观看 | 日韩在线高清 | 五月婷婷六月丁香在线观看 | 欧美日韩高清在线 | 免费网址在线播放 | 精品亚洲一区二区三区 | 精品v亚洲v欧美v高清v | 国产精品入口66mio女同 | 美国av片在线观看 | 蜜桃av久久久亚洲精品 | 在线国产不卡 | 911久久香蕉国产线看观看 | 日韩美女高潮 | 91热精品 | 日韩中文三级 | 波多野结衣在线中文字幕 | 69视频在线| 在线视频18在线视频4k | 欧美在线1区 | 成人黄性视频 | 波多野结衣精品在线 | 天天综合网在线观看 | 久久久精品日本 | 中国成人一区 | 黄色动态图xx | 在线观看一级视频 | 亚洲黄色一级大片 | 草久中文字幕 | 久草在线视频精品 | 精品久久久久久久久久久院品网 | 久久热首页 | 97精品超碰一区二区三区 | 一级精品视频在线观看宜春院 | 91精品国产91久久久久久三级 | 日本精品一区二区在线观看 | 久久久一本精品99久久精品 | 国产亚洲成av人片在线观看桃 | 成人日韩av | 欧美日韩视频精品 | 在线日韩中文字幕 | 香蕉视频在线网站 | 中文字幕超清在线免费 | 综合网天天射 | 国产中文字幕视频在线观看 | 欧美日韩天堂 | 国产精品丝袜在线 | 日韩久久一区 | 在线视频1卡二卡三卡 | 国产成人三级三级三级97 | 日本少妇视频 | 色欧美视频 | 丁香视频全集免费观看 | 91精品久久久久久久久久入口 | 亚洲国产精品成人va在线观看 | 国产精品久久久久久久久久久久午夜片 | 国产不卡网站 | 一区二区三区精品在线视频 | 亚洲综合在线观看视频 | 亚洲在线免费视频 | 字幕网在线观看 | 久久人人爽| а天堂中文最新一区二区三区 | 久久久香蕉视频 | 99精品欧美一区二区三区 | 午夜丁香视频在线观看 | 久久国产福利 | 亚洲精品乱码久久久久久高潮 | 国产精品成人免费一区久久羞羞 | 色婷婷在线视频 | 免费成人在线电影 | 欧美精品你懂的 | 亚州中文av | 一区二区三区中文字幕在线 | 最新日韩视频在线观看 | 在线国产一区 | 久操中文字幕在线观看 | 久久久久久国产精品免费 | 97久久精品午夜一区二区 | 99热这里精品| 青青草国产免费 | 激情五月亚洲 | 99久久99久久精品国产片果冰 | 久久久久综合视频 | 日韩一区二区三区高清免费看看 | 国产高清av免费在线观看 | 日日草夜夜操 | 亚洲va在线va天堂 | av不卡免费看 | 91片在线观看 | 四虎在线观看网址 | 欧美午夜理伦三级在线观看 | 国产 在线 高清 精品 | 天天干夜夜 | 欧美激情综合色综合啪啪五月 | 啪啪资源 | 精品一二区 | 91麻豆传媒 | 91毛片视频 | 久久狠狠亚洲综合 | 福利视频| 日韩中文字幕免费在线播放 | 在线观看视频97 | 三三级黄色片之日韩 | 国产专区精品视频 | 一区二区三区 亚洲 | 免费看的av片 | 9999亚洲| 激情黄色av | 夜夜嗨av色一区二区不卡 | 波多野结衣在线观看一区二区三区 | 欧美激情视频免费看 | 欧美一级片在线播放 | 丁香影院在线 | 国产黄a三级三级三级三级三级 | 亚洲永久精品视频 | 日韩一区二区三区高清免费看看 | 特及黄色片 | 玖玖在线免费视频 | 我要色综合天天 | 久久精品国产免费看久久精品 | 日韩在线三区 | av片一区二区 | 久久av网址 | 91丨九色丨高潮丰满 | 韩日成人av | 国产丝袜一区二区三区 | 国产高清视频在线播放一区 | 最新中文字幕在线播放 | 国产一级视频在线免费观看 | 九九热精品视频在线观看 | 91网页版在线观看 | 久久综合久久综合这里只有精品 | 精品久久久久久久久久久久 | 久久久国际精品 | 中文字幕一区二区三 | 日韩电影一区二区三区 | 国产精品小视频网站 | wwxxx日本| 亚洲欧美日韩国产一区二区 | 国产成人综合图片 | 亚洲欧美日韩一区二区三区在线观看 | 天天操天天射天天 | 色鬼综合网 | 奇米网在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 人人澡人人爱 | 国产精品综合久久 | 久久免费av电影 | 在线观看国产v片 | 伊人伊成久久人综合网小说 | 人人插人人舔 | 蜜臀av在线一区二区三区 | 91亚洲精品久久久中文字幕 | 久久人人97超碰国产公开结果 | 中文在线字幕免费观 | 国产亚洲精品美女 | 91久久人澡人人添人人爽欧美 | 亚洲综合黄色 | 在线 你懂 | 日韩精品综合在线 | 欧美 激情在线 | 9999在线视频 | 久草在线最新 | 91视频在线免费 | 色午夜影院 | 中文字幕亚洲欧美日韩 | 久久久99国产精品免费 | 欧美小视频在线 | 亚洲精品综合一二三区在线观看 | 不卡的av在线 | 国产精品mm | 欧美 激情 国产 91 在线 | 亚洲精品综合一二三区在线观看 | 久草精品在线 | 国产精品av久久久久久无 | 美女久久视频 | 免费视频网 | 91精品国产综合久久福利不卡 | 亚洲激情在线观看 | 深爱激情亚洲 | 亚洲免费精彩视频 | 国产一区二三区好的 | 色综合中文字幕 | 中文字幕乱偷在线 | 草在线视频| 久久精品视频日本 | 99久久久久久久 | 97人人视频 | 国外成人在线视频网站 | 欧美黄污视频 | 成人影片在线免费观看 | 超碰在线98 | 99国产成+人+综合+亚洲 欧美 | 中文字幕亚洲欧美日韩 | 成+人+色综合 | 久久综合久久综合九色 | 欧美日韩国产一二三区 | 成人免费共享视频 | 九九综合在线 | www好男人 | 美女网站一区 | 日本中文字幕电影在线免费观看 | 亚洲精品女 | 一本一本久久a久久精品牛牛影视 | 国产一区国产二区在线观看 | 免费看的黄色网 | 国产一区二区在线免费播放 | 国产日产av| 一区二区影视 | 欧美一级黄色视屏 | 国产精品第三页 | 午夜国产一区二区三区四区 | 亚洲国产黄色片 | 日韩二区三区在线 | 91精品国产福利在线观看 | 久热av在线 | 五月导航 | 五月婷婷六月丁香在线观看 | 久久香蕉电影 | 欧美精品久久久久久久久久丰满 | 天天色天天射天天操 | 中文字幕在线观看第一区 | 国内精品亚洲 | 久久理论电影 | 国产一区二区在线播放视频 | 黄色片视频免费 | 欧美一级免费在线 | 啪嗒啪嗒免费观看完整版 | 国产成人免费在线 | 91cn国产在线| 日韩av电影网站在线观看 | 在线国产激情视频 | 成人av片免费看 | 中文字幕影视 | 亚洲成人国产精品 | 欧美韩国日本在线观看 | 91九色国产视频 | av电影一区二区三区 | 九色精品免费永久在线 | 亚洲色图27p | 国产自产高清不卡 | 在线观看免费视频你懂的 | 婷婷av综合 | 久久久久久久亚洲精品 | 国产91区 | 夜夜躁日日躁狠狠躁 | 色老板在线视频 | 女人高潮一级片 | 黄色免费国产 | 免费高清男女打扑克视频 | 久久看毛片 | 日本久久高清视频 | 午夜av色 | 最新亚洲视频 | www.黄色片网站 | 伊人伊成久久人综合网站 | 狠狠干婷婷色 | 日韩系列在线 | 国产一区在线视频 | 日本久久免费电影 | 激情五月婷婷综合网 | 在线有码中文字幕 | 亚洲精品影院在线观看 | 久草在线免费电影 | 韩日精品在线 | av网站播放| 激情网五月天 | 91私密视频 | 黄色亚洲大片免费在线观看 | 久久狠狠婷婷 | 国产一区二区三精品久久久无广告 | 亚洲在线精品视频 | 国产1级毛片 | 99 久久久久 | 日韩69av | 欧美 亚洲 另类 激情 另类 | 亚洲一级免费观看 | 亚洲第一中文网 | 日韩在线免费播放 | 亚洲精品色 | 色综合天天色 | 国产精品完整版 | 久久国产精品色婷婷 | 久久精品免费电影 | 亚洲国产精品电影 | 久草视频免费 | 香蕉视频日本 | 国产亚洲欧洲 | 精品国产中文字幕 | 一区二区三区视频 | 黄色亚洲片 | 丁香六月在线 | 丁香久久婷婷 | 久久久久久福利 | av网站地址| 99麻豆久久久国产精品免费 | 中文字幕在线一区二区三区 | 亚洲国产精品久久久久婷婷884 | 久久中文欧美 | 最近中文字幕完整视频高清1 | 天天草综合 |