《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種靈活的嵌入式設備配置管理方法
一種靈活的嵌入式設備配置管理方法
2017年微型機與應用第3期
楊蕾蕾1,慕福奇2,張文明2,呂欣巖2
(1.中國科學院大學 微電子學院,北京 100049;2.江蘇中科羿鏈通信技術有限公司,江蘇 無錫 214135)
摘要: 針對嵌入式設備的配置管理需求,利用Lua腳本語言設計了一種靈活的嵌入式設備配置管理方法。實現了通過串口服務、Telnet服務和Web服務對嵌入式設備進行配置管理。該方法通過在QiLINK(Queue Information LINK)鏈狀網節點(使用TMS320C6670芯片開發)上實際驗證,證明了其可行性,符合預期效果。為嵌入式設備提供了一種移植性強、多方式的配置管理方法。
Abstract:
Key words :

  楊蕾蕾1,慕福奇2,張文明2,呂欣巖2

  (1.中國科學院大學 微電子學院,北京 100049;2.江蘇中科羿鏈通信技術有限公司,江蘇 無錫 214135)       摘要:針對嵌入式設備的配置管理需求,利用Lua腳本語言設計了一種靈活的嵌入式設備配置管理方法。實現了通過串口服務、Telnet服務和Web服務對嵌入式設備進行配置管理。該方法通過在QiLINK(Queue Information LINK)鏈狀網節點(使用TMS320C6670芯片開發)上實際驗證,證明了其可行性,符合預期效果。為嵌入式設備提供了一種移植性強、多方式的配置管理方法。

  關鍵詞:嵌入式;配置管理;Lua語言;Web;Telnet;串口;MVC框架

  中圖分類號:TP311文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.03.026

  引用格式:楊蕾蕾,慕福奇,張文明,等.一種靈活的嵌入式設備配置管理方法[J].微型機與應用,2017,36(3):88-92.

0引言

  隨著計算機技術和集成電路的發展,嵌入式技術日漸普及。嵌入式設備由于體積小、功耗低、成本低廉的特點在通信、家電、醫療以及軍事等領域中的應用越來越廣泛。

  無論是以單片機為主的中低端嵌入式應用,還是以ARM、DSP、MIPS為主的高端嵌入式設備,都需要提供一種或幾種方式供開發人員或其他使用者對其進行配置和管理。常用的方式可以分為以下3種:利用串口通信或Telnet遠程登錄服務直接輸入指令[1];通過發送指定格式的UDP包 [2];使用Web可視化界面[3]。目前嵌入式設備的配置管理方法多采用以上3種方式中的一種,不夠全面。此外,實現方式也不夠理想,如自定義的命令格式以及自定義的配置數據文件容易出現解析錯誤等[4]。綜上,沒有一個移植性較強的、比較完備的配置管理方法可以應用在不同的嵌入式設備中。

  Lua語言是一種輕量級的語言,適用于多種操作系統以及用ANSI C開發的平臺,它在嵌入式設備中的應用已經屢見不鮮[57]。此外,Lua腳本可以直接用來存儲配置數據,占用空間小并且容易解析,不易出錯。在這種前提下,本文考慮依托Lua語言,實現一套集Web服務、Telnet服務和串口服務為一體的嵌入式設備配置管理方法。

1整體結構設計

001.jpg

  本嵌入式設備配置管理方法的系統結構如圖1所示,嵌入式設備提供網口和串口供PC管理機可以通過遠程登錄、訪問Web頁面以及輸入串口命令的方式對嵌入式設備進行配置管理。

  本方法的實現依賴于Lua源碼,它提供解釋Lua腳本的解釋器,同時還可以靈活地修改以滿足不同接口的需求。在系統結構中,Lua源碼的下層是底層驅動函數,它們可以注冊到Lua中,供Lua腳本調用。Lua源碼的上層是本方法實現所依賴的三大服務:串口服務、Telnet服務以及Web服務。串口服務直接由Lua串口處理程序實現,而其他兩種服務均依賴于嵌入式TCP/IP協議棧。NDK(Network Developer’s Kit)是德州儀器公司(Texas Instruments,TI)開發的TCP/IP協議棧,它在提供Telnet服務的基礎上,增加了解釋Lua指令的功能。而Web服務利用Lua社區提供的相關Http模塊實現,它們由純Lua腳本實現,修改十分簡單,避免了傳統的C語言編寫的CGI(Common Gateway Interface)程序每次修改都需要重新編譯代碼的問題。這些模塊又依賴于Luasocket,Luasocket是將NDK的Socket函數封裝給Lua使用的一個接口層。系統的最上層即是配置管理操作的對象、配置數據以及代碼文件等。在系統實現過程中還移植了Fatfs文件系統,用來更好地存放和管理這些文件。

2具體方法及實現

  2.1文件系統移植及IO操作實現

  嵌入式文件系統選擇Fatfs。它使用ANSI C編寫,不依賴于硬件平臺,并且代碼量小、移植簡單[89],適用于小型的嵌入式設備。Lua源碼中的io庫的實現依賴于標準C的文件操作函數,與Fatfs提供的函數不同,因此需要將Fatfs提供的相關API函數封裝成一套新的Lua io庫。

  2.1.1Fatfs文件系統的移植

  以MX25U25635F SPI FLASH為例闡述Fatfs在嵌入式存儲設備中的移植過程。

  MX25U25635擦除的最小單位是4 K,所以將Fatfs的簇(最小文件單位)大小設置為4 K。一個扇區大小為512 B,一個簇8個扇區。移植Fatfs需要修改的是diskio.c文件,其中,需要特別注意的是磁盤寫函數。

  如圖2所示,寫一個文件時會將這個文件分成兩部分:整扇區和最后不足一個扇區的部分。整扇區的寫操作是由用戶緩沖區直接寫入物理磁盤,最后不足一扇區的部分,先從磁盤讀取相應扇區的內容到文件緩沖區,修改緩沖區內容,并設置回寫標記,最終在調用文件關閉函數或再一次寫文件時,再將文件緩沖區的內容回寫到物理磁盤中。這樣就一共調用了兩次磁盤寫函數,磁盤寫函數調用SPI寫函數,而每次調用SPI寫函數時都會根據寫入數據的長度擦除所在的整個簇。如果文件緩沖區寫入的扇區和之前已經寫好的整扇區在一個簇內,則第二次調用SPI寫函數時會再一次把整個簇擦掉,因此之前寫入的整扇區內容也被擦掉了。為了避免這種情況,在SPI寫函數中加了一個判斷,在擦之前判斷擦除的地址是否是一個簇的起始地址,如果是則進行擦除操作,否則直接寫入。

002.jpg

  2.1.2IO庫的封裝及本地文件到Flash的映射

  IO庫主要實現對文件的打開、關閉以及讀、寫這幾個函數。其中需要注意的是,Fatfs對外提供的每一個文件操作函數的第一個參數都是一個文件指針,以此來確定操作對象。但是Lua中并沒有指針變量,因此封裝時在文件打開函數的末尾返回所打開的文件的指針,此后調用讀、寫、關閉函數時都直接將得到的這個文件指針作為第一個參數使用。

  當寫入Flash的文件數量較多時,逐個寫入太過麻煩,因此用一個簡單的Lua腳本實現文件從PC端指定路徑到Flash指定路徑的映射。它完成的操作有:定義一個目錄查找函數,將PC端指定目錄下的指定格式文件的絕對路徑全部存入到table變量input_table{}中;使用字符串匹配替換函數string.gsub()將input_table{}中的文件路徑替換為Flash文件系統中的指定路徑,存入另一個table變量save_table{}中;利用Lua原有的io庫從input_table{}中依次讀取文件,利用封裝Fatfs函數的io庫按照save_table{}中的路徑依次創建文件并將讀到的內容寫入。

  2.2Web服務器設計

  嵌入式Web服務器的實現借助于Lua社區提供的相關模塊,包括Xavante、Wsapi、Copas、Cgilua、Sailor。Xavante是基于URI模塊化架構的HTTP1.1 Web服務器映射處理程序,提供文件處理、重定向處理和Wsapi處理。Wsapi將抽象的Lua程序映射為具體的Web應用,解決了Lua代碼的平臺依賴性,使之可以應用于主流的平臺。Copas是一個基于協程的調度器,可以用于調度TCP或UDP服務。Cgilua是一個用于創建動態Web頁面和Web表單的工具,支持界面和數據分離。Sailor是一個MVC框架,用于組織Web界面和數據。這些模塊依賴于Luasocket,它是用C封裝的提供給Lua使用的Socket函數。

  2.2.1Web服務器結構及處理流程

  Web服務器的結構如圖3所示。

003.jpg

  Copas模塊完成Tcp Socket的調度工作,負責接收請求、建立連接,并監視Socket套接字的狀態變化,當監聽到有數據后,交給Xavante模塊處理。Xavante模塊將接收到的數據包進行解析,得到包頭信息,并根據解析出來的Url請求使用不同的處理函數進行處理,包括Index頁面處理函數、文件處理函數以及Cgi處理函數。Cgi處理函數調用Cgilua模塊進行處理。處理完畢后將處理結果交給Wsapi模塊,它將抽象的Lua語句轉換為規范的html語句。最后Xavante模塊將處理結果加上包頭信息發送給客戶端。其中,Web頁面的組織方式使用Sailor MVC框架。具體處理流程如圖4所示。

004.jpg

  2.2.2Socket接口層

  Lua的Http服務模塊依賴于Luasocket提供的tcp socket函數。Lua官網提供的Luasocket是以動態庫的格式供用戶使用,并且依賴于Linux/Windows操作系統,不適用于所有的嵌入式設備(例如TMS320C6670所依賴的CCS開發平臺)。因此需要將所使用的TCP/IP協議棧提供的Socket函數封裝成Luasocket的tcp socket格式,并注冊到Lua源碼中供Lua Http相關模塊使用。在封裝Luasocket庫時,盡量保持函數結構和依賴關系不變,只替換內部實現函數,減少使用Luasocket的Http模塊的改動。

  2.2.3MVC框架

  為了更好地組織Web,使用了Sailor MVC框架。MVC指的是Model、View、Controller三部分。MVC框架可擴展性強、易于維護[10]。

  Sailor的視圖是lp文件,它與Html文件的區別是可以直接插入Lua代碼(Wsapi模塊將解釋處理這些Lua代碼)。Lua代碼的插入方法有兩種:<?lua chunk?>和<?lua=expression?>。如果是連續的一段Lua代碼,則按代碼塊的格式插入,如果是單獨的一句Lua語句,則按Lua表達式的格式插入。

  Sailor通過定義一些頁面操作函數來實現Controller對視圖的控制,如視圖加載函數、輸出函數以及重定向操作函數等。

  Sailor同樣定義了模型操作函數。Controller對模型的控制從新建模型開始,Sailor提供的模型新建函數將用戶定義的模型NewObj作為參數,在繼承模型通用函數的同時,引入用戶在NewObj中自定義的函數及數據格式規范。Model部分通常采用數據庫存儲,但由于本系統數據量不是很大,也為了盡量減少不必要的模塊,所以配置數據直接以Lua的table數據類型存儲在Lua腳本中,因為C和Lua極強的交互性,所以在C代碼中解析Lua配置腳本也很容易。

  2.3Telnet串口服務設計

  Telnet服務和串口服務均是通過直接輸入Lua命令來對嵌入式設備進行配置管理,它們共用一套配置管理接口。Telnet實現了對嵌入式設備的遠程控制,并且操作簡單,只要PC管理機與嵌入式設備在同一網段即可。同時,對一個完整的嵌入式設備配置管理方法而言,不可缺少的配置方式是通過串口服務進行配置。它在嵌入式設備沒有入網、默認IP也沒有生效的情況下仍然可以使用,保證了本配置方法的完備性。串口處理程序與Lua結合還可以避免不同格式的串口數據幀給嵌入式設備軟件帶來的解析困難[11],提高了交互的靈活性。

  2.3.1配置管理接口

  Telnet服務和串口服務除了可使用規范的Lua語句直接對Lua配置腳本進行修改外,本方法還增添了快捷配置方式以及直接調用某些管理函數的功能,將它們統稱為配置管理接口。配置管理接口是由相關C函數注冊到Lua源碼中實現的。調用格式與普通的Lua函數一樣:庫名.函數名(參數1,參數2,參數3…)。

  2.3.2Telnet服務

  NDK協議棧提供的Telnet服務的用戶指令包含多個關鍵字,它們被存放在大小為10的字符指針數組tok中,各命令需要匹配多少個關鍵字,就從tok數組中依次取出相應的元素進行匹配。Lua命令只需輸入“Lua”一個關鍵字,因此將tok[0]指向的字符串和“Lua”比較,如果相同,則進入Lua命令輸入模式(即調用Lua解釋器),等待用戶輸入Lua指令,以回車鍵作為一次輸入的截止標志。Lua解釋器將輸入的字符串作為一段Lua代碼載入并編譯,然后作為一個代碼塊(稱為chunk)壓入棧中。此后,調用Lua的異常處理函數去執行這個代碼塊。圖5為Telnet解析Lua指令流程圖。

 

005.jpg

  2.3.3串口服務

  串口命令的解析過程與Telnet不同,Telnet是通過直接調用Lua解釋器來執行Lua命令,而串口服務的解析過程經過了一個中間函數即串口數據收發函數,它被注冊到Lua中。設備初始化時完成對串口的配置并啟動加載Lua串口處理腳本。當PC管理機通過串口調試助手給嵌入式設備發來Lua命令時,串口處理程序對接收到的數據進行處理,然后將其傳給串口數據接收函數。Lua串口處理腳本檢測到串口數據接收函數接收到數據后,將這些接收到的內容作為Lua代碼執行。執行完畢后,通過調用串口數據發送函數將執行結果發送給串口處理程序,串口處理程序將之處理完畢后通過串口線發送給PC管理機,反饋給用戶。其中,串口配置數據也被存放在一個Lua腳本中,初始化時由C解析這個配置腳本完成對串口的配置。

3實驗結果

  使用本方法在QiLINK鏈狀網其中一個節點(使用TMS320C6670芯片開發)上進行測試,測試拓撲圖如圖6所示。所有節點的默認IP為192.168.1.3,入網后的IP為10.9.X.2,其中X為節點號乘以9,比如節點4的IP為10.9.36.2。

006.jpg

  圖7是將PC管理機與節點4用串口線相連,使用串口調試助手對INTCof文件成功進行配置的結果圖。

007.jpg

4結束語

  本文提出了一種靈活的嵌入式設備配置管理方法,實現了利用串口服務、Telnet服務、Web服務3種方式對嵌入式設備進行配置及管理。本方法適用于用ANSI C開發的嵌入式設備,并提供對外網口或串口。本方法與傳統的嵌入式設備配置管理方法相比,提高了靈活性,對配置數據或Web界面的修改只需修改相關腳本文件,無需重新修改編譯軟件代碼;此外,提高了完備性,無論嵌入式設備是否入網都可以對它進行配置管理;更為重要的一點是,本方法通用性強,不依賴開發平臺和操作系統,為各式各樣的嵌入式設備的配置管理提供了很好的解決方案。

參考文獻

  [1] 周家緒, 鄢萍, 張研. 一種嵌入式系統BootLoader參數自動配置方法[J/OL].[2016-09-25].http://www.docin.com/p390606777.html.

 ?。?] 王曉東. 基于以太網和Uboot遠程配置嵌入式系統啟動參數[J]. 現代科學儀器, 2010(2):6770.

  [3] 譚海, 潘紹明. 嵌入式系統中配置參數修改研究及其實現[J/OL]. (20060829)[2016-09-25].http://www.paper.edu.com.

 ?。?] 李長春, 張磊. 基于嵌入式Web門禁控制器的網絡配置實現[J]. 工業控制計算機, 2009, 22(4):58-59.

 ?。?] 汪君鵬, 李宥謀. 基于Lua腳本技術的網絡化測控系統設計[J]. 西安郵電大學學報, 2013, 18(1):90-94.

  [6] 段鑫, 陳宇, 孫偉力. Lua遠程調試協議研究與實現[J]. 自動化應用, 2011,25(6):3-5.

 ?。?] 沙俊星. 在嵌入式環境中使用Lua和SQLite擴展NetSNMP代理[J]. 北京聯合大學學報:自然科學版, 2011,25(1):9-13.

 ?。?] 秦偉. STM32的FatFS在數據采集系統中的應用[J]. 單片機與嵌入式系統應用, 2015,15(6):55-58.

 ?。?] 洪岳煒, 王百鳴, 謝超英. 一種易于移植和使用的文件系統FatFs Module[J]. 單片機與嵌入式系統應用, 2008,8(5):29-31.

 ?。?0] 閆志貴, 孟操. MVC模式在嵌入式調試工具開發中的研究與實現[J]. 電子設計工程, 2010, 18(4):85-87.

 ?。?1] 李英明, 閆志輝, 周水斌. 基于Lua腳本語言的嵌入式UART通信方案設計[J]. 單片機與嵌入式系統應用, 2012, 12(4):29-32.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久福利视频导航| 欧美日韩精品一区| 国产亚洲精品久久久久动| 亚洲人被黑人高潮完整版| 欧美精品在线观看播放| 亚洲国产精品一区制服丝袜| 韩日欧美一区二区三区| 亚洲色诱最新| 中日韩午夜理伦电影免费| 久久成人这里只有精品| 欧美久久一区| 欧美区视频在线观看| 午夜一区在线| 在线视频欧美日韩精品| 伊人精品成人久久综合软件| 亚洲国产日韩欧美一区二区三区| 性欧美在线看片a免费观看| 午夜精品福利视频| 欧美伦理一区二区| 亚洲宅男天堂在线观看无病毒| 午夜一级在线看亚洲| 亚洲精品午夜精品| 亚洲美洲欧洲综合国产一区| 亚洲成在人线av| 欧美mv日韩mv国产网站| 欧美日韩综合久久| 亚洲欧洲一区二区三区| 国产精品久久网站| 亚洲在线视频免费观看| 欧美区日韩区| 国产一区二区久久久| 亚洲欧美中文在线视频| 欧美人与禽猛交乱配视频| 久久aⅴ乱码一区二区三区| 亚洲欧美日韩另类精品一区二区三区| 欧美另类一区二区三区| 国产日韩欧美中文在线播放| 久久综合一区二区| 国产精品久久99| 亚洲欧美成人一区二区在线电影| 欧美日韩成人在线观看| 国产视频丨精品|在线观看| 亚洲校园激情| 亚洲主播在线观看| 国产日韩精品在线播放| 欧美成年网站| 国产精品自拍一区| 欧美国产精品日韩| 欧美极品在线观看| 国产精品久久久久久av下载红粉| 国产精品二区在线观看| 国产精品免费观看在线| 一区二区视频免费在线观看| 在线欧美影院| 国产精品免费观看在线| 99国产精品久久| 欧美一区二区在线视频| 欧美另类久久久品| 欧美日韩一区二区精品| 亚洲精品五月天| 国产日韩欧美在线播放不卡| 国产美女精品人人做人人爽| 久久综合成人精品亚洲另类欧美| 亚洲国产欧美在线| 噜噜噜噜噜久久久久久91| 精品不卡视频| 欧美激情91| 一区二区三区.www| 欧美久久九九| 夜夜嗨av一区二区三区网页| 欧美激情一区三区| 狠狠干综合网| 亚洲综合日韩| 在线激情影院一区| 欧美激情精品久久久久久黑人| 亚洲欧美清纯在线制服| 欧美高清在线观看| 国产日韩欧美制服另类| 久久一区二区三区四区五区| 亚洲欧洲一区| 一区二区视频欧美| 国产一区二区看久久| 韩国成人福利片在线播放| 在线精品高清中文字幕| 国内精品视频在线观看| 欧美日本亚洲视频| 国产精品久久久久av免费| 久久精品夜色噜噜亚洲a∨| 欧美亚一区二区| 欧美午夜电影完整版| 玉米视频成人免费看| 欧美日韩一区二区视频在线| 娇妻被交换粗又大又硬视频欧美| 欧美成人国产一区二区| 激情综合网址| 欧美电影专区| 亚洲日韩第九十九页| 免费欧美日韩| 国产精品chinese| 国产精品美女一区二区| 欧美日韩精品一二三区| 亚洲欧美在线免费| 国产乱码精品一区二区三区不卡| 欧美一区二区三区免费视频| 国产一区二区观看| 亚洲欧洲一区二区在线观看| 国产欧美日韩综合一区在线观看| 亚洲一区二区不卡免费| 精品成人久久| 亚洲国产精品久久人人爱蜜臀| 国产日韩欧美精品综合| 在线成人激情黄色| 欧美日韩在线不卡| 欧美日韩高清一区| 久久成人精品视频| 国产亚洲成av人片在线观看桃| 国产精品永久入口久久久| 伊人久久大香线蕉av超碰演员| 久久久久久日产精品| 国产精品一区久久久久| 久久综合综合久久综合| 亚洲专区一区| 欧美freesex8一10精品| 国产在线视频不卡二| 欧美天堂亚洲电影院在线观看| 国产日韩欧美中文| 亚洲欧美日韩成人高清在线一区| 夜夜嗨av一区二区三区网站四季av| 欧美日韩国产区一| 亚洲乱码国产乱码精品精天堂| 久久久久一本一区二区青青蜜月| 国产香蕉97碰碰久久人人| 亚洲国产专区| 亚洲国产精品久久91精品| 欧美激情视频一区二区三区在线播放| 欧美日韩一区二区在线观看| 久久久久国产精品www| 国产精品亚洲аv天堂网| 在线成人小视频| 国产午夜精品美女视频明星a级| 欧美大片免费观看| 在线精品国精品国产尤物884a| 久久国产天堂福利天堂| 国产精品va| 亚洲精品免费在线观看| 国产精品久久久久国产精品日日| 国产一区二区精品久久99| 国产精品日韩| 国产精品日韩电影| 欧美激情一区二区三区蜜桃视频| 欧美电影美腿模特1979在线看| 亚洲欧美激情诱惑| 亚洲精品视频在线观看网站| 久久综合亚州| 国产一区二区三区四区| 欧美一区综合| 欧美午夜精品久久久久久浪潮| 性娇小13――14欧美| 国产农村妇女毛片精品久久麻豆| 欧美性视频网站| 国产精品xxxav免费视频| 蜜臀a∨国产成人精品| 亚洲一区二区av电影| 亚洲精品老司机| 国产欧美亚洲日本| 美女脱光内衣内裤视频久久影院| 美女性感视频久久久| 亚洲精品视频在线| 国产精品美女主播在线观看纯欲| 亚洲高清视频一区二区| 欧美激情综合亚洲一二区| 亚洲影院在线| 亚洲精品一二三| 国产精品久久久久7777婷婷| 国产毛片精品视频| 日韩亚洲欧美在线观看| 日韩午夜电影在线观看| 亚洲精品一品区二品区三品区| 亚洲二区视频在线| 亚洲午夜一区二区| 加勒比av一区二区| 欧美激情一区二区三级高清视频| 伊大人香蕉综合8在线视| 99视频日韩| 欧美激情视频一区二区三区免费| 一本色道久久99精品综合| 日韩视频在线永久播放| 亚洲精品在线三区| 亚洲欧美日韩一区| 91久久香蕉国产日韩欧美9色| 欧美激情精品久久久久久大尺度| 红桃av永久久久| 亚洲日韩欧美一区二区在线| 国产精品你懂得| 国产精品久久久久久久久久久久久| 国产三级欧美三级日产三级99| 国产精品一卡二卡| 欧美国产激情| 国产日韩精品一区二区三区| 欧美丝袜一区二区| 西西裸体人体做爰大胆久久久| 欧美电影免费观看大全| 久久精品视频在线观看| 国产精品素人视频| 一区二区国产在线观看| 国产日本精品| 亚洲婷婷综合久久一本伊一区| 欧美成人激情视频| 国产精品国产三级国产aⅴ无密码| 一本色道久久加勒比88综合| 狠狠操狠狠色综合网| 午夜精品福利一区二区蜜股av| 国产精品入口尤物| 欧美中日韩免费视频| 欧美高清视频一区二区三区在线观看| 每日更新成人在线视频| 免费看av成人| 欧美在线高清视频| 日韩午夜av电影| 亚洲女女女同性video| 久久香蕉国产线看观看av| 欧美国产欧美亚州国产日韩mv天天看完整| 国产三级精品在线不卡| 欧美亚洲不卡| 国产精品美女久久久免费| 久久久久.com| 欧美日韩亚洲激情| 亚洲永久在线观看| 国产精品国产成人国产三级| 久久国产精品久久久久久久久久| 国产精品极品美女粉嫩高清在线| 一区二区三区高清视频在线观看| 久久夜色精品亚洲噜噜国产mv| 国产精品天天摸av网| 狠狠入ady亚洲精品经典电影| 亚洲欧洲一区二区三区| 欧美久久婷婷综合色| 亚洲精品欧美精品| 久久久久久久综合日本| 性色av一区二区怡红| 国产日韩一区| 亚洲国产精品视频一区| 国产日韩一级二级三级| 香蕉av777xxx色综合一区| 99精品99久久久久久宅男| 欧美激情一区二区三区| 伊人色综合久久天天| 性高湖久久久久久久久| 国产精品爽爽爽| 国产日韩欧美高清免费| 国产精品视频yy9099| 欧美在线视频观看免费网站| 国产一区999| 欧美一区二区三区成人| 欧美日韩日本国产亚洲在线| 在线精品视频在线观看高清| 亚洲国产精品美女| 久久婷婷久久一区二区三区| 亚洲精品之草原avav久久| 国产精品久久国产三级国电话系列| 亚洲一区欧美| 精品成人免费| 美国三级日本三级久久99| 欧美国产一区二区| 欧美精品久久99| 久久精品水蜜桃av综合天堂| 亚洲精品在线免费| 韩国av一区二区三区在线观看| 国产一区二区三区久久| 国内自拍一区| 玖玖精品视频| 一级日韩一区在线观看| 欧美精品色一区二区三区| 一色屋精品视频在线观看网站| 亚洲精品国精品久久99热一| ●精品国产综合乱码久久久久| 黄色精品在线看| 一本久久综合亚洲鲁鲁五月天| 国产精品成人午夜| 亚洲一区精彩视频| 欧美伦理一区二区| 亚洲自拍偷拍色片视频| 亚洲区一区二区三区| 久久久久九九视频| 999在线观看精品免费不卡网站| 日韩视频在线一区| 狠狠色丁香久久综合频道| 欧美韩日高清| 国产目拍亚洲精品99久久精品| 亚洲精品网址在线观看| 欧美日韩性生活视频| 欧美极品影院| 老司机免费视频一区二区三区| 午夜精品www| 欧美午夜视频在线| 欧美激情一区二区三区全黄| 欧美影院视频| 亚洲国产一区二区a毛片| 国产欧美精品一区二区三区介绍| 一本一道久久综合狠狠老精东影业| 亚洲一区二区三区精品在线| 亚洲男人av电影| 国产精品嫩草影院一区二区| 亚洲欧美日本精品| 欧美激情一区二区三区不卡| 最新日韩av| 午夜精品久久久久久久久久久久| 国产视频观看一区| 国产精品婷婷午夜在线观看| 日韩一区二区精品在线观看| 国产精品尤物福利片在线观看| 国产欧美精品久久| 久久精品二区| 在线视频亚洲| 久久亚洲精品一区二区| 亚洲人成毛片在线播放| 国产精品免费久久久久久| 久久一日本道色综合久久| 99精品国产在热久久| 国产麻豆日韩欧美久久| 最新69国产成人精品视频免费| 国产精品日韩欧美综合| 麻豆九一精品爱看视频在线观看免费| 欧美在线视频一区二区三区| 国产曰批免费观看久久久| 亚洲午夜一区二区三区| 亚洲精品色婷婷福利天堂| 黄色影院成人|