《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > CAN通信卡的Linux設備驅動程序設計實現

CAN通信卡的Linux設備驅動程序設計實現

2009-05-11
作者:楊 峰 吉吟東 薛 明

??? 摘? 要: 介紹了Linux下設備驅動程序的結構,描述了CAN通信卡設備驅動程序的軟件框架以及如何將CAN設備驅動程序加入到Linux系統內核中。討論了具體實現中為了提高通信效率和通信能力,改進設備驅動程序的緩沖區管理以及利用Linux的特點合理設計中斷處理程序。?

??? 關鍵詞: Linux操作系統?? ? 設備驅動程序? CAN通信卡? 中斷處理程序

?

??? 目前,許多工業現場如電力系統、化工系統等大量使用控制器局部網(CAN——Controller Area Network)現場總線網絡,CAN通信卡作為計算機的外設將計算機接入CAN網絡。市場上有不少CAN通信卡,但基本上都不帶Linux驅動程序,當需要在Linux下使用CAN通信卡設備時,需自己開發Linux的驅動程序。開發Linux驅動程序不但要求程序員要非常熟悉Linux系統,而且要熟悉Linux驅動程序開發的規范。本文將詳細介紹CAN通信卡的Linux驅動設備程序的設計和實現。?

1 CAN通信卡的Linux設備驅動程序結構?

??? Linux系統內核通過設備驅動程序與外圍設備進行交互,設備驅動程序是Linux內核的一部分,它是一組數據結構和函數,這些數據結構和函數通過定義的接口控制一個或多個設備。對用戶程序而言,設備驅動程序隱藏了設備的具體細節,對各種不同設備提供一致的接口,一般來說是把設備映射為一個特殊的設備文件,用戶程序可以象對普通文件一樣對此設備文件進行操作。?

??? Linux將每個設備看作一個文件,即可以像對待文件那樣使用read、write等系統調用進行讀寫。Linux的設備文件分為兩類:一是字符設備,只能對該類設備進行順序讀寫,對外提供字節流方式的操作;二是塊設備,可以對該類設備進行隨機訪問,一般是磁盤設備等大容量存儲設備。CAN通信卡設備屬于字符型設備。?

??? 對設備的訪問是由設備驅動程序提供的。Linux的設備驅動程序可以用模塊的方式加載入內核,設備驅動程序與Linux系統的關系如圖1所示。?

1.1? CAN通信卡設備的特點?

??? 控制器局部網(CAN)屬于現場總線的范疇,它是一種有效支持分布式控制或實時控制的串行通信網絡。由于其性能優異、價格低廉,很快被推廣到工業測控現場。?

??? CAN通信卡硬件實現CAN定義的物理層和數據鏈路層功能,收發報文中數據長度為0~8個字節,有2032個報文標識符。工作時通過報文標識符確定總線訪問優先權,高優先級報文具有低延遲時間,數據傳送速率可編程(最高為1Mbps)。發送期間若丟失仲裁或由于出錯而遭破壞的報文可自動重發。具有成組和廣播報文功能。?

??? 當CAN通信卡接收到一個報文時,數據保存在CAN通信卡上的接收緩存器中,并產生一個接收中斷。當一個報文被成功發送后,發送緩沖器可再次被訪問,產生一個發送中斷信號。CAN通信卡發送報文,將數據送入CAN通信卡上的發送緩存器中,CAN通信卡將數據串行化發到CAN總線上。?

1.2 CAN通信卡設備驅動程序的任務?

??? 由于CAN一幀的數據長度最大為8個字節,可以用多幀的Hilon A協議來使CAN傳輸數據任意長。CAN通信卡驅動程序主要完成按照Hilon A協議解包接收和打包發送任務,并要對接收的多幀進行管理。?

??? CAN通信卡驅動程序應該完成以下任務:?

??? (1)為應用程序提供通過CAN卡發送和接收任意長度數據的能力;?

??? (2)為應用程序提供設置CAN卡上CAN控制器運行參數的能力;?

??? (3)以阻塞或非阻塞方式讀寫CAN設備文件;?

??? (4)允許CAN卡同時收發多路數據。?

1.3 CAN通信卡驅動程序的處理流程?

??? 用戶進程通過系統調用向驅動程序傳送一幀任意長度的數據,驅動程序中發送數據的程序按照Hilon A協議將該幀分段打包,放入發送隊列,并向CAN控制器請求發送,由中斷處理程序中發送部分負責發送完所有的數據包。?

??? 當CAN通信卡接收到數據時,產生接收中斷,啟動接收中斷處理程序上半部將CAN控制器中接收緩沖器中的內容復制到接收隊列中,由中斷處理的下半部負責解包和組幀的任務,并將處理完的幀放入幀隊列中,最后用戶使用系統調用從接收幀隊列中讀取完整的一幀。?

??? CAN通信卡設備驅動程序處理框架如圖2所示。?

?

?

2 CAN通信卡設備驅動程序的模塊化程序設計?

??? 根據Linux對設備驅動程序的要求,模塊化的CAN驅動程序軟件結構如圖3。?

?

?

2.1 初始化加載和卸載部分?

??? 如果設備驅動程序以模塊方式加入內核,則一定會包括兩個模塊init_module和clear_module。init_module模塊用來加載設備,系統初始化時調用;clear_module模塊用來卸載設備,取消設備時調用。?

??? 設備驅動程序是系統內核的一部分。在任何程序使用設備驅動程序之前,設備驅動程序應該向系統進行登記,以便系統在適當的時候調用。Linux系統里,通過調用register_chrdev函數向系統注冊字符型設備驅動程序。register_chrdev定義為: ?

??? int register_chrdev(unsigned int major, const char *name, struct file_operations *fops); ?

??? 其中,major是為設備驅動程序向系統申請的主設備號,如果為0則系統為此驅動程序動態分配一個主設備號;name是設備名;fops是對各個系統調用的入口點的說明。 ?

??? CAN通信卡使用中斷與系統交換數據,CAN設備驅動程序需要使用內存來緩存接收到的數據和發送的數據,中斷和內存等資源是由Linux系統統一管理的,設備驅動程序在初始化時,需要申請資源。在資源不用的時候,應該釋放它們,以利于資源的共享。在Linux系統里,對中斷的處理是屬于系統核心的部分,設備驅動程序通過調用request_irq()函數來申請中斷,通過free_irq()函數來釋放中斷。作為系統核心的一部分,設備驅動程序在申請和釋放內存時不是調用malloc()函數和free()函數,而代之以調用kmalloc函數和kfree()函數。?

??? 在init_module模塊中,先檢查是否存在CAN通信卡,如果不存在則退出設備驅動程序的加載;如果存在,使用request_irq()函數為CAN通信卡申請系統中空閑的中斷,使用kmalloc()為設備驅動程序申請輸入輸出緩存隊列,如果這些資源申請不成功,則釋放已經申請到的系統資源,然后退出設備驅動程序的加載,如果申請成功,使用register_chrdev()函數將CAN通信卡驅動程序注冊到Linux系統中,加載完成。?

??? 在cleanup_module模塊中先使用free_irq()函數釋放init_module模塊中申請到的中斷,然后使用kfree()函數釋放init_module模塊中申請到的內存空間,最后使用unregister_chrdev()函數釋放init_module模塊中注冊的設備驅動程序,卸載完成。?

2.2? CAN通信卡設備驅動程序的中斷處理部分?

??? Linux中斷處理程序可以分為上半部和下半部。上半部即一般的中斷服務程序,由硬件中斷觸發,它一般運行在關中斷的方式下,應當盡可能短小,處理盡可能快;而下半部是單獨的一段處理程序,一般將其掛入立即隊列中以便快速執行。立即隊列中的任務在退出系統調用或調度器獲得運行時,將最優先地被執行。下半部運行在一個安全的環境,即開中斷和任務串行化,可以處理一些較花時間的任務。?

??? 這樣,驅動程序上半部在處理完實時性很強的任務后,用queue_task()函數將下半部處理函數掛入立即隊列,并用mark_bh()函數來激活立即隊列,則下半部可以最優先地被執行。?

??? 當有接收中斷時,CAN通信卡設備驅動程序的中斷處理程序上半部首先獲取驅動程序接收緩存中的空閑塊,將CAN通信卡上的接收緩沖器中數據復制到驅動程序的接收緩存中,釋放CAN通信卡接收緩沖器,然后將下半部處理函數掛入立即隊列,最后激活立即隊列。?

??? 當有發送中斷時,CAN通信卡設備驅動程序的中斷處理程序上半部首先獲取發送緩沖隊列中的數據,將需要發送的數據寫入CAN控制器的發送緩沖器,最后請求發送。?

??? CAN通信卡設備驅動程序的中斷處理程序下半部使用Hilon A協議對要傳送到CAN網絡上的數據打包,并對從CAN網絡上接收到的數據進行解包和組幀。這樣中斷處理程序的上半部只需要從CAN通信卡的緩沖器中將數據復制到驅動程序的緩沖區,系統開銷很小,但很費CPU時間;系統開銷較大的打包、解包和組幀處理則放在中斷處理程序的下半部,使用系統非中斷時間調度,可以使系統響應中斷更快,通信更穩定。?

2.3 緩沖區管理?

??? 在CAN通信卡設備驅動程序中,為了增強CAN通信卡的通信能力、提高通信效率,根據CAN的特點,使用兩級緩沖區結構,即直接面向CAN通信卡的收發緩沖區和直接面向系統調用的接收幀緩沖區。?

??? 通訊中的收發緩沖區一般采用環形隊列(或稱為FIFO隊列),使用環形的緩沖區可以使得讀寫并發執行,讀進程和寫進程可以采用“生產者和消費者”的模型來訪問緩沖區,從而方便了緩存的使用和管理。然而,環形緩沖區的執行效率并不高,每讀一個字節之前,需要判斷緩沖區是否為空,并且移動尾指針時需要進行“折行處理”(即當指針指到緩沖區內存的末尾時,需重新將其定向到緩沖區的首地址);每寫一個字節之前,需要判斷緩沖區是否為滿,并且移動尾指針時同樣需要進行“折行處理”。程序大部分的執行過程都是在處理個別極端的情況,只有小部分在進行實際有效的操作。這就是軟件工程中所謂的“8比2”關系。結合CAN通訊的實際情況,在本設計中對環形隊列進行了改進,可以較大地提高數據的收發效率。?

??? 由于CAN通信卡上接收和發送緩沖器每次只接收一幀CAN數據,而且根據CAN的通訊協議,CAN控制器的發送緩沖器由1個字節的標識符、一個字節的RTR和DLC位及8個字節的數據區組成,共10個字節;接收緩沖器與之類似,也有10個字節的寄存器。所以CAN控制器收發的數據是短小的定長幀(數據可以不滿8字節)。?

??? 于是,采用長度為10字節的數據塊來分配內存比較方便,即每次需要內存緩沖區時,直接分配10個字節,由于這10個字節的地址是線性的,故不需要進行 “折行” 處理。更重要的是,在向緩沖區中寫數據時,只需要判斷一次是否有空閑塊并獲取其塊首指針就可以了,從而減少了重復性的條件判斷,大大提高了程序的執行效率;同樣在從緩沖隊列中讀取數據時,也是一次讀取10字節的數據塊,同樣減少了重復性的條件判斷。?

??? 在CAN卡驅動程序中采用如下所示的稱為“Block_Ring_t”的數據結構作為收發數據的緩沖區:?

??????? typedef struct {?

??? long signature;?

??? unsigned char *head_p;?

??? unsigned char *tail_p;?

??? unsigned char *begin_p;?

??? unsigned char *end_p;?

??? unsigned char buffer[BLOCK_RING_BUFFER_SIZE];?

??? int usedbytes;?

??? }Block_Ring_t;?

??? 該數據結構在通用的環形隊列上增加了一個數據成員usedbytes,它表示當前緩沖區中有多少字節的空間被占用了。使用usedbytes,可以比較方便地進行緩沖區滿或空的判斷。當usedbytes=0時,緩沖區空;當usedbyes=BLOCK_RING_BUFFER_SIZE時,緩沖區滿。?

??? 本驅動程序除了收發緩沖區外,還有一個接收幀緩沖區,接收幀隊列負責管理經Hilon A協議解包后得到的數據幀。由于有可能要同時接收多個數據幀,而根據CAN總線的通訊協議,高優先級的報文將搶占總線,則有可能在接收一個低優先級且被分為好幾段發送的數據幀時,被一個優先級高的數據幀打斷。這樣會出現同時接收到多個數據幀中的數據包,因而需要有一個接收隊列對同時接收的數據幀進行管理。?

??? 當有新的數據包到來時,應根據addr(通訊地址),mode(通訊方式),index(數據包的序號)來判斷是否是新的數據幀。如果是,則開辟新的frame_node;否則如果已有相應的幀節點存在,則將數據附加到該幀的末尾;在插入數據的同時,應該檢查接收包的序號是否正確,如不正確將丟棄這包數據。?

??? 每次建立新的frame_node時,需要向frame_queue申請內存空間;當frame_queue已滿時,釋放掉隊首的節點(最早接收的但未完成的幀)并返回該節點的指針。?

??? 當系統調用讀取了接收幀后,釋放該節點空間,使設備驅動程序可以重新使用該節點。?

2.4 服務于I/O請求的設備驅動程序部分?

??? 這部分實際上是應用程序唯一可見的,應用程序通過系統來調用這部分程序,是設備驅動程序對應用程序的接口。本驅動程序提供文件操作接口。Linux系統中,字符型設備驅動程序提供的文件操作入口點由一個結構來向系統說明,此結構定義為: ?

??? struct file_operations { ?

??? int (*lseek)(struct inode *inode,struct file *filp, off_t off,int pos); ?

??? int (*read)(struct inode *inode,struct file *filp, char *buf, int count); ?

??? int (*write)(struct inode *inode,struct file *filp, char *buf,int count); ?

??? int (*readdir)(struct inode *inode,struct file *filp,struct dirent *dirent,int count); ?

??? int (*select)(struct inode *inode,struct file *filp, int sel_type,select_table *wait); ?

??? int (*ioctl) (struct inode *inode,struct file *filp, unsigned int cmd,unsigned int arg); ?

??? int (*mmap) (void); ?

??? int (*open) (struct inode *inode, struct file *filp); ?

??? void (*release) (struct inode *inode, struct file *filp); ? int (*fsync) (struct inode *inode, struct file *filp); ?

??? };?

??? 該結構定義了10個操作入口點,但是驅動程序沒有必要對每個入口點進行定義。根據需要,本驅動程序定義了如下的入口點。?

??? can_open(struct inode *inode, struct file *filp)入口點負責打開can設備,檢查can卡是否已被打開,完成can卡的初始化,設置設備的占用標志。can_release(struct inode *inode, struct file *filp)入口點負責關閉can設備。?

??? can_read(struct inode *, struct file *, off_t, int) 入口點負責檢查設備有沒有接收到完整的幀,can_read函數只是判斷是否有完整的數據幀可讀。要獲取數據幀,可以使用ioctl 的CAN_READFRAME命令。can_write(struct inode*, struct file *, const char *, int) 入口點負責向CAN發送數據。如果發送隊列有足夠的空間,則向設備傳送數據,也可以使用ioctl的CAN_WRITEFRAME命令來實現can_write。?

??? can_ioctl(struct inode *, struct file *, unsigned int cmd, unsigned long arg)入口點負責向CAN設備下發各種操作命令,命令代碼通過cmd參數傳送,命令參數通過arg參數傳送。本驅動程序提供了一些命令,配合can_read()和can_write() 可以實現對CAN通信卡的控制。CAN_IOCREADFRAME命令可以從CAN通信卡上讀取數據幀;CAN_IOCWRITEFRAME命令可以向CAN通信卡發送數據;CAN_IOCSETCONF命令可以設置CAN通信卡的運行參數;CAN_IOCGETCONF命令可以獲取CAN控制器的運行參數;CAN_IOCQUERYBUSSTATE命令可以查詢CAN總線狀態;CAN_IOCCLEARBUF命令可以清除CAN通信卡的收發緩沖區。?

??? 本設備驅動程序考慮到CAN通信卡的特點和CAN網絡傳輸數據的特點,設計了合理的數據結構和緩存管理方法,使得當有大量數據進出CAN通信卡時,既可以保證數據幀丟失和出錯幾率在允許范圍內,又可以保證數據幀能被快速下發和接收,實際應用中性能很好。Linux擅長通信,支持大多數以太網卡。如果將CAN通信卡的設備驅動程序加入到Linux系統,由于Linux的可裁減性和對硬件資源要求低的特點,可以用小硬盤、小內存和低檔CPU構成通信機連接高速以太網和低速現場總線CAN網絡,經濟實惠而且實用。?

參考文獻?

1 Uresh Vahalia著.聊鴻斌譯.UNIX高級教程-系統技術內幕.北京:清華大學出版社,1999?

2 Alessandro Rubini著.Lisoleg譯.Linux設備驅動程序.北京:中國電力出版社,2000?

3 鄔寬明.CAN總線原理和應用系統設計.北京:北京航空航天大學出版社,1996

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 波多野结衣一区二区三区高清av | 日本亲子乱子伦xxxx60岁 | 欧美黑吊大战白妞 | 女人大荫蒂毛茸茸视频 | 一本一道久久a久久精品综合蜜臀 | 偷窥自拍欧美色图 | 一 级做人爱全视频在线看 亚洲成a∨人片在线观看不卡 | 国产精品一二三级 | a级片免费视频 | 哪里可以免费看av | 成人av免费看 | 最近免费中文字幕mv在线视频3 | 久久精品水蜜桃av综合天堂 | 亚洲欧美激情国产综合久久久 | 欧美三级韩国三级日本三斤 | 巨胸美女狂喷奶水www | 少妇又粗又猛又爽又黄的视频 | 亚洲综合色无码 | 91嫩草视频在线观看 | 亚洲成人av网址 | 少妇高潮毛片高清免费播放 | 真多人做人爱视频高清免费 | 成人做爰9片免费看网站 | av在线免费播放 | 东京热一区二区三区无码视频 | 秋霞7777鲁丝伊人久久影院 | 午夜免费激情视频 | 99精品国产兔费观看久久99 | 国产精品夜夜爱 | 日韩在线视频网 | 亚精区在二线三线区别99 | 欧美性猛交xxxx乱大交蜜桃 | 日韩国产人妻一区二区三区 | 免费看的黄色网 | 欧美韩国日本在线 | 欧美精品videossex少妇 | 黄色网址国产 | 一本色道久久88加勒比—综合 | www在线免费观看视频 | 国产色爱| 狠狠色综合激情丁香五月 | 国内精自视频品线一区 | 一区二区久久精品66国产精品 | 先锋影音av资源在线观看 | 久久不卡免费视频 | 一本加勒比hezyo日本变态 | 国产精成人| 午夜国产精品视频 | 国产精品一区二区在线 | 大尺度无遮挡激烈床震网站 | 欧美大片在线观看 | 欧美视频性 | 成人美女黄网站色大免费的 | 中文字幕第66页 | 欧美成人片一区二区三区 | 久久久久99精品国产片 | 精品国产999 | 特级毛片在线大全免费播放 | 日韩精品人妻系列无码专区 | 多p混交群体交乱在线观看 多男一女一级淫片免费播放口 | 欧美色图激情小说 | 国内揄拍国内精品 | 美国av导航 | 亚洲精品乱码久久久久久蜜桃 | 国产人与禽zoz0性伦多活几年 | 91精产国品产区 | 婷婷综合久久中文字幕蜜桃三电影 | 男女吃奶做爰猛烈紧视频 | 中国丰满少妇熟乱xxxx | av人摸人人人澡人人超碰妓女 | 国产中文字幕三区 | 高潮毛片无遮挡高清免费视频网站 | 色呦呦在线 | 欧美日韩精品一区二区在线播放 | 日本不卡一二 | 国语对白新婚少妇在线观看 | 中文国产一区 | 国产美女91 | 国产女主播视频一区二区三区 | 91亚洲精品乱码久久久久久蜜桃 | 久久综合给合久久狠狠狠97色69 | 欧美一本 | 久久免费在线视频 | 婷婷国产成人精品视频 | 性高湖久久久久久久久 | 精品少妇ay一区二区三区 | 欧美夫妇交换xxxx | 日韩在线视频网站 | 77777五月色婷婷丁香视频 | 影视先锋av资源噜噜 | 最新的国产成人精品2021 | 国产热热| 亚洲欧美日韩综合久久久 | 欧美成人一区二免费视频软件 | 免费成人在线视频网站 | 六月婷婷久久 | 男人网站在线观看 | 女人和拘做爰正片视频 | 116少妇做爰毛片 | 久久国产成人午夜av影院武则天 | 亚洲美女自拍偷拍 | 双性人做受视频 | 97人妻熟女成人免费视频色戒 | 亚洲 日本 欧美 中文幕 | 肉体裸交137日本大胆摄影 | 欧美va免费高清在线观看 | 爱情岛成人www亚洲网站 | 亚洲欧洲免费无码 | 91国偷自产一区二区使用方法 | 夜夜骑夜夜操 | 成人精品一区日本无码网站 | 欧美性狂猛xxxxxbbbbb | 国产做a爱片久久毛片a片高清 | 亚洲精品午夜久久久 | h黄动漫日本www免费视频网站 | 欧美日韩国产精品一区 | 亚洲人成无码区在线观看 | 丰满诱人的人妻3 | 国产r级在线观看 | 日本三级不卡 | 中文字幕精品一区二区精品 | 欧美做受高潮1 | 无码少妇一区二区三区免费 | 亚洲精品国产嫩草在线观看东京热 | 精人妻无码一区二区三区 | 在线观看国产精品普通话对白精品 | 成人在线观看亚洲 | 18国产精品福利片久久婷 | 懂色av免费 | 欧美成人高清视频 | 亚洲精品大全 | 中文字幕有码av | 中文字幕第一页九 | 久热最新| 国产精品久久久久久久乖乖 | 亚洲综合欧美色五月俺也去 | 国产精品剧情对白无套在线观看 | 91在线视频精品 | 亚洲精品乱码久久久久蜜桃 | 亚洲视频在线观看一区 | 国产精品乱码一区 | 91另类 | 户外露出一区二区三区 | 99精产国品一二三产区网站 | youjizz亚洲女人| 中国三级毛片 | 97影院| 国产日韩av免费无码一区二区三区 | 永久免费观看美女裸体的网站 | 在线成人毛片 | 欧美丝袜一区二区三区 | 日日摸夜夜添夜夜躁好吊 | 在线视频99| 人人妻人人澡人人爽精品日本 | 黄色动漫在线免费观看 | 久久偷看各类wc女厕嘘嘘偷窃 | 狠狠色丁香婷婷 | 强奷乱码中文字幕 | 国产91黄色 | 亚洲国产中文字幕在线视频综合 | 免费国产小视频 | 免费毛片小视频 | 你懂的网站在线观看 | 欧美亚洲天堂网 | 国产成人精品一区二区视频 | 四虎永久地址www成人 | 中文字幕一区二区人妻性色 | 国产偷国产偷亚洲高清人白洁 | 黄色片链接 | 精品无码人妻一区二区免费蜜桃 | 国产一区二区在线精品 | 国产欧美三级 | 日韩精品亚洲一区 | 久久av无码精品人妻糸列 | 国产精品图片 | 色偷偷av一区二区三区 | 婷婷久久丁香 | 国产妇女乱码一区二区三区 | 久久99精品久久久久久水蜜桃 | 国产羞羞 | 一区二区三区日韩视频在线观看 | 国产午夜激情 | 欧美成人午夜视频 | 蜜臀久久精品久久久久久酒店 | 一色桃子在线精品播放 | 国产成人精品免费视频大全最热 | 亚洲日韩av在线观看 | 欧美日韩一区二区三区视频播放 | 国内精品国产成人国产三级 | 日韩一区二区三区四区五区六区 | 亚洲精品乱码久久久久久蜜桃91 | 影音先锋中文字幕人妻 | 国产精品高潮呻吟久久av郑州 | 一级欧美视频 | 亚洲精品色综合av网站 | 国产成人无码一区二区三区在线 | 欧美激情16p| av资源一区 | 久草在线视频在线 | 日韩精品亚洲人成在线 | 老司机精品视频一区二区三区 | 黄色小视频在线免费看 | 乱码一区二区三区 | 99视频精品在线 | 小12箩利洗澡无码视频网站 | 亚洲黄色免费观看 | 国产精品久久久久久av | 国产午夜精品一区二区三区四区 | 久久精品蜜桃 | 激情小说中文字幕 | 日韩免费视频一区二区 | 亚洲成a人片77777精品 | 一二三四社区在线中文视频 | 夜夜av| 成人在线免费网站 | 福利一二三区 | 九色丨porny丨喷水 | 青青青国产精品一区二区 | 成人看片网 | 黄色国产精品视频 | 国产69精品久久久久男男系列 | 国产高清在线a视频大全 | 亚洲熟妇av一区二区三区浪潮 | jizz日韩| 久久久久久久综合色一本 | 男女后进式猛烈xx00动态图片 | ,国产精品国产三级国产 | 91精品久久久久久久久中文字幕 | www婷婷av久久久影片 | 国产真实偷伦视频 | 亚洲国产欧洲 | 日本黄色天堂 | 少妇愉情理伦片高潮日本 | av网址观看 | 久久国产精品久久久 | 狠狠色丁香婷婷久久综合五月 | 日本黄色毛片 | xxxxxxxx性开放视频 | 一级特黄色片 | 女同舌吻互慰一区二区 | 亚洲做受高潮欧美裸体 | 欧美激情视频一区二区三区免费 | 一级片小视频 | 男人的天堂网在线 | 999热精品| 色婷婷综合成人 | 日韩三级视频在线播放 | 国产精品成人国产乱 | 国产人妻久久精品二区三区老狼 | 国产一精品久久99无吗一高潮 | 中文字幕av无码一区二区三区 | 国产成人涩涩涩视频在线观看 | 依人久久 | 成人区人妻精品一熟女 | 噼里啪啦动漫 | 2019年中文字幕 | 红杏成av人影院在线观看 | www.av在线播放 | 国产91免费看 | 成年男女免费视频网站 | 国产日产欧产精品精乱了派 | av免费片| 亚洲毛片一区二区三区 | 国产网站免费看 | 国产一级做a爱片久久毛片a | 国产日韩精品久久 | 免费看a级肉片 | 乡下小少妇xxxxx性开教 | 日本不卡影院 | 亚洲第一香蕉网 | 比色毛片 | 天堂网www. | 一区二区国产精品精华液 | 西西人体44www大胆无码 | 久久99热只有频精品8 | 国产吞精囗交高潮 | 波多野吉衣在线视频 | 91一区二区视频 | 亚洲欧美经典 | 国产午夜三级一区二区三桃花影视 | 日韩欧美亚洲在线 | 成人av一区二区亚洲精 | 亚洲乱码国产乱码精品精大量 | 2020亚洲视频 | 成人羞羞视频在线观看免费 | 欧美乱轮视频 | 久久天天躁夜夜躁狠狠85麻豆 | 久9精品| 玖玖999 | 国产91精品精华液一区二区三区 | 377p欧洲日本亚洲大胆噜噜 | 亚洲第一视频区 | 4hu44四虎www在线影院麻豆 | 天天操婷婷 | 少妇精品无码一区二区免费视频 | 国产免费一区二区三区免费视频 | 四虎884aa成人精品最新 | 超碰青草 | 亚洲精品久久久久久久久久久久久久 | 乱荡少妇xxhd | 欧美日韩喷水 | 午夜暗香一3视频丨vk | 深夜福利在线免费观看 | 手机看片日韩 | 欧美日韩免费一区 | 91成人在线观看喷潮蘑菇 | 国产自产在线视频 | 亚州av在线 | 麻豆乱淫一区二区三区 | 亚洲色图另类小说 | 又摸又揉又黄又爽的视频 | 最近在线更新8中文字幕免费 | 亚洲乱仑| 香蕉久久国产av一区二区 | 久久久久久久久久久久久久国产 | 丰满人妻熟妇乱又伦精品软件 | 日韩av在线一区 | 国产精品任我爽爆在线播放 | 欧美性猛交乱大交 | 日韩一级片网址 | 欧美人与动欧交视频 | 99精品视频免费在线观看 | 国产精品久久久久久一区二区三区 | 国产精品视频免费看人鲁 | 久草中文在线视频 | 国产在线二区 | 久久精品国产一区二区三区不卡 | 亚洲精品久久午夜无码一区二区 | 爱情岛论坛亚洲线路一 | 亚洲精选网站 | 国产精品成人一区 | 国产一区二区三区四区在线观看 | 国产在线专区 | 狠狠干狠狠操 | 亚洲欧美一区二区三区在线 | 欧美高h| 91精品视频一区二区三区 | 高清毛片aaaaaaaaa片 | 国产日韩欧美中文 | 欧洲男女裸体无遮挡做爰 | 国产高潮又爽又刺激的视频免费 | 中文字幕第23页 | 一色屋精品视频在线观看 | 成年性生交大片免费看 | 性征服新婚少妇69xx | 日韩激情无码免费毛片 | 九九色九九 | 国产av熟女一区二区三区 | 婷婷天堂 | 在线观看特色大片免费视频 | 毛片基地黄久久久久久天堂 | 国产69精品久久久久999天美 | 午夜小视频在线免费观看 | 99re中文字幕 | 国产98在线传媒麻豆有限公司 | 国产精品国产三级国产普通话蜜臀 | 久草新免费 | jjzzjjzz欧美69巨大 | 亚洲欧美一区二区三区孕妇 | 成人做受视频试看60秒 | 免费在线一区二区 | 国产大片中文字幕在线观看 | 成人动漫免费观看 | 亚洲精品久久久久中文字幕欢迎你 | 免费啊v在线观看 | 日韩人妻无码精品无码中文字幕 | 好吊妞视频988gao免费软件 | 免费观看成人摸66m66 | 亚洲春色av无码专区在线播放 | 免费在线观看成人 | 围产精品久久久久久久 | 无人在线观看免费高清视频的优势 | 91精品国产色综合久久不卡粉嫩 | a在线免费| 91丨九色丨黑人外教 | 欧美午夜精品久久久久久人妖 | 黄色小毛片 | 特黄性暴力强在线线播放 | 免费看欧美片 | 亚洲精品无码午夜福利中文字幕 | 久久久精品福利 | 日韩av三级在线 | 绿帽在线观看99av | 亚洲欧美精品久久 | 国产美女明星三级做爰 | 老妇肥熟凸凹丰满刺激 | 精品成人av | 亚洲鲁鲁| 亚洲欧洲中文日韩久久av乱码 | 欧美xxxxhd| 99精品欧美一区二区 | 无限看片在线版免费视频大全 | 久久久久久免费视频 | 国产人妻精品久久久久野外 | av黄色一区 | 伊人久久噜噜噜躁狠狠躁 | 国产一级精品视频 | 吃奶呻吟打开双腿做受在线视频 | 加勒比无码一区二区三区 | 欧美99精品 | 亚洲人成色777777老人头 | 性一交一乱一乱一视频 | 久久女性裸体无遮挡啪啪 | 国产色视频一区二区三区 | 999久久久国产精品 国产精品视频全国免费观看 | av全黄| 天天弄| 精品国产99| 久热国产精品 | 日韩毛片免费在线观看 | 欧美精品一 | 国产精品88久久久久久妇女 | 天海翼av在线| 色综合视频一区二区三区 | 尤物av午夜精品一区二区入口 | 久久无码精品一区二区三区 | 欧美极品少妇xxxxⅹ裸体艺术 | 一级色毛片 | 亚洲国产精品久久久久久久 | 亚洲人成网站色7799 | 大波大胸video巨乳日本 | 男女野外做受全过程 | 偷拍一区二区三区在线婷婷 | 处破女处破av | 免费无码又爽又黄又刺激网站 | 色欲综合视频天天天 | 国产精品欧美综合亚洲 | 欧美最猛黑人xxxx黑人猛交98 | 操操操干干干 | 天天爽夜夜爽夜夜爽 | 国产精品区在线 | 国产精品igao为爱做激情 | 国产伦a视频 | 成在线人免费无码高潮喷水 | 亚洲精品国产精品乱码不99 | 各种高潮超清特写tv | 亚洲综合网址 | 中文有码在线观看 | 久久无码av三级 | 国产精品videosex极品 | 精品一区二区久久久久久久网站 | 亚洲国产精品久久精品 | 欧美日本精品一区二区三区 | 国产精品永久在线观看 | 一本大道久久a久久精品综合1 | 视频一区二区三区在线 | 一a一片一级一片啪啪 | 亚洲影院中文字幕 | 国产精品久线在线观看 | 亚洲国产精品美女 | 国产精品久久久国产盗摄 | 岛国一区二区 | 日韩精品人成在线播放 | 伊人九九九有限公司 | 日本在线免费观看 | 国产无毛片 | 202丰满熟女妇大 | 欧美少妇在线 | 国产精品一区二区在线观看网站 | 欧美日韩性 | 免费人成网站在线观看欧美高清 | 色欲麻豆国产福利精品 | 永久免费观看片在线现看 | 欧美最猛黑人xxxx黑人猛交98 | 99爱在线 | 免费在线观看av的网站 | 久久成人久久 | 嫩草在线视频 | 五月天中文字幕mv在线 | 波多野结衣喷潮 | 国产国产精品人在线观看 | 波多中文字幕 | 亚洲性激情 | 18禁毛片无遮挡嫩草视频 | 免费在线精品视频 | 欧美日韩三 | 亚洲欧美另类中文字幕 | 你懂的视频在线播放 | 777在线视频 | 91精品国产高清一区二区三密臀 | 爱情岛亚洲论坛入口福利 | 日本美女色视频 | 少妇又紧又色又爽又刺激的视频 | 亚州激情视频 | 丰满放荡岳乱妇91www | 久久久久99精品久久久久 | 亚洲 欧美 国产 制服 动漫 | 久久久久香蕉国产线看观看伊 | 高清国产亚洲精品自在久久 | 欧美性猛交xx乱大交 | 国产九色在线 | 国产一区二区网站 | 97精品一区二区视频在线观看 | 日本最新偷拍小便视频 | 精品国产一区二区三区四区四 | 无码欧美毛片一区二区三 | 国精品人妻无码一区免费视频电影 | 亚欧色视频 | 精品国产第一国产综合精品 | 日本少妇毛茸茸高潮 | 国产精品久久久久久人妻 | 亚洲影院中文字幕 | 亚洲精品白浆高清久久久久久 | www.色人阁.com| 亚洲va中文在线播放免费 | 日本成人在线免费观看 | 中文字幕在线亚洲精品 | 国产日韩在线播放 | 成人性生交大片免费看r老牛网站 | 越南少妇做受xxx片 越南性xxxx精品hd | 亚洲91在线视频 | 欧美国产日韩久久mv | 东京热加勒比无码少妇 | 色哟哟视频在线 | 伊人久久精品视频 | 久久99久久久久 | 多p混交群体交乱在线观看 多男一女一级淫片免费播放口 | caoprom超碰 | 成人秘密在线观看 | 亚洲h在线播放在线观看h | 污污视频免费网站 | 精品国产乱码久久久久久久软件 | 中文字幕av无码一区二区三区电影 | 91尤物视频在线观看 | 色老头在线一区二区三区 | 99免费观看 | 国产av一区二区三区无码野战 | 林由奈在线观看 | 国外亚洲成av人片在线观看 | 久久一级黄色片 | 精品1区2区 | 亚洲日本中文字幕天天更新 | 国产不卡视频一区二区三区 | 青青草原综合久久大伊人精品 | 精品国产91久久久久久 | 失禁大喷潮在线播放 | 女同av国产亚洲片bbb及 | 国产99久久久国产精品潘金 | 一级做性色α爱片久久毛片色 | 国内精品视频一区二区三区 | 黄色九九 | 麻豆乱淫一区二区三区 | 欧美成片vs欧美 | 超碰97在线免费 | 成人在线免费播放 | 亚洲欧洲av综合色无码 | 精品国产乱码久久久久久夜甘婷婷 | 无码av一区二区三区无码 | 中文字幕午夜 | 992tv人人草 992tv又爽又黄的免费视频 | 国产激情一区二区三区四区 | 狠狠躁夜夜躁人人爽天天 | 欧美成人精品第一区二区三区 | 国产对白videos麻豆高潮 | 国产免费xoxo在线视频 | 国产精品久久二区 | 色婷婷久久一区二区三区麻豆 | 九色在线 | 1024国产精品 | 嫩b人妻精品一区二区三区 色噜噜亚洲男人的天堂 | 激情久久av一区av二区av三区 | 91中文在线观看 | 久草在线资源福利 | 91在线播| 成年人视频网 | 日韩精品无码一本二本三本色 | 国产性色av免费观看 | 免费gogo少妇大尺寸视频 | 狠狠操狠狠爱 | 毛片无码一区二区三区a片视频 | 东京热一区二区三区无码视频 | 手机av在线免费观看 | 欧美大片一区二区 | 99热6这里只有精品 99热99re6国产在线播放 | 久久久久久一区二区三区 | 一级做a爱高潮免费视频 | 成人免费色视频 | 高清乱码毛片入口 | 中国老妇淫片bbb | 国产视频一区二区在线播放 | 99久久中文字幕三级久久日本 | 国产同性女女互磨在线播放 | 超碰影院在线观看 | 中文字幕精品久久久乱码乱码 | 久久久综合网 | 蜜桃成熟时李丽珍在线观看 | 中文字幕丝袜精品久久 | 黄色av免费在线播放 | 成人一区二区三区四区 | 三级全黄视频 | 精品一区二区三区四区五区六区 | 国产情侣一区二区三区 | julia一区二区| 亚洲狠狠丁香综合一区 | 国产精品99蜜臀久久不卡二区 | 亚洲免费在线观看av | 亚洲女人天堂av | 欧洲av无码放荡人妇网站 | www.伊人| 日日天日日夜日日摸天天 | 午夜视频在线观看一区二区 | 亚洲熟妇无码一区二区三区导航 | 人成午夜免费视频在线观看 | 国产黄a三级三级三级av在线看 | 上原亚衣加勒比在线播放 | videosex抽搐痉挛高潮 | 婷婷五月情 | 刺激鲁cijilu在线观看 | 中文字幕丰满伦孑 | 最新av在线| 国偷自产av一区二区三区 | 免费观看久久久 | 中文字幕+乱码+中文乱码91 | 日韩69永久免费视频 | 亚洲另类欧美综合久久图片区 |