《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > NIOS下實(shí)現(xiàn)存儲(chǔ)速度可調(diào)的SD卡FAT文件系統(tǒng)
NIOS下實(shí)現(xiàn)存儲(chǔ)速度可調(diào)的SD卡FAT文件系統(tǒng)
2017年微型機(jī)與應(yīng)用第8期
劉人萍,汪濤
重慶大學(xué) 物理學(xué)院,重慶 401331
摘要: 由于NIOS下自帶的SPI控制器,一旦建立,SPI clock(SCLK)的頻率在使用過程中是不允許被修改的,即SPI的讀取速度是不可改變的,這在很大程度上限制了SD卡的使用性能,因?yàn)樵诳ǔ跏蓟臅r(shí)候,SCLK時(shí)鐘最大不能超過400 kHz。使用軟件模擬SPI,通過示波器調(diào)試時(shí)序,并且移植了FATFS文件系統(tǒng)實(shí)現(xiàn)SD的存儲(chǔ)管理。最后通過存儲(chǔ)文件測(cè)試在不同速度下的存儲(chǔ)時(shí)間。
Abstract:
Key words :

  劉人萍,汪濤

  (重慶大學(xué) 物理學(xué)院,重慶 401331)

        摘要:由于NIOS下自帶的SPI控制器,一旦建立,SPI clock(SCLK)的頻率在使用過程中是不允許被修改的,即SPI的讀取速度是不可改變的,這在很大程度上限制了SD卡的使用性能,因?yàn)樵诳ǔ跏蓟臅r(shí)候,SCLK時(shí)鐘最大不能超過400 kHz。使用軟件模擬SPI,通過示波器調(diào)試時(shí)序,并且移植了FATFS文件系統(tǒng)實(shí)現(xiàn)SD的存儲(chǔ)管理。最后通過存儲(chǔ)文件測(cè)試在不同速度下的存儲(chǔ)時(shí)間。

  關(guān)鍵詞: NIOS;軟件SPI;FATFS文件系統(tǒng);SD卡

  中圖分類號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.08.027

  引用格式:劉人萍,汪濤.NIOS下實(shí)現(xiàn)存儲(chǔ)速度可調(diào)的SD卡FAT文件系統(tǒng)[J].微型機(jī)與應(yīng)用,2017,36(8):85-87,91.

0引言

  與傳統(tǒng)處理器相比,NIOS II嵌入式系統(tǒng)在設(shè)計(jì)的時(shí)候可以根據(jù)不同的需求來增減外設(shè)的種類和數(shù)量,在FPGA上面快速地搭建硬軟件平臺(tái)。再加上可以根據(jù)需要很方便地把FPGA并行處理的IP核嵌入到NIOS II系統(tǒng)中,而只需要簡(jiǎn)單的Avalon接口總線,所以其靈活的構(gòu)造方式越來越受到開發(fā)人員的青睞。

  嵌入式系統(tǒng)都需要用到大容量存儲(chǔ)設(shè)備,以備數(shù)據(jù)存儲(chǔ)。目前常用的存儲(chǔ)設(shè)備有U盤、Flash芯片、SD卡等,綜合比較,最適合嵌入式系統(tǒng)的可移動(dòng)存儲(chǔ)設(shè)備莫過于SD卡了。SD卡不僅容量可以做到32 GB以上,而且支持SPI,更換方便,編程簡(jiǎn)單,最高通信速度可以達(dá)到18 Mb/s,可滿足于一般的應(yīng)用要求。

  然而在NIOS中使用SPI方式與SD卡通信的時(shí)候,由于在軟核的構(gòu)造過程中,系統(tǒng)已經(jīng)把SPI的時(shí)鐘頻率選定,在軟件編程時(shí)不可以再去修改SPI的速率,再加上SD卡在初始化過程時(shí)鐘最大不超過400 kHz[1],這樣在很大程度上限制了SD卡的使用性能。解決以上問題的方法就是不使用NIOS II自帶的SPI控制器,利用軟件模擬的方式,可以隨時(shí)調(diào)整SPI的時(shí)鐘速率。

  本文將從NIOS II軟核的構(gòu)建開始,利用軟件模擬SPI,接著寫SD的底層驅(qū)動(dòng),最后移植FATFS文件系統(tǒng)來管理SD卡,測(cè)量SD卡在不同的速率下寫文件所需要的時(shí)間。

1NIOS II軟核的構(gòu)建

  1.1SOPC系統(tǒng)結(jié)構(gòu)簡(jiǎn)介[2]

  為了盡可能簡(jiǎn)單地驗(yàn)證本文所述內(nèi)容,在硬件方面只選擇了所必需的硬件,其中包括處理器和支持處理工作的外圍設(shè)備以及4個(gè)通用的IO,具體如下:

  (1)NIOS II 處理器。

  (2)EPCS:FPGA的配置芯片,相當(dāng)于計(jì)算機(jī)的硬盤。由于FPGA掉電后,代碼和配置信息都會(huì)丟失,因此EPCS的功能一方面是保存NIOS II軟核的配置信息,另一方面是保存用戶需要運(yùn)行的程序代碼。

  (3)DDR2 SDRAM: 程序運(yùn)行的地方。上電之后,系統(tǒng)會(huì)把EPCS中的代碼搬移到SDRAM中運(yùn)行。

  (4)JTAG :第一是將編譯好的程序下載到開發(fā)板中;第二是通過JTAG_UART來調(diào)試程序,打印程序的執(zhí)行結(jié)構(gòu)。

  (5)4個(gè)通用IO : 由于用軟件來模擬SPI,因此只要4個(gè)通用IO,其中3個(gè)是輸出方向(SCLK,MOSI,CS),一個(gè)是輸入方向(MISO)。

  1.2NIOS II 軟核構(gòu)建流程[3]

  (1)時(shí)鐘。時(shí)鐘是一個(gè)數(shù)字系統(tǒng)不可缺少的一部分,在嵌入式系統(tǒng)中尤為重要。時(shí)鐘信號(hào)的質(zhì)量也決定著嵌入式系統(tǒng)工作能否穩(wěn)定。在本次NIOS II軟核構(gòu)建中使用PLL來得到所希望的時(shí)鐘頻率。本文中所使用的開發(fā)板的晶振頻率是50 MHz,希望得到的時(shí)鐘頻率也是50 MHz,按理說是不需要PLL的,但是經(jīng)過PLL之后輸出的時(shí)鐘在穩(wěn)定性方面更好一些,所以就用PLL來生成一個(gè)頻率仍為50 MHz的時(shí)鐘。

  (2)軟核及控制器構(gòu)建。這部分以NIOS II CPU為核心,包含了存儲(chǔ)單元的控制器和通用的IO接口。在CPU選擇過程中有三種類型可供選擇,從資源消耗和工作速度的角度出發(fā),本文選擇了NIOSII/s。在選擇SDRAM控制器的時(shí)候,需要根據(jù)自己實(shí)際的硬件來進(jìn)行選擇,一般的數(shù)據(jù)在所使用芯片的DATASHEET中可以查到。然后是添加Flash控制器,這里使用的是EPCS,最后建立system ID和JTAG_UART。

  (3)添加外圍設(shè)備。這里為了盡可能簡(jiǎn)單地驗(yàn)證本文功能,只添加了4個(gè)通用IO來模擬SPI時(shí)序。這里使用了三個(gè)輸出IO(CS,SCLK,MOSI)和一個(gè)輸入IO(MISO)。

2軟件模擬SPI及SD卡底層驅(qū)動(dòng)

  2.1SPI簡(jiǎn)介

  SPI(Serial Peripheral Interface)是Motorola首先在其處理器上面定義的。SPI主要應(yīng)用在EEPROM、Flash、AD轉(zhuǎn)換等。SPI是一種高速的、全雙工、同步的通信總線,并且在芯片的引腳上只占用四跟線,既節(jié)約了芯片的引腳,也方便了PCB的布局布線。SPI接口一般使用四跳線通信:MISO:主設(shè)備輸入,從設(shè)備輸出;MOSI:主設(shè)備輸出,從設(shè)備輸入;SCLK:時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;CS:從設(shè)備片選信號(hào),由主設(shè)備產(chǎn)生。

  2.2SD卡相關(guān)介紹

  SD卡(Secure Digital Memory Card)是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地應(yīng)用在便攜式設(shè)備中。按容量可以把SD卡分為三類[1]:SDSC(0~2 GB),SDHC(2~32 GB),SDXC(32 GB~2 TB)。

  SD卡和SDHC卡協(xié)議基本兼容,但是同SDXC卡的區(qū)別比較大,本文主要介紹目前比較常用的SDHC卡的操作。SD的操作方式一般支持2種方式:SD卡模式和SPI模式,本文使用SPI模式。

  從DATASHEET中可以知道SD卡每個(gè)命令是由6個(gè)字節(jié)組成的[1],第一個(gè)字節(jié)的最高兩位固定為01,然后緊接著是6個(gè)字節(jié)的命令號(hào),其中第2~5字節(jié)為命令參數(shù),如果有些命令沒有命令參數(shù)就設(shè)為0,第6字節(jié)的高7位是CRC,最低位恒為1。SD卡的通信采用發(fā)送應(yīng)答機(jī)制,每發(fā)送一個(gè)命令,SD卡都會(huì)給出一個(gè)應(yīng)答,以告知主機(jī)該命令的執(zhí)行情況,或者返回給主機(jī)需要獲取的數(shù)據(jù)。后面從示波器中可以看到SD卡具體的發(fā)送命令和接收應(yīng)答的相關(guān)時(shí)序。

  2.3軟件模擬速度可調(diào)的SPI

  根據(jù)SD卡手冊(cè)的Bus Timing可以看出,SD卡底層的讀寫時(shí)序是在時(shí)鐘的上升沿接收數(shù)據(jù),在時(shí)鐘的下降沿發(fā)出數(shù)據(jù)。所以根據(jù)這個(gè)時(shí)序要求,就可以通過軟件來模擬SD卡最底層的數(shù)據(jù)讀寫。圖1右側(cè)是寫一個(gè)字節(jié)的函數(shù),這個(gè)函數(shù)可以通過調(diào)節(jié)usleep(u32 nus)函數(shù)中的參數(shù)來調(diào)整SCLK的速度,從而達(dá)到了SPI寫一個(gè)字節(jié)速度可調(diào)的目的。同理可以寫出讀取一個(gè)字節(jié)的函數(shù),同樣可以根據(jù)usleep(u32 nus)中延時(shí)的參數(shù)不同來控制SPI讀取數(shù)據(jù)的速度。

  

001.jpg

  2.4SD卡的初始化

  有了SD卡底層的讀寫一個(gè)字節(jié)的函數(shù)之后,就可以與SD卡進(jìn)行通信了。根據(jù)SD卡的數(shù)據(jù)手冊(cè)可以總結(jié)出SD卡初始化的大致流程:首先需要給SD卡發(fā)送大于74個(gè)時(shí)鐘,這是因?yàn)镾D卡內(nèi)部有個(gè)供電電壓上升時(shí)間,大概為64個(gè)SCLK,剩下的10個(gè)SCLK用于SD卡同步,然后再發(fā)送CMD0使SD卡進(jìn)入IDLE狀態(tài);接著發(fā)送CMD8,檢查這個(gè)SD卡是否支持2.0協(xié)議;之后根據(jù)不同的應(yīng)答值檢查SD卡;最后初始化結(jié)束之后,需要多發(fā)8個(gè)SCLK使SD卡完成某些操作[4]。在完成初始化之后,就可以進(jìn)入SD卡的讀寫數(shù)據(jù)了。在調(diào)試過程中利用示波器看到的波形圖如圖2所示。然后對(duì)比手冊(cè)給出的發(fā)送命令和返回相應(yīng)的時(shí)序圖,可以驗(yàn)證以上模擬的SPI時(shí)序是否正確可行。

002.jpg

  圖2(a)是SD卡手冊(cè)給出的部分復(fù)位時(shí)序圖,正常情況下在主機(jī)發(fā)送CMD0之后,SD卡會(huì)返回主機(jī)0x01。圖2(b)是實(shí)際在示波器上面看到的時(shí)序,根據(jù)SD卡命令形式可以看出,NIOS II主機(jī)發(fā)送的6個(gè)命令字節(jié)分別是:第1個(gè)字節(jié):0x40(命令第一個(gè)字節(jié)最高兩位必須為01),Command = 0;第2~5個(gè)字節(jié):0x00,0x00,0x00,0x00為命令的參數(shù);第6個(gè)字節(jié):0x95命令CRC校驗(yàn) + 最低位的“1”。

  然后SD卡接收到NIOS II主機(jī)發(fā)送的CMD0命令之后,給出了一個(gè)0x01的應(yīng)答,從而可以看出,上述軟件模擬的SPI時(shí)序是正確的。

  2.5SD卡讀寫功能測(cè)試

  對(duì)SD卡初始化完成之后,就可以正常使用SD卡了。由于SD卡是存儲(chǔ)數(shù)據(jù)的設(shè)備,對(duì)SD的使用無非是讀數(shù)據(jù)和寫數(shù)據(jù)。有了上面寫命令和讀數(shù)據(jù)的基礎(chǔ)之后,就可以通過命令的形式來讀寫SD卡了。

  SD卡手冊(cè)規(guī)定,如果想讀SD卡某個(gè)扇區(qū)數(shù)據(jù),發(fā)送命令CMD17,參數(shù)為扇區(qū)數(shù),就可以讀出扇區(qū)內(nèi)的數(shù)據(jù)。寫扇區(qū)通過發(fā)送CMD24來實(shí)現(xiàn)。這里使用了兩個(gè)函數(shù),分別為讀一個(gè)扇區(qū)和寫一個(gè)扇區(qū)函數(shù):

  SD_ReadDisk(buf,0,1)//把扇區(qū)0的數(shù)據(jù)讀到buf中

  SD_WriteDisk(buf,0,1)//把buf中的數(shù)據(jù)寫到扇區(qū)0中

  由于SD卡是塊設(shè)備,在操作的時(shí)候需要一個(gè)扇區(qū)一個(gè)扇區(qū)地操作。在測(cè)試SD卡讀寫功能的時(shí)候,先對(duì)SD卡初始化,接著讀出原來0號(hào)扇區(qū)的數(shù)據(jù),然后再寫入數(shù)據(jù),最后再次讀出,經(jīng)過JTAG_UART的打印,可以看出是符合預(yù)期目標(biāo)的,所以讀寫函數(shù)功能正常。

3FATFS文件系統(tǒng)移植及SD卡速度測(cè)試

  前面只是對(duì)SD卡一個(gè)扇區(qū)的讀寫,而且讀寫都是數(shù)字。要真正有效地利用SD卡保存文件或者音樂等,必須使用文件系統(tǒng)管理。本文將使用FATFS來管理SD卡,實(shí)現(xiàn)SD卡文件的讀寫。FATFS是一個(gè)完全免費(fèi)并且開源的FAT文件系統(tǒng)模塊,用標(biāo)準(zhǔn)的C語言編寫,移植到各種嵌入式設(shè)備只需要進(jìn)行少量的修改。FATFS支持多個(gè)存儲(chǔ)媒介,有獨(dú)立的緩沖區(qū),可以對(duì)多個(gè)文件進(jìn)行讀寫。使用者無需去關(guān)心FATFS內(nèi)部復(fù)雜的協(xié)議,只需要像調(diào)用其提供的其他一系列應(yīng)用接口函數(shù)那樣就可以了。

  在移植使用的時(shí)候,只需要編寫底層FATFS提供的接口函數(shù),它主要包括存儲(chǔ)設(shè)備的讀函數(shù)、寫函數(shù)、初始化等,之后就可以輕松地使用。

  3.1FATFS移植步驟

  (1)在官網(wǎng)下載源碼,解壓。本文所使用的Eclipse編譯環(huán)境中的數(shù)據(jù)類型和源碼文件夾中integer.h里面的定義是一致的,所以不需要改動(dòng)。如果使用其他編譯器的數(shù)據(jù)類型不和源碼中的相同,就需要根據(jù)編譯器定義好數(shù)據(jù)類型。

  (2)在ffconf.h頭文件中修改相關(guān)配置。這里根據(jù)自己的要求,改變某些變量的值,就可以配置出適合自己需求的文件系統(tǒng)。

  (3)由于文件系統(tǒng)模塊完全與磁盤IO層分開,為了增加通用性,F(xiàn)ATFS的開發(fā)者并不確定用戶所用的存儲(chǔ)設(shè)備是哪一類,所以需要用戶自己提供相應(yīng)的底層操作函數(shù)。在diskio.c文件里面,F(xiàn)ATFS已經(jīng)提供了函數(shù)接口,只需要根據(jù)自己的存儲(chǔ)設(shè)備類型,把這些底層操作函數(shù)添加進(jìn)入即可。這里FATFS留出了6個(gè)函數(shù)接口。僅僅是為了驗(yàn)證本文的功能,本文只添加了三個(gè)函數(shù),其余函數(shù)都返回0。添加的函數(shù)為:disk_initialize,disk_read, disk_write。初始化函數(shù)和讀寫扇區(qū)函數(shù)在前面都已經(jīng)使用和測(cè)試過,只需要把這三個(gè)函數(shù)交給文件系統(tǒng)使用就可以了。

  3.2文件系統(tǒng)測(cè)試

  本文對(duì)文件系統(tǒng)的測(cè)試,首先調(diào)用FATFS提供的接口函數(shù)f_getfree來測(cè)試SD卡的總?cè)萘亢褪S嗳萘浚缓笤赟D卡中創(chuàng)建一個(gè)文件,最后顯示SD卡的容量,判斷FATFS文件系統(tǒng)測(cè)試的結(jié)果和實(shí)際的結(jié)果是否一致,再在PC上查看SD卡中是否有剛才創(chuàng)建的文件。本文所用SD卡容量為4 GB,調(diào)用FATFS文件系統(tǒng)提供的接口f_getfree函數(shù)之后,得到了SD卡的容量為3 716 MB,如圖3所示,與實(shí)際的容量是相符合的。

 

003.jpg

  3.3SD卡寫文件速度測(cè)試

  在移植文件系統(tǒng)之后,就可以輕松地使用SD卡來存儲(chǔ)文件了。這里限于硬件條件比較簡(jiǎn)單,所以只對(duì)SD卡寫文件的速度做一個(gè)大致的測(cè)試和估算。如前所述可以通過改變usleep(u32 nus)這個(gè)函數(shù)的參數(shù)來改變SD卡的讀寫速度。本文測(cè)試的方法是:向SD卡寫入100 KB大小的文件,記錄在不同參數(shù)下所用的時(shí)間。最后通過測(cè)試發(fā)現(xiàn),使用usleep(10)函數(shù)寫入100 KB的文件大致需要18 s;使用usleep(1)函數(shù)寫入100 KB的文件大致需要3 s。通過初略的估算,usleep(10)的情況下,數(shù)據(jù)率約為50 kb/s=6.125 kB/s,寫入100 KB內(nèi)容需要16.3 s,再加上SD卡初始化階段的一些通信命令和讀寫命令的開銷時(shí)間,可以認(rèn)為是在正常范圍。

  4結(jié)論

  本文在NIOS下利用軟件模擬SPI,對(duì)SD卡進(jìn)行了準(zhǔn)確的讀寫,然后移植FATFS文件系統(tǒng)來管理SD卡。提出了可以通過改變SPI SCLK的時(shí)鐘頻率來改變SD卡的讀寫速率,并且測(cè)試了在不同速率下SD卡寫文件的速率,可以解決在NIOS II下使用SPI不可改變SCLK速率的問題。

  參考文獻(xiàn)

  [1] SD Group. SD specifications part1: physical layer simplified specification version 2.0[Z].2006.

  [2] ALTERA. NIOS II processor Reference Handbook[Z].2014.

  [3] 蔡偉剛. NIOS II 軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.

  [4] 陳續(xù),鄧中亮.基于NIOS II的SD卡驅(qū)動(dòng)程序開發(fā)[J].電子設(shè)計(jì)工程,2010,18(5):107-110.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
性欧美办公室18xxxxhd| 免费影视亚洲| 久久超碰97中文字幕| 一区二区国产精品| 亚洲精品一区二区在线| 免费成人av在线| 欧美在线播放一区| 亚洲国产精品精华液2区45| 亚洲欧美综合| 亚洲一区尤物| 亚洲性视频网址| 中文日韩在线视频| 亚洲一级网站| 亚洲夜间福利| 亚洲国产美国国产综合一区二区| 国产精品yjizz| 欧美日韩在线播放一区| 欧美日韩免费观看一区三区 | 国产精品亚洲综合久久| 欧美成人黑人xx视频免费观看| 亚洲一区二区在线视频| 亚洲二区免费| 91久久精品国产91久久性色| 亚洲国产精品精华液2区45| 亚洲国产成人久久| 亚洲国产毛片完整版| 亚洲另类一区二区| 亚洲国产高清aⅴ视频| 国产综合婷婷| 极品中文字幕一区| 亚洲国产激情| 亚洲精品免费电影| 在线午夜精品自拍| 黄网站色欧美视频| 在线免费不卡视频| 亚洲人成网站999久久久综合| 国产视频精品网| 国产真实乱偷精品视频免| 国产午夜精品在线| 伊人婷婷久久| 亚洲精品资源| 亚洲小说春色综合另类电影| 亚洲精品一区二区三区四区高清| 好男人免费精品视频| 在线观看成人小视频| 亚洲精品久久久久久久久久久| 激情视频一区二区三区| 在线免费不卡视频| 夜夜嗨av一区二区三区| 亚洲黄色在线视频| 日韩亚洲欧美成人| 亚洲精品婷婷| 亚洲一区二区三区精品在线| 久久激情一区| 一区二区三区鲁丝不卡| 欧美一区中文字幕| 老牛影视一区二区三区| 欧美日产国产成人免费图片| 国产精品视频免费一区| 一区免费观看| 亚洲一区二区三区免费在线观看 | 在线一区二区三区四区| 午夜久久资源| 麻豆亚洲精品| 国产精品久久久久久久浪潮网站| 欧美日韩一区二区三区在线观看免| 欧美精品国产一区| 女仆av观看一区| 国产精品国产馆在线真实露脸| 欧美四级在线观看| 欧美人与性动交a欧美精品| 国产精品免费一区二区三区在线观看| 国产精品久久久久久一区二区三区| 久久久久久91香蕉国产| 日韩视频在线观看国产| 99视频精品免费观看| 亚洲精品黄色| 欧美一区二区免费| 欧美精品一区二区三区高清aⅴ| 欧美久久99| 国产亚洲美州欧州综合国| 亚洲国产欧美不卡在线观看| 免费观看日韩| 国产精品亚洲产品| 亚洲精品视频中文字幕| 亚洲第一页中文字幕| 亚洲免费在线看| 欧美精品入口| 伊人久久大香线蕉av超碰演员| 国内在线观看一区二区三区| 黄色成人91| 亚洲永久免费| 一本久道久久久| 美女任你摸久久| 国产日韩欧美成人| 在线不卡视频| 亚洲欧洲av一区二区| 中文在线资源观看网站视频免费不卡| 午夜精品区一区二区三| 欧美—级高清免费播放| 国产精品久久9| 亚洲欧洲精品天堂一级| 亚洲第一级黄色片| 欧美一区视频在线| 国产精品国产亚洲精品看不卡15 | 国产欧美日韩精品丝袜高跟鞋| 国产主播一区二区三区四区| 中国日韩欧美久久久久久久久| 欧美在线日韩| 午夜日韩福利| 国产精品国产三级国产专播品爱网 | 国产欧美va欧美va香蕉在| 艳妇臀荡乳欲伦亚洲一区| 日韩视频免费在线观看| 女同一区二区| 亚洲第一页中文字幕| 欧美一级视频| 欧美中文字幕第一页| 国产伦精品一区二区三区视频孕妇 | 国产一区观看| 欧美一区影院| 久久久99爱| 很黄很黄激情成人| 久久狠狠亚洲综合| 久久亚洲国产成人| 永久免费毛片在线播放不卡| 亚洲电影中文字幕| 免费91麻豆精品国产自产在线观看| 欧美性感一类影片在线播放| 亚洲免费精品| 亚洲少妇中出一区| 欧美私人网站| 亚洲宅男天堂在线观看无病毒| 91久久久久久久久| 麻豆成人在线播放| 91久久久久久国产精品| 日韩亚洲国产欧美| 欧美日韩精品免费观看视频完整 | 欧美成人日韩| 亚洲人成在线观看| 中文亚洲免费| 国产精品久久久久久av福利软件 | 欧美伊人久久久久久午夜久久久久| 女生裸体视频一区二区三区| 在线观看欧美成人| 亚洲蜜桃精久久久久久久| 欧美精品一区二区三区蜜臀| 一本一本a久久| 香蕉久久国产| 欧美色视频一区| 亚洲视频在线观看三级| 香蕉久久夜色| 韩国av一区二区三区| 亚洲青涩在线| 欧美日韩一二区| 亚洲一区二区三区免费在线观看| 亚洲三级观看| 欧美日韩三级视频| 午夜性色一区二区三区免费视频| 亚洲影院在线观看| 欧美日韩国产一级片| 在线中文字幕不卡| 久久成人人人人精品欧| 精品成人a区在线观看| 日韩视频一区二区| 国产精品女人网站| 亚洲国产一区二区三区在线播| 久久久不卡网国产精品一区| 伊人久久男人天堂| 中文国产一区| 欧美视频一区二区| 欧美一区2区三区4区公司二百| 午夜在线播放视频欧美| 国产欧美日韩精品丝袜高跟鞋| 亚洲午夜激情| 亚洲一二三级电影| 国产午夜久久| 艳妇臀荡乳欲伦亚洲一区| 国产精品一区二区三区乱码| 亚洲国产91精品在线观看| 欧美三级韩国三级日本三斤| 欧美一区永久视频免费观看| 欧美日韩国产天堂| 久久激情五月激情| 欧美视频在线看| 久久精品国产一区二区电影| 欧美日本中文字幕| 夜夜精品视频| 久久久午夜电影| 一区二区三区www| 免费成人毛片| 午夜精品一区二区三区电影天堂| 久久精品三级| 99精品99| 嫩草成人www欧美| 午夜一区二区三区不卡视频| 欧美日韩三级一区二区| 亚洲福利视频网| 欧美日韩国产色视频| 久久xxxx精品视频|