《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于JTAG的Flash在線編程系統實現

基于JTAG的Flash在線編程系統實現

2009-08-03
作者:吳玉香,周建香

  摘 要: 在研究了JTAG調試原理和ARM920T調試模型的基礎上,提出了Linux系統下NAND Flash在線燒寫系統的軟硬件實現方案。硬件采用了簡易并口JTAG,軟件分為4個層次。程序在Linux系統下成功編譯并運行,實現了Flash的在線編程。
??? 關鍵詞: Linux;JTAG;Flash;燒寫系統

?

?? 隨著電子技術的迅速發展,芯片以及系統越來越復雜,體積越來越小,系統測試、故障排除的難度和成本不斷增加,邊界掃描技術為以上問題提供了一個行之有效的解決途徑。IEEE 1149.1標準俗稱JTAG調試標準,最初由JTAG(Joint Test Action Group)小組提出,最終由IEEE 批準并標準化。人們一般用JTAG代表IEEE 1149.1規范。JTAG調試標準極大地推動了邊界掃描技術的發展,在電子產品設計及調試的各個階段得到廣泛應用。
1 JTAG調試原理
1.1 邊界掃描技術

  邊界掃描是邊界掃描技術的核心概念,其基本思想是在芯片的輸入輸出管腳上增加一些邊界掃描寄存器單元(boundary-scan register cell),邊界掃描寄存器單元其實是移位寄存器單元。芯片有兩種工作狀態:調試狀態和正常運行狀態。調試狀態下,邊界掃描寄存器單元將芯片與外圍的輸入輸出隔離開,通過這些邊界掃描寄存器單元可以實現芯片輸入輸出信號的觀察與控制。對于芯片輸入管腳,通過與之相連的邊界掃描寄存器單元可把信號加載到該管腳中去;對芯片輸出管腳,通過與之相連的邊界掃描寄存器單元可實現對該管腳上的輸出信號的捕獲(capture)。正常運行狀態下邊界掃描寄存器單元對芯片來說是透明的,對芯片的正常工作不會造成任何影響[1]。這樣邊界掃描寄存器就提供了一個便捷的方式實現芯片輸入輸出信號的觀察和控制。此外,芯片輸入輸出引腳上的邊界掃描寄存器單元可以相互串起來在芯片周圍形成一個邊界掃描鏈。一般芯片中會提供幾條邊界掃描鏈,實現數據的串行輸入和輸出,在時鐘信號和控制信號的作用下,方便地觀察和控制調試狀態下的芯片。
  芯片在調試狀態與正常運行狀態由不同的時鐘信號驅動:正常運行時由系統主時鐘(MCLK)驅動,調試狀態下由調試時鐘(DCLK)驅動[2]。調試時鐘DCLK一般要比系統主時鐘MCLK慢。
1.2 TAP(Test Access Port)
??? 邊界掃描鏈可實現數據的輸入輸出,從而實現對芯片的觀測與控制。TAP是一個通用端口,并在IEEE1149.1標準中定義,實現對邊界掃描鏈的控制。IEEE1149.1標準里,寄存器分為數據寄存器(DR)和指令寄存器(IR)。邊界掃描鏈只是數據寄存器中的一種。TAP提供了4個強制信號TDI、TDO、TMS、TCK和一個可選信號TRST。通過這些控制信號實現對數據寄存器(DR)和指令寄存器(IR)的訪問。JTAG結構示意圖如圖1所示。

?


??? (1)TCLK(Test Clock Input):TAP時鐘驅動信號。
??? (2)TMS(Test Mode Select):TAP的模式選擇信號,用來控制狀態機的轉換。
??? (3)TDI(Test Data Input):數據串行輸入接口。
??? (4)TDO(Test Data Output):數據串行輸出端口。
??? (5)TRST(Test Reset Input):TAP Controller復位信號。
??? TAP是芯片與仿真器的接口,對芯片的任何訪問都是通過TAP來實現。TAP Controller通過TMS控制信號和TCLK時鐘驅動信號實現狀態轉換,其狀態轉換機如圖2所示[1]。狀態轉換機共有16個狀態,每一個狀態在TCLK上升沿根據TMS信號的高低電平來決定是否進入下一個狀態。


  通過TAP訪問數據寄存器(DR)的步驟為:(1)通過指令寄存器(IR)選擇待訪問的數據寄存器;(2)指定的數據寄存器連接在TDI和TDO之間;(3)在時鐘信號TCLK的驅動下,由TDI實現新數據輸入,由TDO實現數據輸出[3]。
2 ARM920T調試系統
  ARM920T處理器與調試相關的模塊有ARM CPU core(提供調試的硬件支持)、Embedded ICE(產生調試中斷,設置斷點和觀察點)和TAP Controller等。
?ARM920T常用掃描鏈[2]有:
??? Scan chain 0,長度為184 bit,可實現芯片連接檢查和芯片內部邏輯測試。
??? Scan chain 1,長度為67 bit,其中包括32 bit數據位、32 bit指令位和3 bit控制信號。
??? Scan chain 2,可訪問EmbeddedICE中的硬件寄存器。
??? Scan chain 3,長度用戶自定義,可以訪問外部邊界掃描鏈。默認使用的掃描鏈。
??? Scan chain 6,包括32 bit數據位、7 bit地址位、1 bit讀寫控制位,可對ETM9中的寄存器編程。
  ARM920T中常用指令有:
??? IDCODE(b1110):主要用來讀取CPU ID號。
??? SCAN_N(b0010):主要用來實現不同掃描鏈的選擇,ARM920T默認選擇掃描鏈3。
??? EXTEST(b0000):將掃描鏈置于外部測試模式。
??? INTEST(b1100):將掃描鏈置于內部測試模式。
??? RESTART(0100):使ARM920T處理器由調試態返回正常運行態。
3 燒寫系統實現
  NAND Flash燒寫系統分為硬件系統和軟件系統。硬件系統負責JTAG協議轉換,實現對TAP的硬件控制;軟件系統負責JTAG工作時序的模擬以及TAP的軟件控制,是燒寫系統的核心。
3.1 硬件實現
  一般JTAG仿真器并不具有Flash燒寫功能,且其價格比較昂貴,因此文中采用了目前較為流行且比較簡單的WIGGLER小板,實現JTAG Flash在線燒寫的硬件支持。這種WIGGLER小板是一種簡易并口JTAG,可方便地實現并口對TAP的直接控制。硬件原理圖如圖3所示。其中74HC244是一款三態緩沖器,其作用是實現電平轉換。

3.2 軟件實現
  軟件系統總體上分為4個層次:并口驅動層、JTAG控制層、數據處理層以及應用程序層。軟件的層次結構如圖4所示。

  并口驅動層實現軟件最底層的操作,本軟件基本的思想就是通過對PC機上標準并口的直接操作實現對TAP的控制,從而達到觀測和控制芯片的目的。JTAG控制層是整個軟件的關鍵部分,它利用并口驅動層底層操作接口,實現TAP操作和狀態機不同狀態的循環控制。數據處理層相對于底層和上層的功能,可視為數據處理緩沖層,這一層并沒有牽扯到任何底層的操作,僅是為了方便應用程序的實現,定義了一些關鍵的數據結構和數據處理函數。應用程序層是軟件核心功能實現層,主要實現了NAND Flash工作時序的軟件模擬以及有關的讀、寫及擦除等操作。
3.2.1 Linux下并口操作
  Linux程序運行在保護模式下,不能直接對并口進行操作,可通過函數調用ioperm(unsigned long port,unsigned long num, bool on_off)來獲得并口的訪問權。參數port代表要訪問并口的地址,在程序中共定義了三個并口地址:#define LPT1 0x378、#define LPT2 0x278和#define LPT3 0x3bc;參數num代表連續的端口數目,一般包括數據寄存器端口、控制寄存器端口和狀態寄存器端口;邏輯變量on_off代表對端口操作方式,1代表打開0代表關閉。并口可用性可通過向端口寫入數據再讀回數據的方式來檢查,讀回的數據如果和寫入的數據相同則端口可用。并口驅動層提供的訪問接口有:
  int Getvalidppt(void);?????? //取得可用并口地址
??? void Setpptcompmode(void);?? //設置并口工作模式
  此外還有兩個宏定義:
??? #define Outputppt(value) outb(unsigned long validPort,value) //并口數據輸出
??? #define Inputppt() inb((unsigned long) (validPpt+0x1))??????? //并口數據讀入
3.2.2 JTAG控制層
??? JTAG控制層主要實現TAP CONTROLLER控制,其中涉及TCK、TMS、TDI、TDO 4個控制信號和狀態機的實現。輸出信號控制接口由如下宏實現:
??? #define JTAG_SET(value) Outputppt(value)
其中value為輸出數據,組合模式為TDI|TMS|TCK,TDI、TMS、TCK分別有兩種狀態,如:TDI_H、TDI_L,TMS_H、TMS_L,TCK_H、TCK_L,分別代表三種信號的高低電平。
??? 輸入信號(TDO)接口由如下宏實現:
??? #define JTAG_GET_TDO() ((Inputppt()&(1<<7)) ? LOW:HIGH )
??? TDO輸出信號與狀態寄存器第7位相連,此位使用了反相器,故在讀入數據時需要取反。
??? JTAG控制層利用TAP Controller狀態控制機主要實現數據的輸出與輸入、指令的輸入、CPU ID號的讀取等功能。主要的接口函數有:
??? void JTAG_Shiftdrstate(char *wrDR, char *rdDR);
                    //同時實現數據輸出與讀入
??? void JTAG_Shiftdrstatenotdo(char *wrDR);
??? void JTAG_Shiftirstate(char *wrIR);//指令輸出
??? void JTAG_Readid(void);      //讀取CPU ID
  訪問指令寄存器的狀態轉換流程為:
??? Run-Test/Idle->Select-DR-Scan->Select-IR-Scan->Capture-IR->Shift-IR->Exit-IR->Update-IR-> Run-Test/Idle
??? 數據寄存器由指令寄存器中的當前指令決定,訪問數據寄存器的狀態轉換流程為:
??? Run-Test/Idle->Select-DR-Scan->Capture-DR->Shift-DR->Exit-DR->Update-DR-> Run-Test/Idle
??? 函數JTAG_ShiftDRState()同時實現數據讀入、讀出,其程序流程圖如圖5所示。

3.2.3 數據處理層
  邊界掃描單元在使用前需要初始化,邊界掃描單元的數目即為邊界掃描鏈的長度,s3c2410處理器的邊界掃描鏈的長度為426。處理器的每個引腳都對應一個邊界掃描單元,每個引腳可視為邊界掃描單元的索引,s3c2410處理器有272個引腳。對邊界掃描單元的初始化即是對處理器引腳賦初值。初始化數據放在邊界掃描鏈數組中,有如下定義:
??? char outcelldata[SC2410_MAX_CELL_INDEX+2];
??? char incelldata[SC2410_MAX_CELL_INDEX+2];
??? 數組outcelldata[]存放待輸出數據,incelldata[]存放讀入數據,數組的每個單元對應一個邊界掃描單元。其中SC2410_MAX_CELL_INDEX為s3c2410處理器邊界掃描單元的數目426。
??? s3c2410處理器數據寬度為32位,地址線27位,為便于數據、地址的統一處理定義如下3個數組:
??? int? dataoutcellindex[32];
??? int? dataincellindex[32];
??? int? addrcellindex[27];
??? 數據輸出與讀入對應不同邊界掃描單元,如:DATA0讀入對應的掃描單元索引為100,輸出對應的掃描單元的索引為99。將數據輸出掃描單元的索引組合到具有32個元素的數組(dataoutcellindex)中,便于數據輸出掃描單元的引用;將數據讀入掃描單元的索引組合到具有32個元素的數組(dataincellIndex)中,便于數據讀入掃描單元的引用;將地址輸出掃描單元的索引組合到具有27個元素的數組(addrcellindex)中,便于地址輸出掃描單元的引用。比如數據位DATAO要輸出低電平,數組引用方式如下:
??? outcelldata [dataOutCellIndex[0]]=LOW;
??? 從DATA0讀入一位數據,數組的引用方式如下:
??? incelldata[dataInCellIndex[0]]=JTAG_GET_TDO();
??? 數據處理層主要接口函數有:
??? void SC2410_Initcell(void);    //邊界掃描單元初始化
??? void SC2410_Setpin(int index, char value);
                   //處理器引腳電平的設置
??? char SC2410_Getpin(int index);?? //引腳信號的讀入
??? void SC2410_Setaddr(U32 addr);?? //設置地址數據
??? void SC2410_Setdatabyte(U8 data);//寫字節數據
??? U8 SC2410_Getdatabyte(void);???? //讀字節數據
3.2.4 應用程序層
??? 應用程序層主要實現NAND Flash的讀、寫及擦除等上層操作。以K9F1208為例,NAND Flash一般的操作流程是:先向Flash芯片發操作命令,再發操作地址,如果Flash芯片準備就緒再進行數據的讀/寫或芯片的擦除等操作。K9F1208主要控制信號有:CLE(芯片命令鎖存,高電平有效)、ALE(地址鎖存,高電平有效)、WE(芯片寫操作,低電平有效)、RE(芯片讀操作,低電平有效)、CE(芯片使能)、R/B(芯片狀態指示,高電平代表芯片就緒,低電平代表芯片忙)、IO(0~7)數據輸入/輸出端口。程序主要接口函數有:
??? NF_CMD():實現Flash寫命令操作。
??? NF_ADDR():實現Flash地址輸出。
??? NF_WRDATA():實現數據寫。
??? NF_RDDATA():實現數據讀。
??? 參考K9F1208芯片寫命令操作時序,NF_CMD() Flash寫命令函數實現為:設CE片選信號有效;命令鎖存信號CLE有效同時無效地址鎖存信號ALE;寫信號WE有效同時無效讀信號RE;輸出命令;最后無效WE信號實現命令鎖存。其他相關函數的實現都是以軟件的方式模擬NAND Flash的硬件工作時序,其實現方法與Flash寫命令函數NF_CMD()相似。
3.3 測試及實驗
??? 燒寫軟件在Linux系統下編譯成功,在命令行輸入“./zjx_sjf_linux /f:interrupt.bin”,燒寫程序開始運行,運行界面如圖6所示。其中zjx_sjf_linux是應用程序名,/f:為命令行參數,interrupt. bin為待燒寫程序。


??? 從圖6可以看出程序能夠成功運行且能夠實現程序在Linux系統下的燒寫。
??? 本文研究了JTAG標準和ARM920T,介紹了NAND Flash在Linux系統下燒寫系統的軟硬件實現方案。硬件采用了簡易并口JTAG,軟件部分給出了系統的設計架構、功能模塊和實現接口。并口JTAG燒寫Flash,速度有較大的限制,進一步的工作就是改善Flash的燒寫速度,提高Flash燒寫效率。


參考文獻
[1] IEEE1149.1. IEEE standard test access port and boundary-
scan architecture [S]. 2001.
[2] ARM Corp. ARM920T Technical Reference Manual. http://www.arm.com.
[3] OPEN-JTAG開發小組.ARM JTAG調試原理[Z].2007.
[4] 陸晗,潘雪增.基于ARM的JTAG調試器[J].計算應用與軟件,2007,24(2).

?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热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>
          亚洲天堂久久| 久久激情婷婷| 国产综合自拍| 欧美亚洲一级片| 先锋亚洲精品| 亚洲美女色禁图| 久久久精品2019中文字幕神马| 亚洲国产欧美另类丝袜| 亚洲国产精品一区在线观看不卡| 久久久久久9999| 久久这里有精品视频| 国产伦精品一区二区三区高清版| 米奇777在线欧美播放| 一区二区三区精品视频在线观看| 亚洲伦理一区| 老司机精品视频一区二区三区| 亚洲校园激情| 亚洲视频欧美视频| 一本大道av伊人久久综合| 欧美韩日一区| 欧美激情综合五月色丁香| 欧美一区二区福利在线| 国产精品久久91| 国产精品久久久久一区二区| 欧美成人午夜免费视在线看片| 亚洲国产色一区| 99re6这里只有精品视频在线观看| 久久人人爽人人| 蜜臀av性久久久久蜜臀aⅴ四虎| 激情91久久| 一区二区电影免费在线观看| 亚洲一区二区三区免费视频| 国产精品久久久久婷婷| 国产综合av| 亚洲国产精品电影| 尤物精品在线| 国产日产高清欧美一区二区三区| 欧美一区二区三区喷汁尤物| 国产一区二区三区在线观看免费| 亚洲视频第一页| 欧美在线亚洲一区| 欧美国产精品va在线观看| 免费成人av在线| 国产欧美日韩亚洲一区二区三区| 欧美专区在线播放| 麻豆成人精品| 国产真实精品久久二三区| 欧美一级日韩一级| 亚洲欧美韩国| 国产精品黄色在线观看| 一本一本久久a久久精品牛牛影视| 亚洲国产裸拍裸体视频在线观看乱了中文| 另类尿喷潮videofree| 欧美大片在线观看一区二区| 影音先锋成人资源站| 亚洲蜜桃精久久久久久久| 日韩视频欧美视频| 欧美日韩一区二区免费在线观看| 国产精品美女主播在线观看纯欲| 欧美精品国产一区| 免费观看30秒视频久久| 亚洲午夜视频在线| 欧美一区在线直播| 欧美成人亚洲成人| 欧美三级午夜理伦三级中文幕| 欧美在线影院| 雨宫琴音一区二区在线| 伊人夜夜躁av伊人久久| 国内免费精品永久在线视频| 国产精品成人久久久久| 欧美人成网站| 亚洲国产精品一区在线观看不卡| 欧美激情综合色综合啪啪| 国产精品久久午夜| 国产亚洲精品久久久久动| 欧美中文字幕在线播放| 国产一区二区三区久久久| 夜夜爽av福利精品导航| 久久国产精品72免费观看| 国产精品二区在线观看| 欧美在线一级va免费观看| 欧美91大片| 欧美国产精品劲爆| 欧美成人首页| 国产日韩在线看| 亚洲国产精品女人久久久| 久久综合色天天久久综合图片| 亚洲黑丝一区二区| 欧美日韩一区二区高清| 亚洲电影免费| 狠狠色丁香婷婷综合久久片| 亚洲欧美中文日韩在线| 欧美日韩一区二区视频在线观看| 欧美高清一区| 久久精品91| 在线视频国内自拍亚洲视频| 国产精品羞羞答答xxdd| 麻豆91精品91久久久的内涵| 欧美日韩国产色站一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 精品91久久久久| 在线播放日韩欧美| 久久久久久久久岛国免费| 亚洲九九爱视频| 国产精品高清在线| 久久精品久久99精品久久| 在线免费精品视频| 欧美午夜片在线免费观看| 国产真实久久| 久久天天综合| 亚洲综合日韩中文字幕v在线| 欧美高清视频一区二区| 久久国产精品99国产| 亚洲区第一页| 亚洲精品久久久久中文字幕欢迎你| 欧美高清不卡在线| 欧美大片在线观看一区二区| 久久国产精品久久国产精品| 欧美性一区二区| 久久不射中文字幕| 国内精品福利| 国产精品久久| 国产精品久久久一区二区三区| 免费视频一区| 久久亚洲视频| 中文久久乱码一区二区| 欧美国产视频在线| 欧美在线高清视频| 最新日韩在线| 亚洲另类在线一区| 亚洲第一搞黄网站| 亚洲三级免费电影| 欧美电影免费观看高清完整版| 一区二区三区在线观看视频| 午夜视频久久久| 亚洲亚洲精品三区日韩精品在线视频| 欧美二区在线观看| 影音先锋日韩资源| 美国十次了思思久久精品导航| 亚洲成色最大综合在线| 亚洲欧美国产精品va在线观看| 久久综合给合久久狠狠色| 午夜精品久久久99热福利| 亚洲国产黄色片| 有坂深雪在线一区| 在线不卡视频| 欧美另类高清视频在线| 亚洲一区二区三区免费在线观看| 国产字幕视频一区二区| 国产亚洲精品bt天堂精选| 亚洲一二三区在线观看| 日韩亚洲欧美中文三级| 亚洲一区3d动漫同人无遮挡| 欧美日韩在线精品一区二区三区| 一区国产精品| 在线看片成人| 亚洲三级性片| 欧美中文在线字幕| 激情六月综合| 欧美国产日韩a欧美在线观看| 欧美图区在线视频| 欧美一区三区二区在线观看| 国产亚洲欧美一区二区| 国产欧美日韩视频一区二区| 国产欧美精品久久| 欧美视频在线一区二区三区| 亚洲欧美一区二区三区在线| 在线亚洲美日韩| 欧美日韩伦理在线免费| 亚洲精品久久久久久下一站| 久久久久久夜| 亚洲人成人一区二区三区| 国产乱人伦精品一区二区| 国产精品v欧美精品v日本精品动漫| 久久全球大尺度高清视频| 亚洲免费视频成人| 一本色道久久精品| 麻豆成人在线| 国产一区二区三区黄| 欧美在线亚洲一区| 国产精品久久久久9999高清| 亚洲国产高清在线| 一区二区三区精品| 亚洲一区免费看| 精品成人a区在线观看| 久久成人免费电影| 一区二区三区www| 欧美日韩在线看| 国产欧美欧美| 狠狠色综合网| 欧美1区2区| 亚洲一区在线观看视频| 国产精品劲爆视频| 亚洲欧美日韩国产一区二区三区| a91a精品视频在线观看| 久久综合九色综合久99| 欧美一级视频免费在线观看| 亚洲狠狠婷婷| 久久精品二区亚洲w码| 国产精品永久免费| 99国产精品久久久久老师| 国产精品久久久久久久电影| 国产日韩综合| 亚洲午夜精品福利| 欧美成人午夜影院| 欧美中文在线免费| 欧美日本在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲精一区二区三区| 美女成人午夜| 国产精品丝袜久久久久久app| 欧美制服第一页| 久久在线免费观看| 欧美高清视频www夜色资源网| 性一交一乱一区二区洋洋av| 欧美日韩在线亚洲一区蜜芽| 亚洲人成在线观看网站高清| 狠狠色综合网站久久久久久久| 欧美激情二区三区| 久久蜜桃资源一区二区老牛| 久久久久99精品国产片| 亚洲国产婷婷香蕉久久久久久| 日韩视频在线观看一区二区| 久久综合成人精品亚洲另类欧美| 你懂的国产精品| 欧美日韩国产片| 欧美国产日韩xxxxx| 欧美成年人视频网站欧美| 亚洲欧美高清| 亚洲视频在线二区| 亚洲精品免费电影| 欧美日韩国产在线播放| 欧美日韩亚洲综合在线| 亚洲电影免费观看高清完整版| 国产精品高潮呻吟视频| 亚洲毛片av| 久久久亚洲高清| 国产精品一区毛片| 国产色产综合色产在线视频| 欧美日韩一级大片网址| 在线观看的日韩av| 欧美久久久久| 欧美日韩调教| 欧美理论大片| 国产一区二区在线观看免费| 国产精品激情av在线播放| 欧美午夜a级限制福利片| 欧美极品在线视频| 亚洲久久在线| 久久精品亚洲一区二区| 国产麻豆午夜三级精品| 亚洲激情电影中文字幕| 日韩亚洲欧美一区二区三区| 欧美视频一区二区| 欧美大片18| 欧美香蕉大胸在线视频观看| 欧美成人dvd在线视频| 亚洲人成免费| 99精品国产热久久91蜜凸| 国产精品人人爽人人做我的可爱| 国产日韩一区欧美| 欧美另类专区| 最近中文字幕mv在线一区二区三区四区| 欧美巨乳波霸| 精品51国产黑色丝袜高跟鞋| 美日韩在线观看| 欧美区二区三区| 欧美福利视频网站| 国产欧美一区二区白浆黑人| 亚洲国产1区| 性欧美大战久久久久久久久| 午夜精品亚洲一区二区三区嫩草| 久久久久这里只有精品| 亚洲大片一区二区三区| 亚洲一区免费| 一区二区三区在线高清| 国产精品嫩草99av在线| 国产精品拍天天在线| 欧美激情免费在线| 99视频在线观看一区三区| 韩国一区二区在线观看| 国产日韩欧美在线视频观看| 欧美亚洲第一页| 午夜精品一区二区三区电影天堂| 亚洲欧美激情一区| 国产精品美女久久| 欧美一区二区三区免费观看视频| 欧美自拍丝袜亚洲| 亚洲精品乱码久久久久久按摩观| 久久亚洲高清| 国产一区二区看久久| 在线成人av| 久久亚洲精品伦理| 欧美在线视屏| 久久福利毛片| 欧美体内she精视频| 亚洲激情女人| 欧美人与性动交α欧美精品济南到| 久久全球大尺度高清视频| 亚洲精品在线电影| 欧美激情麻豆| 欧美三级韩国三级日本三斤| 午夜精品久久久久久久久| 亚洲第一区中文99精品| 久久久久国产精品人| 一区二区三区欧美激情| 欧美福利专区| 国产精品免费一区二区三区在线观看| 亚洲三级影片| 欧美精品一区二区三区蜜桃| 久久国产精品久久国产精品| 欧美精品日韩一本| 欧美日韩国产精品成人| 一本色道久久综合狠狠躁篇的优点| 亚洲综合色丁香婷婷六月图片| 欧美日韩1区| 国产欧美91| 欧美国产第一页| 国产日韩1区| 久久蜜桃精品| 午夜欧美大尺度福利影院在线看| 国产精品夫妻自拍| 欧美成人午夜激情| 正在播放亚洲| 国产精品久久久久久久久久久久| 91久久国产综合久久91精品网站| 国产一级久久| 一区二区三区福利|