两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的方法和系統(tǒng)的制作方法

文檔序號:6576399閱讀:306來源:國知局
專利名稱:一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的方法和系統(tǒng)的制作方法
技術領域
本發(fā)明涉及計算機技術領域,更具體地說,涉及一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū) 動1394設備的方法和系統(tǒng)。
背景技術
IEEE (Institute of Electrical and Electronics Engineers,美國電氣禾口電子 工程師協(xié)會)1394是由蘋果(APPLE)公司提出的一種高速串行接口標準,蘋果公司稱之 為FireWire (火線),索尼(Sony)稱之為i. Link,德州儀器(Texas Instruments)稱之為 Lynx。1995 年,IEEE 制定并頒布了 IEEE 1394-1995 標準,并在 2000 年推出了 IEEE 1394A 標準,可以支持100Mbps、200Mbps和400Mbps的傳輸速率。在最新的IEEE1394B標準中,支 持的傳輸速率提高到了 800Mbps、1. 6Gbps和3. 2Gbps。IEEE1394總線除了傳輸速率高外,還具有接口簡單,使用方便,良好的兼容性和可 升級性等優(yōu)點,并且可以獨立于主機,支持點到點的連接,各個節(jié)點可以脫離主機自主執(zhí)行 事務。該標準自發(fā)布以來已經(jīng)得到了很多國內(nèi)外的知名IT廠商的關注和大力的支持,許多 廠商為了使該技術能夠廣泛應用和推廣,而設計出基于OHCI規(guī)范的鏈路層芯片,使得通過 CPU控制鏈路層芯片來實現(xiàn)點到點的數(shù)據(jù)交互成為一種可能。VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設計開發(fā)的一種嵌入式實時操 作系統(tǒng)(Real-Time Operating System,RT0S),是嵌入式開發(fā)環(huán)境的關鍵組成部分。其良好 的持續(xù)發(fā)展能力、高性能的內(nèi)核、高可靠性和卓越的實時性被廣泛應用在通信、軍事、航空、 航天等精尖技術及實時性要求極高的領域中。作為一個計算機系統(tǒng),不可避免的需要使用 外部1/0設備,正是1/0設備的驅(qū)動程序為其提供了可訪問性和可操作性。目前,Vxfforks 操作系統(tǒng)提供了對多種1/0設備驅(qū)動程序包括串口、并口、網(wǎng)卡、ATA等的支持,但是沒有提 供對具有1394標準接口的外部設備(簡稱1394設備)的驅(qū)動支持,而鑒于1394設備的應 用日益廣泛和諸多的優(yōu)越性,在VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備是非常有必要的。

發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有技術的不足和缺陷,提供一種在VxWorks操作系統(tǒng)中 實現(xiàn)驅(qū)動具有1394設備的方法和系統(tǒng)。為實現(xiàn)上述目的,本發(fā)明實施例提供了如下技術方案一種VxWorks操作系統(tǒng)中 實現(xiàn)驅(qū)動1394設備的方法,包括步驟a)初始化;b)中斷處理;c)使能DMA讀寫,接收和發(fā)送數(shù)據(jù)。所述a)初始化進一步包括步驟al)設置鏈路層寄存器和物理層寄存器,使寄存器處于準備狀態(tài);a2)初始化DMA接收描述符和DMA發(fā)送描述符;
4
a3)安裝中斷服務程序,通過設置鏈路層芯片的中斷屏蔽寄存器來使中斷打開;a4)軟復位總線,使能鏈路層。所述al)設置鏈路層寄存器和物理層寄存器,使寄存器處于準備狀態(tài)具體包括步 驟設置總線選項寄存器;設置主機控制器控制寄存器LPS位;設置節(jié)點標識和狀態(tài) 寄存器中的總線號;使能PostedWrites位;清除鏈路層控制寄存器;使能周期定時器和周 期控制器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自標識DMA ;設置配置ROM映射 寄存器并初始化ConfigROM ;獲得最大數(shù)據(jù)包的大小,單位為字節(jié);設置異步接收過濾寄存 器;設置字節(jié)交換。所述a2)初始化DMA接收描述符和DMA發(fā)送描述符具體包括步驟確定需要的發(fā)送描述符和接收描述符的個數(shù);為發(fā)送數(shù)據(jù)和接收數(shù)據(jù)分配內(nèi)存空間;初始化發(fā)送描述符鏈表和接收描述符鏈表;將每一個描述符鏈表的頭節(jié)點的地址賦值到相應的命令寄存器中,DMA控制器根 據(jù)寄存器中的地址來進行命令解析。所述為發(fā)送和接收數(shù)據(jù)分配內(nèi)存空間具體實現(xiàn)為一次性在物理內(nèi)存空間內(nèi)開辟 一段連續(xù)的空間,分別存儲發(fā)送和接收的數(shù)據(jù)包,所述連續(xù)空間劃分成若干相等的內(nèi)存塊。 發(fā)送緩沖區(qū)的單個內(nèi)存塊的大小是一個最大的數(shù)據(jù)包的大小,接收緩沖區(qū)的單個內(nèi)存塊大 小是一個最大的數(shù)據(jù)包的大小的整數(shù)倍,整個存儲空間是靜態(tài)的,在運行過程中不釋放。所述DMA的讀操作包括步驟接收數(shù)據(jù)包上下文處理任務接收到DMA的中斷產(chǎn)生 的信號后,在當前的接收描述符中查詢是否有數(shù)據(jù)包過來,并且判斷是否有跨描述符,然后 根據(jù)獲得的信息將接收數(shù)據(jù)包的地址和大小一起通過消息隊列的方式傳遞給解包任務。所述DMA的寫操作包括步驟應用程序?qū)⑿枰l(fā)送的數(shù)據(jù)包封裝好后,先將數(shù)據(jù) 包的信息放入到一個動態(tài)的鏈表中,然后依次從按照發(fā)送描述符的格式來插入到發(fā)送描述 符鏈表中,通過設置相應的寄存器來啟動DMA的發(fā)送,當發(fā)送第一個數(shù)據(jù)包完畢后會產(chǎn)生 一個發(fā)送完成中斷,在該中斷中會繼續(xù)從動態(tài)鏈表中獲取數(shù)據(jù)包插入到描述符鏈表中,直 到完成全部數(shù)據(jù)包的發(fā)送。所述中斷包括不可恢復性中斷,循環(huán)連續(xù)包中斷,總線復位中斷,請求發(fā)送完成 中斷,響應發(fā)送完成中斷,請求包中斷,響應包中斷,等時接收中斷,等時發(fā)送中斷和自標識 包中斷。一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的系統(tǒng),包括初始化單元,用于設置鏈路層芯片的相關寄存器和物理層寄存器的相關位,使處 于準備狀態(tài),初始化DMA接收描述符和DMA發(fā)送描述符;中斷處理單元,用于處理各類中斷;數(shù)據(jù)發(fā)送單元,以DMA方式發(fā)送數(shù)據(jù);數(shù)據(jù)接收單元,以DMA方式接收數(shù)據(jù)。
所述初始化單元進一步包括 寄存器初始化單元,用于設置總線選項寄存器;設置主機控制器控制寄存器中的 LPS位;設置節(jié)點標識和狀態(tài)寄存器中的總線號;使能PostedWrites位;清除鏈路層控制
5寄存器;使能周期定時器和周期控制器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自 標識DMA ;設置配置ROM映射寄存器并初始化ConfigROM ;獲得最大包的大小,單位為字節(jié); 設置異步接收過濾寄存器;設置字節(jié)交換;內(nèi)存分配單元,用于一次性在物理內(nèi)存空間內(nèi)開辟一段連續(xù)的空間,分別存儲發(fā) 送和接收的數(shù)據(jù)包,所述連續(xù)空間劃分成若干相等的內(nèi)存塊;DMA描述符初始化單元,用于初始化DMA發(fā)送描述符鏈表和DMA接收描述符鏈表;中斷掛接單元,用于掛接中斷服務程序??梢姡c現(xiàn)有技術相比,本發(fā)明實施例提供的技術方案,實現(xiàn)了在VxWorks操作系 統(tǒng)中驅(qū)動1394設備。


圖1為IEEE 1394硬件拓撲結(jié)構示意圖;圖2為IEEE 1394協(xié)議棧結(jié)構示意圖;圖3為IEEE 1394驅(qū)動架構示意圖;圖4為IEEE 1394B兩個設備之間的數(shù)據(jù)包流向圖;圖5為本發(fā)明實施例提供的一種內(nèi)存空間分配示意圖;圖6為本發(fā)明實施例DMA接收描述符鏈表結(jié)構示意圖;圖7為本發(fā)明實施例數(shù)據(jù)包接收數(shù)據(jù)流示意圖;圖8為本發(fā)明實施例DMA發(fā)送描述符鏈表結(jié)構示意圖;圖9為本發(fā)明實施例數(shù)據(jù)包發(fā)送數(shù)據(jù)流示意圖;圖10為本發(fā)明實施例提供的一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的方法 流程圖;圖11為本發(fā)明實施例提供的一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的系統(tǒng) 結(jié)構示意圖。
具體實施例方式下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,本發(fā)明實施例以在VxWorks操 作系統(tǒng)中驅(qū)動具有1394標準接口的外部設備,特別是以驅(qū)動德州儀器(Tl)公司推出的 OHCI (Open Host Controller Interface)鏈路層芯片和物理層芯片為例來詳細說明。1394總線的拓撲結(jié)構是一個樹形的結(jié)構,樹形結(jié)構就是所有連接在一起的設備不 能形成一個環(huán)(圈),否則就不能正常地工作,但是IEEE 1394B提出了一個避免環(huán)狀結(jié)構的 方法,即使設備連接形成一個環(huán)(圈)也能正常工作。請參閱圖1所示,圖1為IEEE 1394B總線硬件拓撲結(jié)構。一個IEEE1394系統(tǒng)由 眾多可尋址的節(jié)點(node)組成,節(jié)點(node)是一個1394網(wǎng)絡中的基本組成單位。請參閱圖2所示,圖2為IEEE1394協(xié)議棧結(jié)構示意圖。IEEE 1394標準定義了三 個基本協(xié)議層,分別是事務層,鏈路層,物理層,用于在請求者和響應者之間的數(shù)據(jù)傳輸過 程中完成相關的服務,后來新增加了總線管理層和應用層,每層負責完成自己的服務。本發(fā) 明實施例是基于鏈路層中的異步傳輸模式來實現(xiàn)驅(qū)動的。請參閱圖3所示,圖3為IEEE1394B驅(qū)動架構示意圖,本發(fā)明實施例驅(qū)動只實現(xiàn)了協(xié)議棧中的數(shù)據(jù)鏈路層,提供了一些應用程序接口函數(shù)給用戶,可以直接在應用層上調(diào)用 該接口函數(shù)來進行數(shù)據(jù)包的DMA傳送,將數(shù)據(jù)通過物理層和傳輸線纜到達接收的節(jié)點。請參閱圖4所示,圖4為IEEE 1394B兩個設備之間的數(shù)據(jù)包流向圖,在點對點的 數(shù)據(jù)傳輸中,節(jié)點一(發(fā)送端設備)中由應用程序來進行發(fā)起一個請求包,通過發(fā)送端的 DMA經(jīng)由1394的線纜傳送到節(jié)點二(接收端設備),節(jié)點二通過接收DMA接收到數(shù)據(jù)包后 傳遞給接收任務,接收任務根據(jù)包格式解包后發(fā)送一個響應數(shù)據(jù)包,通過其發(fā)送DMA經(jīng)由 1394線纜傳送到節(jié)點一,然后節(jié)點一的接收DMA接收到響應數(shù)據(jù)包后傳遞給接收任務,這 樣完成了 一次數(shù)據(jù)交互的過程。數(shù)據(jù)鏈路層主要實現(xiàn)了接收DMA和發(fā)送DMA的數(shù)據(jù)描述符鏈表,該鏈表在內(nèi)存中 被維護,通過該鏈表和DMA控制器進行通訊。請參閱圖5所示,本發(fā)明采用統(tǒng)一的內(nèi)存分配方案,即在初始化過程中,在物理內(nèi) 存中開辟一段連續(xù)的空間,分別存儲發(fā)送和接收的數(shù)據(jù)包。整個存儲空間為靜態(tài)的,在運行 過程中不釋放。用于發(fā)送數(shù)據(jù)包的單個內(nèi)存塊的大小是一個最大的數(shù)據(jù)包的大小,用于接 收數(shù)據(jù)包的單個內(nèi)存塊大小是一個最大的數(shù)據(jù)包的大小的整數(shù)倍。目前,1394 OHCI (Open Host Controller Interface,開放式主機控制接口協(xié) 議)支持7種DMA (Direct Memory Access,直接內(nèi)存訪問)類型,每種DMA類型都有自己 的寄存器空間,并且至少支持一個“邏輯數(shù)據(jù)流上下文(Context)”,即DMA通道。每個DMA 通道由一個DMA上下文鏈表(Context program)和另外兩個寄存器上下文控制寄存器 (ContextControl register)和命令地址寄存器(CommandPtr register)組成。上下文鏈 表是指DMA描述符鏈表,這個鏈表位于主內(nèi)存中。描述符鏈表中的每個描述符定義了待傳 輸?shù)臄?shù)據(jù)包格式和控制信息,并由相應的DMA控制器將數(shù)據(jù)放入對應的FIFO (First Input First Output,先進先出)數(shù)據(jù)緩存器中,然后發(fā)出中斷請求。上下文控制寄存器可以控制 DMA的開始和結(jié)束,并返回傳輸狀態(tài);命令地址寄存器用來保存描述符鏈表的開始地址以 及描述符的個數(shù)。為了滿足驅(qū)動程序高效操作和實現(xiàn)的需要,本發(fā)明實施例定義了如下的幾個數(shù)據(jù) 結(jié)構

};DMA發(fā)送描述符結(jié)構體(AT_DMA_PRG)struct at_dma_prg{struct dma_cmd begin ; /* 起始命令描述符,16 字節(jié) */quadlet_t data[4] ; /* 用來存放數(shù)據(jù)包頭 */
DMA接收描述符結(jié)構體(DMA_CMD) struct dma cmd
u32 control ; u32 address ; u32 branchAddress u32 status ;
命令描述符的控制位,32位*/ 數(shù)據(jù)緩沖區(qū)的地址,32位*/ 下一個描述符的地址,32位*/ 狀態(tài)位,32位*/
7
struct dma_cmd end ; /* 結(jié)束命令描述符,16 字節(jié) */quadlet_t pad[4] ;/*需要時用來填充,保證是16字節(jié)對齊*/};DMA接收上下文結(jié)構體(DMA_RCV_CTX)struct dma_rcv_ctx{struct ti_ohci*ohci ;enum context_type type ;/*上下文的類型,是否是異步還是同步*/int ctx ;/*是否是請求上下文還是響應上下文*/unsigned int num_desc ;/氺接收描述符的個數(shù)氺/unsigned int buf_size ;/*用來存放單個DMA接收緩沖區(qū)的大小*/unsigned int split_buf_size ;/*分離的數(shù)據(jù)包緩沖區(qū)分配的大小*/struct dma_cmd#prg_cpu ;/*用來存放指定個數(shù)的接收描述符的首地址 */dma_addr_t氺prg_bus ;quadlet_t#buf_cpu ; /*用來存放第一個單內(nèi)存塊的首地址*/quadlet_t*split_buf ;/*分離包的緩沖區(qū),最大數(shù)據(jù)包的大小,當出現(xiàn)跨描述符時,將分布在兩個描述符對應的接收緩沖區(qū)的數(shù)據(jù)包整合到該內(nèi)存塊中進行處理*/int length ;/*用來存放當前的DMA接收緩沖區(qū)中有效的數(shù)據(jù)的長度*/unsigned int buf_ind ; /*當前的DMA接收描述符的序號*/unsigned int buf_offset ;/*用來存放當前的DMA接收描述符中的有效數(shù)據(jù)的地址偏移量*/quadlet_t*spb ;spinlock_tlock ;int ctrlClear ;/*存放異步接收上下文控制清除寄存器偏移量,通過該數(shù)值 可以用來訪問異步接收上下文控制清除寄存器,可用于停止接收DMA*/int ctrlSet ;/*異步接收上下文控制設置寄存器偏移量,通過該數(shù)值可以用 來訪問異步接收上下文控制設置寄存器,可用于啟動接收DMA*/int cmdPtr ;/*命令指針寄存器偏移量,通過該數(shù)值可以用來訪問命令指針 寄存器,命令指針寄存器存放了第一個有效的接收描述符的地址,通知DMA從該描述符對 應的緩沖區(qū)開始接收數(shù)據(jù)包*/int CtxtMatCh ;};DMA發(fā)送上下文結(jié)構體(DMA_TRM_CTX)struct dma_trm_ctx{struct ti_ohci*ohci ;
enum context_type type ;int ctx ;unsigned int num_desc ; /*用于發(fā)送描述符的個數(shù)*/struct at_dma_prg#prg_cpu ;/*用于保存第一個發(fā)送描述符的內(nèi)存地址 */unsigned int prg_ind ;/*用來記錄當前的描述符的序號*/unsigned int sent_ind ;int free_prgs ;/*空閑的描述符的個數(shù),如果不為0則表示
可以用來發(fā)送數(shù)據(jù)包,如果為0,則不能發(fā)送quadlet_t*branchAddrPtr ;/*用來保存下一個描述符的地址*/struct list_head fifo_list ; /* 一個雙向鏈表,用來鏈接需要發(fā)送的 數(shù)據(jù)包 */struct list_head pending_list ;/* —個雙向鏈表,用來鏈接未發(fā)送的數(shù)據(jù)包 */spinlock_t lock ;int ctrlClear ;/*存放異步發(fā)送上下文控制清除寄存器偏移量,通過該數(shù) 值可以用來訪問異步發(fā)送上下文控制清除寄存器,可用于停止發(fā)送DMA*/int ctrlSet ;/*異步發(fā)送上下文控制設置寄存器偏移量,通過該數(shù)值可以 用來訪問異步發(fā)送上下文控制設置寄存器,可用于啟動發(fā)送DMA*/int cmdPtr ;/*命令指針寄存器偏移量,通過該數(shù)值可以用來訪問命令指針
寄存器,命令指針寄存器存放了第一個有效的發(fā)送描述符的地址,當異步發(fā)送上下文控制 設置寄存器后,DMA將從該描述符開始解析并發(fā)送數(shù)據(jù)包*/};
描述1394 OHCI的結(jié)構體 (TI_0HCI)
struct ti_ohci
{
enum
{
0HCI__INIT_ALL0C_H0ST,
0HCI__INIT__HAVE_MEM_REGION,
0HCI__INIT__HAVE_IOMAPPING,
OHCIINITHAVE CONFIG ROM BUFFER,
0HCI__INIT__HAVE_SELFID_BUFFER,
0HCI__INIT__HAVE_TXRX_BUFFERS_MAYBE,
0HCI__INIT__HAVE_IRQ,
0HCI__INIT__D0NE,
9氺
0138]
0139]
0140]
}init_state ; void氺registers ; quadlet_t*selfid_buf_cpu ;
自標識數(shù)據(jù)包的存放內(nèi)存地址
quadlet_t*csr_config—rom—cpu ; int csr_config—rom—length ; unsigned int max_packet_siζe ; struct dma_rcv_ctx ar_resp_context struct dma_rcv_ctx ar—req—context ; struct dma—trm—ctx at_resp_context struct dma—trm—ctx at—req—context ; struct hpsb—host氺host ; int phyid, isroot ; spinlock—t phy—reg—lock ; spinlock—t event_lock ; int self—id—errors ; unsigned int selfid—swap:1 ; unsigned int no_swap_incoming:1 ; unsigned int check—busreset:1 ;
最大數(shù)據(jù)包的大小*/ ~異步接收響應上下文結(jié)構體*/ ^異步接收請求上下文結(jié)構體*/ 異步發(fā)送響應上下文結(jié)構體*/ 異步發(fā)送請求上下文結(jié)構體*/
0141]
0142]
0143]
0144]
0145]
0146]
0147]
0148]
0149]
0150]
0151]
0152]
0153]
0154]
0155]
0156]};
0157]請參閱圖6所示,圖6為DMA接收描述符鏈表結(jié)構。圖中接收DMA描述符指針(prg_ cpu)用于保存在初始化時由用戶來動態(tài)分配的指定個數(shù)的DMA接收描述符中的第一個描 述符的地址。描述符指針0(prg_cpU
)、描述符指針1 (prg_Cpu[l])、描述符指針2(prg_ cpu [2])、描述符指針3 (prg_cpu [3])到描述符指針N (prg_cpu [N])用于保存動態(tài)分配的每 個描述符的地址。所述控制位(Control),接收緩沖區(qū)地址(Data Address),下一個描述符地址 (Branch Addres)以及狀態(tài)位(Status)組成的一個塊在數(shù)據(jù)結(jié)構上構成一個DMA_CMD結(jié)構 體。需要說明的是,下一個描述符地址(BranchAddress)里面包含了兩部分,一部分是下一 個描述符的地址,一部分是一個4比特的標志位。該標志位用來標識該下一個描述符是否 有效。如果是1則為有效,如果是0則為無效,且表示結(jié)束。第一個描述符中的BanchAddress變量存放了下一個描述符的地址并且該標志位 為1,第二個描述符的BranchAddress變量存放了第三個描述符的地址,并且設置該標志位 為1,依次類推,直到最后一個描述符,最后一個描述符的BranchAddress變量存放了第一 個描述符的地址,但是該標志位為0,表示結(jié)束,這樣形成了一個環(huán)鏈。接收緩沖區(qū)指針(buf_Cpu)用于保存初始化時由用戶分配的指定個數(shù)的DMA接收 緩沖區(qū)的第一個緩沖區(qū)的地址,接收緩沖區(qū)指針0(buf_Cpu
)、接收緩沖區(qū)指針l(buf_ 。 11[1])、接收緩沖區(qū)指針2(1^_叩11[2])到接收緩沖區(qū)指針N(buf_Cpu[N])保存了每一個 DMA接收描述符對應的接收緩沖區(qū)的地址。以上分配好之后,將第一個描述符的地址存放到異步接收命令指針寄存器中,異
10步接收DMA將會從該描述符來執(zhí)行相關操作。當異步接收上下文設置寄存器的DMA啟動位 置位后,那么DMA接收機制將啟動,只要有數(shù)據(jù)包從線纜上發(fā)送過來,該DMA接收控制器就 把數(shù)據(jù)存放到指定的接收緩沖區(qū)。請參閱圖7所示,圖7為數(shù)據(jù)包接收流程示意圖。圖中實線表示一次實際的操作, 而虛線代表依次將要發(fā)生的操作。每個內(nèi)存塊的大小是數(shù)據(jù)包的整數(shù)倍。從內(nèi)存塊1到N 的數(shù)據(jù)包地址和長度通過消息隊列的方式傳遞給解析數(shù)據(jù)包任務。接收數(shù)據(jù)包的流程包括 步驟接收數(shù)據(jù)包時,接收數(shù)據(jù)包上下文處理任務接收到DMA的中斷產(chǎn)生的信號后,在當前 的接收描述符中查詢是否有數(shù)據(jù)包過來,并且判斷是否有跨描述符,然后根據(jù)獲得的信息 將接收數(shù)據(jù)包的地址和大小一起通過消息隊列的方式(Vxworks系統(tǒng)中的功能)傳遞給解 析數(shù)據(jù)包任務,接收的數(shù)據(jù)會依次放在如圖5中的靜態(tài)內(nèi)存中。本發(fā)明實施例中,因為數(shù)據(jù)包的大小可能是不確定的,但是每一個描述符對應的 接收緩沖區(qū)(也就是分配好的內(nèi)存中的某一塊)有可能不是剛好裝滿剩余的空間,那么就 需要使用下一個描述符對應的緩沖區(qū)來存放數(shù)據(jù)包的另一部分。本發(fā)明實施例中,每一個 描述符對應的接收緩沖區(qū)在內(nèi)存中是連續(xù)的,但是緩沖區(qū)長度是有限的,最終總會到末尾, 如果在末尾發(fā)生跨描述符的情況,將會導致接收的數(shù)據(jù)包在內(nèi)存中不完整,需要判斷后手 動從最后一個描述符號和第一個描述符中的緩沖區(qū)中根據(jù)指定的包的大小將這個數(shù)據(jù)包 整合在一起就可以了。最后一個描述符號對應的緩沖區(qū)用完了將使用第一個接收緩沖區(qū), DMA自動使用哪一個描述符是由描述符中的狀態(tài)標識來判斷的。舉例說明,假設接收到了一 個新的數(shù)據(jù)包,長度是9字節(jié),它應該存放到當前的描述符指向的接收緩沖區(qū)。但是當前的 描述符對應的緩沖區(qū)中由于上一次接收了數(shù)據(jù)包而只剩下空閑的5個字節(jié),此時,當前的 描述符對應的緩沖區(qū)接收完后需要使用下一個描述符對應的接收緩沖區(qū)的4字節(jié)。請參閱圖8所示,圖8為DMA發(fā)送描述符鏈表結(jié)構。圖8中的發(fā)送描述符鏈表由 單個的發(fā)送描述符組成,根據(jù)需要和實際的情況來選擇鏈表節(jié)點的個數(shù)。單個的發(fā)送描述 符結(jié)構符合AT_DMA_PRG結(jié)構體。圖中發(fā)送DMA描述符指針(prg_Cpu)用于保存在初始化 時由用戶來動態(tài)分配的指定個數(shù)的DMA發(fā)送描述符中的第一個描述符的地址。發(fā)送描述符 指針0(prg_cpu
)、發(fā)送描述符指針1 (prg_Cpu[l])、發(fā)送描述符指針2(prg_CpU[2])、發(fā) 送描述符指針3(prg_CpU[3])到發(fā)送描述符指針N(prg_CpU[N])保存了動態(tài)分配的每個描 述符的地址。需要進一步說明的是,圖8中的“下一個描述符”的地址一欄中,包含了最低的4個 比特位數(shù)值,稱之為Z,用來表示發(fā)送所需要的16字節(jié)的命令塊數(shù)值。由OHCI規(guī)范可知,帶 有*_Immdiate的描述符Z值為2,其它的描述符的Z為1,這樣可以得知,如果帶有數(shù)據(jù)負 載,則Z值為3,否則為2。發(fā)送DMA可以知道當前的數(shù)據(jù)包需要使用的16字節(jié)的命令塊的 個數(shù)來決定是否發(fā)送完畢。以上分配好之后,就可以用來發(fā)送數(shù)據(jù)包。請參閱圖9所示,圖9為數(shù)據(jù)包發(fā)送流程示意圖。圖中實線表示一次實際的操作, 而虛線代表依次將要發(fā)生的操作。每個內(nèi)存塊的大小是數(shù)據(jù)包的整數(shù)倍。發(fā)送數(shù)據(jù)包的流 程包括步驟首先進行應用程序組包,把需要發(fā)送的數(shù)據(jù)包按照標準的格式填充好,驅(qū)動程序 會將該數(shù)據(jù)包先掛到一個雙向鏈表中。如果數(shù)據(jù)包很多,將依次往后排列。然后判斷是否
11有空閑描述符號來決定是否繼續(xù)發(fā)送該數(shù)據(jù)包,如果有則先用現(xiàn)有的描述符來發(fā)送可以發(fā) 送的數(shù)據(jù)包,如果沒有則等待,直到發(fā)送完成中斷產(chǎn)生后將會有空閑的發(fā)送描述符。然后依 次從待發(fā)送的雙向鏈表中取數(shù)據(jù)包來插入到發(fā)送描述符中啟動發(fā)送DMA進行發(fā)送,直到發(fā) 送完畢。本發(fā)明實施例中,使用三種命令描述符進行插包,和接收數(shù)據(jù)包不同。如果是沒有 負載(數(shù)據(jù)內(nèi)容)的數(shù)據(jù)包,則使用OUTPUT_LAST_Immdiate描述符,如果是有負載(只有 包頭)的數(shù)據(jù)包,則使用0UTPUT_M0RE_Immdiate描述符和0UTPUT_LAST描述符,完成將每 一個數(shù)據(jù)包插入到發(fā)送描述符鏈表中。然后通過設置異步發(fā)送上下文設置寄存器中的相關 位來啟動DMA發(fā)送。請參閱圖10所示,圖10為本發(fā)明實施例提供的一種初始化方法流程圖,包括步 驟步驟1001 設置鏈路層芯片的相關寄存器和物理層寄存器的相關位,使處于準備 狀態(tài),具體包括以下步驟設置Bus options (總線選項)寄存器;設置主機控制器控制(HCControl)寄存器中的LPS位,LPS稱之為連接電源狀態(tài), 是HCControl寄存器中的一個控制位,該位是用來使能鏈路層芯片和物理層芯片之間連接 的一個控制位,使能以后,可以通過鏈路層芯片來執(zhí)行物理層的讀和寫操作,否則,鏈路層 將不能執(zhí)行物理層的讀寫操作;設置Node indentif ication and status (節(jié)點標識和狀態(tài))寄存器中的總線號; 使能PostedWrites (通告寫,是指在數(shù)據(jù)寫到主機內(nèi)存之前發(fā)送一個應答信號)位;清除鏈路層控制寄存器;使能周期定時器和周期控制器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自標識DMA ;設置Configuration ROM mapping (配置 ROM 映射)寄存器并初始化 Configrom ;獲得最大包的大小,單位為字節(jié);設置異步接收過濾寄存器;設置字節(jié)交換。步驟1002 初始化DMA接收描述符和DMA發(fā)送描述符;具體包括具體步驟確定所需要的發(fā)送描述符和接收描述符的個數(shù),根據(jù)自己需要來設置;為發(fā)送和接收數(shù)據(jù)分配內(nèi)存空間;初始化發(fā)送和接收描述符鏈表;將每一個描述符鏈表的頭節(jié)點的地址賦值到相應的命令寄存器中,DMA控制器根 據(jù)寄存器中的地址來進行命令解析。步驟1003 安裝中斷服務程序,通過設置鏈路層芯片的中斷屏蔽寄存器來使中斷 打開;需要說明的是,本發(fā)明實施例中是通過VxWorks操作系統(tǒng)的API (AppIication Programming Interface,應用程序接口)函數(shù)來安裝,通過設置IntMask(中斷屏蔽)寄存 器來設置所需要的中斷位。
12
本發(fā)明實施例中,DMA數(shù)據(jù)的接收和發(fā)送都需要對CPU申請中斷來告訴程序的當 前狀態(tài),系統(tǒng)處理的效率也可以體現(xiàn)在該中斷處理函數(shù)中。當系統(tǒng)需要進入中斷時,通過讀 取中斷事件寄存器,判斷是哪種類型的中斷,本發(fā)明實施例中出現(xiàn)的中斷類型包括但不局 限于不可恢復性中斷,循環(huán)連續(xù)包中斷,總線復位中斷,請求發(fā)送完成中斷,響應發(fā)送完成 中斷,請求包中斷,響應包中斷,等時接收中斷,等時發(fā)送中斷,自標識包中斷等,如果有上 述類型的中斷發(fā)生,則首先清楚對應的中斷標識位,然后處理該中斷。步驟1004 軟復位總線,使能鏈路層;需要說明的是,軟復位總線,通過寫物理寄存器的相關位來完成,使能鏈路層通過 設置HCControl寄存器來完成。根據(jù)上述的方法,本發(fā)明實施例還提供了一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394 設備的系統(tǒng),如圖11所示,系統(tǒng)包括初始化單元1101,用于設置鏈路層芯片的相關寄存器和物理層寄存器的相關位, 使處于準備狀態(tài),初始化DMA接收描述符和DMA發(fā)送描述符;本發(fā)明實施例中,所述初始化單元1101進一步包括寄存器初始化單元11011,用于設置Bus options (總線選項)寄存器;設置 HCControl (主機控制器控制)寄存器中的LPS位,LPS稱之為連接電源狀態(tài),是HCControl 寄存器中的一個控制位,該位是用來使能鏈路層芯片和物理層芯片之間連接的一個控制 位,使能以后,可以通過鏈路層芯片來執(zhí)行物理層的讀和寫操作,否則,鏈路層將不能執(zhí)行 物理層的讀寫操作;設置Node indentification and status (節(jié)點標識和狀態(tài))寄存器 中的總線號;使能PostedWrites位;清除鏈路層控制寄存器;使能周期定時器和周期控制 器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自標識DMA ;設置Configuration ROM mapping (配置ROM映射)寄存器并初始化Configrom ;獲得最大包的大小,單位為字節(jié);設 置異步接收過濾寄存器;設置字節(jié)交換。內(nèi)存分配單元11012,一次性在物理內(nèi)存空間內(nèi)開辟一段連續(xù)的空間,分別存儲發(fā) 送和接收的數(shù)據(jù)包,所述連續(xù)空間劃分成若干相等的內(nèi)存塊。發(fā)送緩沖區(qū)的單個內(nèi)存塊的 大小是一個最大的數(shù)據(jù)包的大小,接收緩沖區(qū)的單個內(nèi)存塊大小是一個最大的數(shù)據(jù)包的大 小的整數(shù)倍,整個存儲空間是靜態(tài)的,在運行過程中不釋放;DMA描述符初始化單元11013,用于初始化DMA發(fā)送描述符鏈表和DMA接收描述符 鏈表;中斷掛接單元11014,用于掛接中斷服務程序。進一步的,本系統(tǒng)還包括中斷處理單元1102,用于處理各類中斷;進一步的,本系統(tǒng)還包括數(shù)據(jù)發(fā)送單元1103,以DMA方式發(fā)送數(shù)據(jù);進一步的,本系統(tǒng)還包括數(shù)據(jù)接收單元1104,以DMA方式接收數(shù)據(jù)。需要說明的是,本發(fā)明實施例提供的各單元之間的連接關系是為了清楚的闡釋其 信息交互控制過程的需要,因此僅視為邏輯上的連接關系,而不應僅限于物理連接。通過上述系統(tǒng),本發(fā)明提供的實施例實現(xiàn)了在VxWorks操作系統(tǒng)中對1394設備的驅(qū)動。綜上所述,本發(fā)明實施例以TI (Texas Instrument)公司推出的OHCI鏈路層芯片 和物理層芯片為例,對本發(fā)明實施例的原理及實施方式進行了闡述。對于本技術領域人員 來說,通過本發(fā)明實施例提供的技術方案即可開發(fā)出其他獨立芯片的1394驅(qū)動程序。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明可借 助軟件加必需的硬件平臺的方式來實現(xiàn),當然也可以全部通過硬件來實施,但很多情況下 前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案對背景技術做出貢獻的全部 或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如 ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務 器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。本發(fā)明實施例應用了具體的實施例對本發(fā)明實施例的原理及實施方式進行了闡 述,以上實施例的說明只是用于幫助理解本發(fā)明實施例的方法及其核心思想;同時,對于本 領域的一般技術人員,依據(jù)本發(fā)明實施例的思想,在具體實施方式
及應用范圍上均會有改 變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明實施例的限制。
權利要求
一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的方法,其特征在于,包括步驟a)初始化;b)中斷處理;c)使能DMA讀寫,接收和發(fā)送數(shù)據(jù)。
2.根據(jù)權利要求1所述的方法,其特征在于,所述a)初始化進一步包括步驟al)設置鏈路層寄存器和物理層寄存器,使寄存器處于準備狀態(tài);a2)初始化DMA接收描述符和DMA發(fā)送描述符;a3)安裝中斷服務程序,通過設置鏈路層芯片的中斷屏蔽寄存器來使中斷打開;a4)軟復位總線,使能鏈路層。
3.根據(jù)權利要求2所述的方法,其特征在于,所述al)設置鏈路層寄存器和物理層寄存 器,使寄存器處于準備狀態(tài)具體包括步驟設置總線選項寄存器;設置主機控制器控制寄存器LPS位;設置節(jié)點標識和狀態(tài)寄存 器中的總線號;使能PostedWrites位;清除鏈路層控制寄存器;使能周期定時器和周期控 制器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自標識DMA ;設置配置ROM映射寄存 器并初始化ConfigROM ;獲得最大數(shù)據(jù)包的大小,單位為字節(jié);設置異步接收過濾寄存器; 設置字節(jié)交換。
4.根據(jù)權利要求2所述的方法,其特征在于,所述a2)初始化DMA接收描述符和DMA發(fā) 送描述符具體包括步驟確定需要的發(fā)送描述符和接收描述符的個數(shù);為發(fā)送數(shù)據(jù)和接收數(shù)據(jù)分配內(nèi)存空間;初始化發(fā)送描述符鏈表和接收描述符鏈表;將每一個描述符鏈表的頭節(jié)點的地址賦值到相應的命令寄存器中,DMA控制器根據(jù)寄 存器中的地址來進行命令解析。
5.根據(jù)權利要求4所述的方法,其特征在于,所述為發(fā)送和接收數(shù)據(jù)分配內(nèi)存空間具 體實現(xiàn)為一次性在物理內(nèi)存空間內(nèi)開辟一段連續(xù)的空間,分別存儲發(fā)送和接收的數(shù)據(jù)包, 所述連續(xù)空間劃分成若干相等的內(nèi)存塊。發(fā)送緩沖區(qū)的單個內(nèi)存塊的大小是一個最大的數(shù) 據(jù)包的大小,接收緩沖區(qū)的單個內(nèi)存塊大小是一個最大的數(shù)據(jù)包的大小的整數(shù)倍,整個存 儲空間是靜態(tài)的,在運行過程中不釋放。
6.根據(jù)權利要求1所述的方法,其特征在于,所述DMA的讀操作包括步驟接收數(shù)據(jù)包 上下文處理任務接收到DMA的中斷產(chǎn)生的信號后,在當前的接收描述符中查詢是否有數(shù)據(jù) 包過來,并且判斷是否有跨描述符,然后根據(jù)獲得的信息將接收數(shù)據(jù)包的地址和大小一起 通過消息隊列的方式傳遞給解包任務。
7.根據(jù)權利要求1所述的方法,其特征在于,所述DMA的寫操作包括步驟應用程序?qū)?需要發(fā)送的數(shù)據(jù)包封裝好后,先將數(shù)據(jù)包的信息放入到一個動態(tài)的鏈表中,然后依次從按 照發(fā)送描述符的格式來插入到發(fā)送描述符鏈表中,通過設置相應的寄存器來啟動DMA的發(fā) 送,當發(fā)送第一個數(shù)據(jù)包完畢后會產(chǎn)生一個發(fā)送完成中斷,在該中斷中會繼續(xù)從動態(tài)鏈表 中獲取數(shù)據(jù)包插入到描述符鏈表中,直到完成全部數(shù)據(jù)包的發(fā)送。
8.根據(jù)權利要求1-7任一項所述的方法,其特征在于,所述中斷包括不可恢復性中 斷,循環(huán)連續(xù)包中斷,總線復位中斷,請求發(fā)送完成中斷,響應發(fā)送完成中斷,請求包中斷,響應包中斷,等時接收中斷,等時發(fā)送中斷和自標識包中斷。
9.一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的系統(tǒng),其特征在于,包括初始化單元,用于設置鏈路層芯片的相關寄存器和物理層寄存器的相關位,使處于準 備狀態(tài),初始化DMA接收描述符和DMA發(fā)送描述符; 中斷處理單元,用于處理各類中斷; 數(shù)據(jù)發(fā)送單元,以DMA方式發(fā)送數(shù)據(jù); 數(shù)據(jù)接收單元,以DMA方式接收數(shù)據(jù)。
10.根據(jù)權利要求9所述的系統(tǒng),其特征在于,所述初始化單元進一步包括寄存器初始化單元,用于設置總線選項寄存器;設置主機控制器控制寄存器中的LPS 位;設置節(jié)點標識和狀態(tài)寄存器中的總線號;使能PostedWrites位;清除鏈路層控制寄存 器;使能周期定時器和周期控制器;清除中斷寄存器;設置自標識DMA緩存區(qū)并使能自標識 DMA ;設置配置ROM映射寄存器并初始化ConfigROM ;獲得最大包的大小,單位為字節(jié);設置 異步接收過濾寄存器;設置字節(jié)交換;內(nèi)存分配單元,用于一次性在物理內(nèi)存空間內(nèi)開辟一段連續(xù)的空間,分別存儲發(fā)送和 接收的數(shù)據(jù)包,所述連續(xù)空間劃分成若干相等的內(nèi)存塊;DMA描述符初始化單元,用于初始化DMA發(fā)送描述符鏈表和DMA接收描述符鏈表; 中斷掛接單元,用于掛接中斷服務程序。
全文摘要
本發(fā)明提供了一種VxWorks操作系統(tǒng)中實現(xiàn)驅(qū)動1394設備的方法和系統(tǒng),其中方法包括步驟a)初始化;b)中斷處理;c)使能DMA讀寫,接收和發(fā)送數(shù)據(jù)。系統(tǒng)包括初始化單元,用于設置鏈路層芯片的相關寄存器和物理層寄存器的相關位,使處于準備狀態(tài),初始化DMA接收描述符和DMA發(fā)送描述符;中斷處理單元,用于處理各類中斷;數(shù)據(jù)發(fā)送單元,以DMA方式發(fā)送數(shù)據(jù);數(shù)據(jù)接收單元,以DMA方式接收數(shù)據(jù)。本發(fā)明實現(xiàn)了在VxWorks操作系統(tǒng)下驅(qū)動1394設備。
文檔編號G06F13/32GK101937406SQ20091010816
公開日2011年1月5日 申請日期2009年6月29日 優(yōu)先權日2009年6月29日
發(fā)明者匡堯文, 熊威, 陳超 申請人:研祥智能科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
9色porny在线观看| 肉色欧美久久久久久久蜜桃| 一区二区av电影网| 亚洲精品久久午夜乱码| 女同久久另类99精品国产91| 亚洲国产毛片av蜜桃av| 日本a在线网址| bbb黄色大片| 久久午夜综合久久蜜桃| 亚洲一区中文字幕在线| 美女午夜性视频免费| 日韩欧美免费精品| 日韩大片免费观看网站| 成人永久免费在线观看视频 | 久久天躁狠狠躁夜夜2o2o| 伊人久久大香线蕉亚洲五| av视频免费观看在线观看| 男女免费视频国产| 成人国语在线视频| 天天躁日日躁夜夜躁夜夜| 午夜精品国产一区二区电影| 一本一本久久a久久精品综合妖精| 亚洲精品中文字幕一二三四区 | 亚洲欧美色中文字幕在线| 国产成人精品在线电影| 99热网站在线观看| 香蕉久久夜色| 91成人精品电影| 人人妻人人澡人人爽人人夜夜| 后天国语完整版免费观看| 制服人妻中文乱码| 久久久久久免费高清国产稀缺| 91麻豆精品激情在线观看国产 | 国产精品av久久久久免费| 国产极品粉嫩免费观看在线| 日日摸夜夜添夜夜添小说| 亚洲精品中文字幕在线视频| 国产精品.久久久| 亚洲天堂av无毛| 久久热在线av| 免费在线观看影片大全网站| 国产亚洲欧美在线一区二区| 三级毛片av免费| 中文字幕av电影在线播放| 久久久久久免费高清国产稀缺| 久久中文看片网| 超色免费av| 国产高清videossex| 水蜜桃什么品种好| 日韩精品免费视频一区二区三区| 久久99一区二区三区| 中文字幕色久视频| av免费在线观看网站| 久久亚洲精品不卡| 高清黄色对白视频在线免费看| 一本色道久久久久久精品综合| 久久精品国产综合久久久| 狠狠精品人妻久久久久久综合| 久久久久精品人妻al黑| 久久午夜亚洲精品久久| 脱女人内裤的视频| 好男人电影高清在线观看| 天堂动漫精品| 国产精品美女特级片免费视频播放器 | 水蜜桃什么品种好| 亚洲视频免费观看视频| 国产精品成人在线| 天堂8中文在线网| 亚洲成人免费电影在线观看| 99re6热这里在线精品视频| 香蕉国产在线看| 精品第一国产精品| 999久久久国产精品视频| 久久久久精品人妻al黑| 国产成人免费观看mmmm| 国产在视频线精品| 97在线人人人人妻| 天天操日日干夜夜撸| 老司机午夜福利在线观看视频 | 久久久水蜜桃国产精品网| 国产熟女午夜一区二区三区| 搡老乐熟女国产| 国产精品98久久久久久宅男小说| 欧美激情 高清一区二区三区| 日本av免费视频播放| 色视频在线一区二区三区| 亚洲精品中文字幕在线视频| 日韩熟女老妇一区二区性免费视频| 国产极品粉嫩免费观看在线| 在线 av 中文字幕| 国产精品免费一区二区三区在线 | 老司机午夜十八禁免费视频| 美国免费a级毛片| 波多野结衣av一区二区av| 在线看a的网站| 美女扒开内裤让男人捅视频| 精品一区二区三区视频在线观看免费 | 久久ye,这里只有精品| 一级毛片电影观看| 99在线人妻在线中文字幕 | 日韩欧美三级三区| 精品视频人人做人人爽| av视频免费观看在线观看| 日韩熟女老妇一区二区性免费视频| 一级片免费观看大全| 波多野结衣一区麻豆| 亚洲国产欧美在线一区| 亚洲精品久久午夜乱码| 老熟妇乱子伦视频在线观看| 欧美 日韩 精品 国产| 亚洲国产看品久久| 国产免费现黄频在线看| 十八禁人妻一区二区| 少妇的丰满在线观看| 亚洲 欧美一区二区三区| 国产精品一区二区精品视频观看| 亚洲av成人不卡在线观看播放网| 亚洲第一青青草原| av网站免费在线观看视频| 操美女的视频在线观看| 看免费av毛片| 国产精品一区二区精品视频观看| 大香蕉久久网| 高清av免费在线| 精品少妇一区二区三区视频日本电影| 日韩熟女老妇一区二区性免费视频| 在线av久久热| 国产一区二区三区视频了| 久久久国产精品麻豆| 性少妇av在线| 国产精品亚洲一级av第二区| 老司机影院毛片| 成人三级做爰电影| 免费在线观看影片大全网站| 久久人妻熟女aⅴ| 久热这里只有精品99| 久久亚洲真实| 在线观看免费高清a一片| 丁香六月天网| 18在线观看网站| 亚洲精品久久午夜乱码| 日本欧美视频一区| 男人操女人黄网站| 在线十欧美十亚洲十日本专区| 久久久欧美国产精品| 亚洲色图 男人天堂 中文字幕| 色播在线永久视频| 一进一出好大好爽视频| 性少妇av在线| 久久久久久免费高清国产稀缺| 色94色欧美一区二区| 91麻豆av在线| 精品一区二区三区视频在线观看免费 | 黑人操中国人逼视频| 国产精品久久久av美女十八| tocl精华| 一边摸一边抽搐一进一出视频| 热99久久久久精品小说推荐| 极品人妻少妇av视频| 757午夜福利合集在线观看| 91麻豆精品激情在线观看国产 | 两性夫妻黄色片| 一区二区三区国产精品乱码| 少妇被粗大的猛进出69影院| aaaaa片日本免费| 色婷婷久久久亚洲欧美| 国产午夜精品久久久久久| 亚洲免费av在线视频| 午夜激情av网站| 亚洲精品粉嫩美女一区| 国产精品 欧美亚洲| 老熟妇仑乱视频hdxx| 成在线人永久免费视频| 免费久久久久久久精品成人欧美视频| 动漫黄色视频在线观看| 天堂中文最新版在线下载| 久久国产精品人妻蜜桃| 少妇粗大呻吟视频| 大型av网站在线播放| 搡老乐熟女国产| 亚洲伊人色综图| 久久免费观看电影| 搡老熟女国产l中国老女人| h视频一区二区三区| 国产熟女午夜一区二区三区| 久热爱精品视频在线9| 国产一区二区激情短视频| 国产成人免费观看mmmm| 丰满饥渴人妻一区二区三| 一个人免费在线观看的高清视频| 最新美女视频免费是黄的| 成人国产一区最新在线观看| 日韩大码丰满熟妇| 夜夜骑夜夜射夜夜干| 亚洲精品一二三| 日本wwww免费看| 精品福利观看| 91av网站免费观看| 午夜福利视频精品| 久久中文看片网| 欧美黄色淫秽网站| 在线亚洲精品国产二区图片欧美| 亚洲一区二区三区欧美精品| 午夜福利影视在线免费观看| 午夜福利,免费看| 日本vs欧美在线观看视频| 岛国在线观看网站| 国产一区二区三区在线臀色熟女 | 在线av久久热| 18禁观看日本| 18在线观看网站| 咕卡用的链子| 成年人免费黄色播放视频| 高清av免费在线| 日韩免费av在线播放| 男女下面插进去视频免费观看| 久久99热这里只频精品6学生| videos熟女内射| 久久九九热精品免费| 99精品在免费线老司机午夜| 成年动漫av网址| 别揉我奶头~嗯~啊~动态视频| 免费日韩欧美在线观看| 国产精品九九99| www.精华液| 久久精品国产a三级三级三级| a级毛片在线看网站| 中文字幕高清在线视频| 99精品欧美一区二区三区四区| 成人国语在线视频| 日韩欧美国产一区二区入口| 欧美成狂野欧美在线观看| 热99国产精品久久久久久7| 99国产精品免费福利视频| 久久久久国产一级毛片高清牌| 黄色 视频免费看| 亚洲黑人精品在线| 色播在线永久视频| 大香蕉久久网| 久久ye,这里只有精品| 亚洲成人免费av在线播放| 久久性视频一级片| av免费在线观看网站| 极品教师在线免费播放| 一区二区三区国产精品乱码| 99精品欧美一区二区三区四区| 日韩中文字幕视频在线看片| 国产一区二区三区视频了| cao死你这个sao货| 一本综合久久免费| 精品人妻熟女毛片av久久网站| 欧美成人免费av一区二区三区 | 在线观看一区二区三区激情| 久久久国产成人免费| 下体分泌物呈黄色| 亚洲av日韩在线播放| 我的亚洲天堂| 免费在线观看完整版高清| 操美女的视频在线观看| 12—13女人毛片做爰片一| 国产精品久久久久久人妻精品电影 | av视频免费观看在线观看| av片东京热男人的天堂| 精品国产亚洲在线| 国产福利在线免费观看视频| 真人做人爱边吃奶动态| 久久av网站| 精品欧美一区二区三区在线| 新久久久久国产一级毛片| 久9热在线精品视频| 国产亚洲精品一区二区www | 色婷婷av一区二区三区视频| www.自偷自拍.com| 久久香蕉激情| 丝袜在线中文字幕| 91国产中文字幕| 亚洲一区中文字幕在线| 最近最新中文字幕大全免费视频| 国产成人免费无遮挡视频| 欧美黄色片欧美黄色片| 中文字幕最新亚洲高清| 久久久精品免费免费高清| 一本色道久久久久久精品综合| 日韩免费av在线播放| 国产精品成人在线| 一区二区三区激情视频| 一边摸一边抽搐一进一小说 | 成年动漫av网址| 菩萨蛮人人尽说江南好唐韦庄| 动漫黄色视频在线观看| 十八禁人妻一区二区| 搡老熟女国产l中国老女人| 黄色视频不卡| 亚洲精品久久午夜乱码| 欧美老熟妇乱子伦牲交| av一本久久久久| 国产不卡一卡二| 色婷婷av一区二区三区视频| 国产精品影院久久| 亚洲人成伊人成综合网2020| 大型黄色视频在线免费观看| 69精品国产乱码久久久| 少妇粗大呻吟视频| 久久午夜亚洲精品久久| 老汉色∧v一级毛片| 麻豆av在线久日| 老司机亚洲免费影院| 亚洲av电影在线进入| 日本av手机在线免费观看| 国产91精品成人一区二区三区 | 国产午夜精品久久久久久| 丰满迷人的少妇在线观看| h视频一区二区三区| 精品久久蜜臀av无| 欧美在线黄色| 高清av免费在线| 欧美精品高潮呻吟av久久| 无人区码免费观看不卡 | 亚洲精品乱久久久久久| 日韩成人在线观看一区二区三区| 夜夜夜夜夜久久久久| 国产深夜福利视频在线观看| 黄色片一级片一级黄色片| 免费在线观看影片大全网站| 99香蕉大伊视频| 天堂俺去俺来也www色官网| 色精品久久人妻99蜜桃| 亚洲欧美精品综合一区二区三区| 夜夜爽天天搞| 777久久人妻少妇嫩草av网站| 亚洲精品中文字幕一二三四区 | 黄片大片在线免费观看| 亚洲专区国产一区二区| 麻豆av在线久日| 色老头精品视频在线观看| 国产有黄有色有爽视频| 国产在视频线精品| 亚洲av第一区精品v没综合| 欧美日韩国产mv在线观看视频| 国产亚洲欧美在线一区二区| 亚洲国产欧美网| 他把我摸到了高潮在线观看 | 午夜视频精品福利| 丰满迷人的少妇在线观看| 久久精品国产a三级三级三级| av超薄肉色丝袜交足视频| 亚洲精品av麻豆狂野| 91成人精品电影| 汤姆久久久久久久影院中文字幕| 亚洲午夜理论影院| h视频一区二区三区| 99精品久久久久人妻精品| 一本久久精品| 精品少妇黑人巨大在线播放| 操美女的视频在线观看| 亚洲精品成人av观看孕妇| 视频区欧美日本亚洲| 免费久久久久久久精品成人欧美视频| 亚洲熟女毛片儿| 91成年电影在线观看| 熟女少妇亚洲综合色aaa.| 黑人巨大精品欧美一区二区蜜桃| 精品福利永久在线观看| 国产成人精品久久二区二区免费| 欧美变态另类bdsm刘玥| 国产极品粉嫩免费观看在线| 国产精品免费视频内射| 99精国产麻豆久久婷婷| av天堂久久9| 午夜福利视频在线观看免费| 别揉我奶头~嗯~啊~动态视频| 五月天丁香电影| 精品少妇黑人巨大在线播放| 亚洲avbb在线观看| 精品亚洲乱码少妇综合久久| 亚洲精品自拍成人| 免费一级毛片在线播放高清视频 | 亚洲少妇的诱惑av| 国内毛片毛片毛片毛片毛片| 日韩中文字幕视频在线看片| 激情在线观看视频在线高清 | 丁香欧美五月| 两性夫妻黄色片| 岛国在线观看网站| 国产成人精品在线电影| 黑人欧美特级aaaaaa片| 在线观看人妻少妇| 青草久久国产| 中文字幕精品免费在线观看视频| 久久av网站| 午夜激情久久久久久久| 亚洲 国产 在线| 麻豆av在线久日| 午夜福利影视在线免费观看| 国产欧美日韩精品亚洲av| 久久久国产一区二区| 亚洲少妇的诱惑av| 欧美日韩视频精品一区| a级毛片黄视频| 一个人免费在线观看的高清视频| 亚洲专区字幕在线| 母亲3免费完整高清在线观看| 久热爱精品视频在线9| 高清毛片免费观看视频网站 | 国精品久久久久久国模美| 女性生殖器流出的白浆| 午夜福利影视在线免费观看| 国产精品久久久久久人妻精品电影 | 国产在线免费精品| 丰满少妇做爰视频| 天天操日日干夜夜撸| 侵犯人妻中文字幕一二三四区| 日韩大码丰满熟妇| 亚洲国产成人一精品久久久| 亚洲伊人久久精品综合| 免费少妇av软件| 国产精品 欧美亚洲| 亚洲,欧美精品.| 我的亚洲天堂| 老司机影院毛片| 两性午夜刺激爽爽歪歪视频在线观看 | 日本欧美视频一区| 国产人伦9x9x在线观看| 日韩三级视频一区二区三区| 午夜福利影视在线免费观看| 亚洲国产欧美一区二区综合| 国产精品久久久久久精品古装| 欧美人与性动交α欧美精品济南到| 丝瓜视频免费看黄片| av片东京热男人的天堂| 午夜福利乱码中文字幕| 欧美大码av| www.999成人在线观看| 一区二区三区国产精品乱码| 亚洲精品中文字幕一二三四区 | 国产欧美日韩综合在线一区二区| 无遮挡黄片免费观看| 人妻久久中文字幕网| 久久天堂一区二区三区四区| 丁香六月欧美| 日本a在线网址| 在线观看66精品国产| 久久精品亚洲av国产电影网| 韩国精品一区二区三区| 日韩中文字幕视频在线看片| 宅男免费午夜| 丁香六月欧美| 亚洲七黄色美女视频| 精品福利观看| 免费观看a级毛片全部| www.自偷自拍.com| 高清av免费在线| 精品乱码久久久久久99久播| 色播在线永久视频| 夜夜爽天天搞| 女人被躁到高潮嗷嗷叫费观| 夜夜夜夜夜久久久久| 欧美黑人精品巨大| 看免费av毛片| 黄频高清免费视频| 少妇 在线观看| 后天国语完整版免费观看| 精品亚洲乱码少妇综合久久| √禁漫天堂资源中文www| 最近最新中文字幕大全免费视频| 少妇 在线观看| 最黄视频免费看| 极品少妇高潮喷水抽搐| 亚洲国产中文字幕在线视频| 亚洲人成电影免费在线| 国产男靠女视频免费网站| 婷婷丁香在线五月| 久久久欧美国产精品| 丁香六月欧美| 男女下面插进去视频免费观看| 建设人人有责人人尽责人人享有的| 99精品久久久久人妻精品| 丝袜喷水一区| 精品第一国产精品| 日韩视频一区二区在线观看| 一级a爱视频在线免费观看| 制服诱惑二区| 丝袜喷水一区| 两个人看的免费小视频| 露出奶头的视频| 9热在线视频观看99| 成人黄色视频免费在线看| 人人妻,人人澡人人爽秒播| www.精华液| 成年人免费黄色播放视频| 国产精品久久久久成人av| 丝袜人妻中文字幕| 亚洲精品在线观看二区| 男女高潮啪啪啪动态图| 亚洲精品国产精品久久久不卡| 午夜福利影视在线免费观看| 亚洲人成电影观看| 极品少妇高潮喷水抽搐| 国产高清国产精品国产三级| 欧美日韩中文字幕国产精品一区二区三区 | 久久久国产欧美日韩av| 久久影院123| 久久国产精品大桥未久av| 国产精品一区二区精品视频观看| 免费在线观看黄色视频的| 日韩视频在线欧美| av国产精品久久久久影院| 亚洲av第一区精品v没综合| 精品国产超薄肉色丝袜足j| 国产区一区二久久| 蜜桃在线观看..| 一区二区三区国产精品乱码| a级毛片在线看网站| 大型黄色视频在线免费观看| 亚洲欧洲日产国产| 欧美日韩中文字幕国产精品一区二区三区 | 天天躁狠狠躁夜夜躁狠狠躁| 两个人看的免费小视频| 中文字幕另类日韩欧美亚洲嫩草| 一二三四在线观看免费中文在| 免费人妻精品一区二区三区视频| 国产野战对白在线观看| 黑人欧美特级aaaaaa片| 黄频高清免费视频| 黄色 视频免费看| 自拍欧美九色日韩亚洲蝌蚪91| 十八禁网站网址无遮挡| 在线 av 中文字幕| 亚洲人成电影免费在线| 国产xxxxx性猛交| 国产片内射在线| 亚洲av电影在线进入| 麻豆成人av在线观看| aaaaa片日本免费| 国产一卡二卡三卡精品| 成人永久免费在线观看视频 | 在线观看66精品国产| 国产麻豆69| 91麻豆精品激情在线观看国产 | 在线观看免费高清a一片| 母亲3免费完整高清在线观看| 天天躁夜夜躁狠狠躁躁| 男女高潮啪啪啪动态图| 精品国产一区二区三区久久久樱花| 久热爱精品视频在线9| 国产一区二区在线观看av| 欧美午夜高清在线| 国产在视频线精品| 后天国语完整版免费观看| 日韩 欧美 亚洲 中文字幕| xxxhd国产人妻xxx| 国产福利在线免费观看视频| 亚洲专区中文字幕在线| 国产片内射在线| 国产精品av久久久久免费| 在线观看www视频免费| 成人国语在线视频| 国产一区二区三区综合在线观看| 757午夜福利合集在线观看| 精品国产乱码久久久久久小说| 人妻 亚洲 视频| netflix在线观看网站| 亚洲五月婷婷丁香| 巨乳人妻的诱惑在线观看| 日日爽夜夜爽网站| 电影成人av| 黑人巨大精品欧美一区二区蜜桃| 久久午夜综合久久蜜桃| 亚洲av第一区精品v没综合| 在线亚洲精品国产二区图片欧美| 成人18禁在线播放| 久久人妻福利社区极品人妻图片| 久久婷婷成人综合色麻豆| 国产精品免费大片| 久久国产精品大桥未久av| 亚洲精品在线美女| 熟女少妇亚洲综合色aaa.| 露出奶头的视频| 丰满饥渴人妻一区二区三| 精品午夜福利视频在线观看一区 | 国产精品一区二区免费欧美| 狠狠婷婷综合久久久久久88av| 欧美 日韩 精品 国产| 国产精品欧美亚洲77777| 国产成人精品在线电影| 丰满饥渴人妻一区二区三| 一级片'在线观看视频| 国产三级黄色录像| 一级a爱视频在线免费观看| 成人国产av品久久久| 国产成人av激情在线播放| 国产免费福利视频在线观看| 亚洲国产成人一精品久久久| 正在播放国产对白刺激| 亚洲av第一区精品v没综合| 好男人电影高清在线观看| 久久午夜综合久久蜜桃| 狠狠狠狠99中文字幕| 18禁观看日本| 精品第一国产精品| 人成视频在线观看免费观看| 97在线人人人人妻| 一级毛片女人18水好多| 欧美精品人与动牲交sv欧美| 国产野战对白在线观看| 啦啦啦在线免费观看视频4| 最近最新免费中文字幕在线| tube8黄色片| 午夜福利视频精品| 两性夫妻黄色片| 精品人妻在线不人妻| 天天躁日日躁夜夜躁夜夜| 麻豆国产av国片精品| 精品人妻在线不人妻| 中文字幕精品免费在线观看视频|