《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 嵌入式系統(tǒng)中的JTAG接口編程技術(shù)

嵌入式系統(tǒng)中的JTAG接口編程技術(shù)

2008-10-27
作者:何希順1, 張 躍2, 何榮森

  摘? 要: 分析了嵌入式系統(tǒng)開發(fā)中常用的三種芯片編程方法,介紹了JTAG接口的標(biāo)準(zhǔn)、工作原理及在芯片中的實現(xiàn),根據(jù)JTAG接口所提供的邊界掃描" title="邊界掃描">邊界掃描功能,通過PC機(jī)并行接口" title="并行接口">并行接口模擬JTAG接口的時序,實現(xiàn)了使用目標(biāo)系統(tǒng)中微處理器的JTAG接口對系統(tǒng)程序存儲器" title="程序存儲器">程序存儲器FLASH的編程。

  關(guān)鍵詞: 嵌入式系統(tǒng) ?JTAG(Joint Test Action Group)聯(lián)合測試行為組織? 編程器" title="編程器">編程器? StrongARM? 手持設(shè)備

?

  隨著手持式電子設(shè)備的迅猛發(fā)展,手機(jī)、PDA、掌上電腦、電子書和數(shù)碼相機(jī)等正在快步走進(jìn)人們的日常生活。這一類電子產(chǎn)品同屬于嵌入式系統(tǒng)的范疇,都是以高性能的微處理器為核心擴(kuò)展相應(yīng)的存儲器和功能電路,運行小巧的操作系統(tǒng)和相應(yīng)的應(yīng)用程序,實現(xiàn)電子設(shè)備的各種功能。由于是手持設(shè)備,因而要求體積小、重量輕、耗電少。這些特點決定了設(shè)備內(nèi)部的印制板的尺寸比常規(guī)電子設(shè)備小得多,而且元器件密度大,雙面貼裝。這給設(shè)計人員帶來了若干問題,如操作系統(tǒng)代碼和應(yīng)用程序的寫入,板上芯片的測試等。本文作者結(jié)合實際工作,就嵌入式系統(tǒng)中如何通過JTAG接口進(jìn)行FLASH芯片編程作了探討。

1 幾種常用的芯片編程方法

  在嵌入式系統(tǒng)開發(fā)和產(chǎn)品生產(chǎn)過程中,對系統(tǒng)程序存儲器編程主要使用三種編程方法:通過編程器編程、使用板上編程器編程和在系統(tǒng)編程。

1.1 通過編程器編程

  這是在PROM、EPROM、PAL等芯片流行時常用的傳統(tǒng)編程方法,即在可編程芯片焊裝到電路板之前,使用專門的編程器對芯片進(jìn)行代碼或數(shù)據(jù)的寫入,然后將已編程的芯片安裝到電路板上。

  使用編程器進(jìn)行編程特別適合于DIP封裝的芯片,如果是其它類型的封裝,則必須使用相應(yīng)的適配器。這種方法的缺點是需要手工進(jìn)行待編程芯片的插入、鎖定等工作,容易造成芯片方向錯誤、引腳錯位等,導(dǎo)致編程效率降低。

1.2 使用板上編程器編程(OBP)

  這種方法是在電路板上所有芯片已經(jīng)焊裝完畢后,再對板上的可編程芯片進(jìn)行編程。通過專用電纜將電路板與外部計算機(jī)連接,由計算機(jī)的應(yīng)用程序進(jìn)行板上可編程芯片的代碼或數(shù)據(jù)寫入。芯片擦除、編程所需要的電源、控制信號、地址、數(shù)據(jù)和相關(guān)命令都由板外的編程控制器提供。在進(jìn)行板上編程時,需要通過專門的輔助電路關(guān)斷目標(biāo)板上CPU的電源或?qū)⑵渫獠拷涌谛盘栐O(shè)置為高阻狀態(tài),以免與編程時的地址、數(shù)據(jù)和控制信號發(fā)生沖突。

  在板上編程可以克服芯片引腳錯位、方向插反等問題,避免燒毀芯片、編程錯誤,保證了芯片編程的高成功率和可靠性。另一個優(yōu)點就是及時軟件升級,可以做到在產(chǎn)品出廠時系統(tǒng)使用最新版本的固化軟件,這對于日新月異的手持電子設(shè)備而言是必須的。

  這種方法的缺點是需要在電路板上設(shè)計編程用的接口、隔離等輔助電路,在編程時通過跳線或FET開關(guān)進(jìn)行編程與正常工作的狀態(tài)轉(zhuǎn)換。這樣會增加每個電路板芯片的數(shù)量,造成產(chǎn)品成本的增加。

1.3 在系統(tǒng)編程(ISP、ISW)

  這種方法直接利用系統(tǒng)中帶有JTAG接口的器件如CPU、CPLD、FPGA等,執(zhí)行對系統(tǒng)程序存儲器芯片內(nèi)容的擦除和編程操作。一般而言,高檔微處理器均帶有JTAG接口,系統(tǒng)程序存儲器的數(shù)據(jù)總線、地址總線和控制信號直接接在微處理器上。編程時,使用PC機(jī)內(nèi)插卡或并行接口通過專用電纜將系統(tǒng)電路板與PC機(jī)聯(lián)系起來,在PC機(jī)上運行相關(guān)程序,將編程數(shù)據(jù)及控制信號傳送到JTAG接口的芯片,利用相應(yīng)指令從微處理器的引腳按照FLASH芯片的編程時序輸出到FLASH存儲器。

這種編程方法的條件是系統(tǒng)中必須存在帶有JTAG接口或與之兼容的芯片如微處理器。優(yōu)點是系統(tǒng)板上不需要增加其它與編程有關(guān)的輔助電路,減小了電路板的尺寸,避免了對微小封裝芯片的手工處理,特別適用于電路板尺寸有嚴(yán)格限制的手持設(shè)備。

2 JTAG接口介紹

  面對復(fù)雜電路的設(shè)計、整板測試的難度及表面貼裝技術(shù)帶來的有限測試引腳等問題,業(yè)界不得不尋找一個標(biāo)準(zhǔn)加以解決。JTAG邊界掃描即IEEE1149.1標(biāo)準(zhǔn),該測試標(biāo)準(zhǔn)定義了用于解決上述問題的硬件結(jié)構(gòu)和工作機(jī)制。其優(yōu)點在于將極其復(fù)雜的印刷電路板測試轉(zhuǎn)變成具有良好結(jié)構(gòu)性、可以通過軟件簡單而靈活處理。它雖然是一個主要用于片上電路的測試標(biāo)準(zhǔn),但卻打開了各種相關(guān)應(yīng)用的大門。這個標(biāo)準(zhǔn)定義了可用于完成功能和互連測試以及內(nèi)建自測過程的各種指令。芯片生產(chǎn)廠商如ALTERA、XILINX、ATMEL、AMD、TI等對標(biāo)準(zhǔn)進(jìn)行了擴(kuò)充,使用擴(kuò)展的專用指令執(zhí)行維護(hù)和診斷應(yīng)用及對可配置器件的可編程算法,使JTAG接口廣泛用于FLASH系列芯片的編程。概括起來,JTAG接口主要應(yīng)用于:電路的邊界掃描測試和可編程芯片的在系統(tǒng)編程。

2.1 JTAG接口的結(jié)構(gòu)

  在硬件結(jié)構(gòu)上,JTAG接口包括兩部分:JTAG端口和控制器。與JTAG接口兼容的器件可以是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC或其它符合IEEE 1149.1規(guī)范的芯片。IEEE 1149.1標(biāo)準(zhǔn)中規(guī)定對應(yīng)于數(shù)字集成電路芯片的每個引腳都設(shè)有一個移位寄存單元,稱為邊界掃描單元BSC。它將JTAG電路與內(nèi)核邏輯電路聯(lián)系起來,同時隔離內(nèi)核邏輯電路和芯片引腳。由集成電路的所有邊界掃描單元構(gòu)成邊界掃描寄存器BSR。邊界掃描寄存器電路僅在進(jìn)行JTAG測試時有效,在集成電路正常工作時無效,不影響集成電路的功能。具有JTAG接口的芯片內(nèi)部結(jié)構(gòu)如圖1所示。

?

?

  測試邏輯的最高級電路包括3個主要模塊:

  · 測試訪問端口(TAP)控制器

  TAP控制器提供對嵌入在JTAG兼容器件內(nèi)部的測試功能電路的訪問控制,是一個同步狀態(tài)機(jī)。每個JTAG兼容的器件都有自己的TAP控制器。通過測試模式選擇TMS和時鐘信號TCK控制其狀態(tài)轉(zhuǎn)移,實現(xiàn)由IEEE1149.1 標(biāo)準(zhǔn)確定的測試邏輯電路的工作時序。 

  · 指令寄存器

  指令寄存器是基于電路的移位寄存器,通過它可以串行輸入執(zhí)行各種操作的指令。

  · 數(shù)據(jù)寄存器組

  數(shù)據(jù)寄存器組是一組基于電路的移位寄存器。操作指令被串行裝入由當(dāng)前指令所選擇的數(shù)據(jù)寄存器。隨著操作的執(zhí)行,測試結(jié)果被移出。

2.2 JTAG引腳定義

  JTAG接口主要包括四個引腳:TMS、TCK、TDI和TDO及一個可選配的引腳TRST,用于驅(qū)動電路模塊和控制執(zhí)行規(guī)定的操作。各引腳的功能如下:

  ·TCK:JTAG測試時鐘,為TAP控制器和寄存器提供測試參考。在TCK的同步作用下通過TDI和TDO引腳串行移入或移出數(shù)據(jù)及指令。同時,TCK為TAP控制器狀態(tài)機(jī)提供時鐘。

  ·TMS:TAP控制器的模式輸入信號。TCK的上升沿時刻TMS的狀態(tài)確定TAP控制器即將進(jìn)入的工作狀態(tài)。通常TMS引腳具有內(nèi)部上拉電阻,以保證該引腳在沒有驅(qū)動時處于邏輯1狀態(tài)。

  ·TDI:JTAG指令和數(shù)據(jù)寄存器的串行數(shù)據(jù)輸入端。TAP控制器的當(dāng)前狀態(tài)以及保存在指令寄存器中的具體指令決定對于一個特定的操作由TDI裝入哪個寄存器。在TCK的上升沿時刻,TDI引腳狀態(tài)被采樣,結(jié)果送到JTAG寄存器組。

  ·TDO:JTAG指令和數(shù)據(jù)寄存器的串行數(shù)據(jù)輸出端。TAP控制器的當(dāng)前狀態(tài)以及保持在指令寄存器中的具體指令決定對于一個特定的操作哪個寄存器的內(nèi)容送到TDO輸出。對于任何已知的操作,在TDI和TDO之間只能有一個寄存器(指令或數(shù)據(jù))處于有效連接狀態(tài)。TDO在TCK的下降沿改變狀態(tài),并且只在數(shù)據(jù)通過器件移動過程中有效。該引腳在其它時間處于三態(tài)狀態(tài)。

  ·TRST:測試復(fù)位輸入信號,低電平有效,為TAP控制器提供異步初始化信號。

2.3 JTAG測試訪問端口(TAP)控制器

  TAP控制器是一個16狀態(tài)的有限狀態(tài)機(jī),為JTAG提供控制邏輯,控制進(jìn)入到JTAG結(jié)構(gòu)中各種寄存器內(nèi)數(shù)據(jù)的掃描與操作。TAP狀態(tài)轉(zhuǎn)移圖如圖2所示,由TCK同步時鐘上升沿時刻TMS引腳的邏輯電平?jīng)Q定狀態(tài)轉(zhuǎn)移的過程(高電平TMS=1,低電平TMS=0)。對于由TDI端輸入到器件的掃描信號共有兩個狀態(tài)變化路徑:一個用于移入指令到指令寄存器;另一個用于移入數(shù)據(jù)到有效的數(shù)據(jù)寄存器,該寄存器由當(dāng)前指令確定。

?

?

  狀態(tài)圖中的每個狀態(tài)都是通過TAP控制器進(jìn)行數(shù)據(jù)處理所需要的。這些處理包括給引腳施加激勵信號,捕獲輸入的數(shù)據(jù),裝載指令,邊界掃描寄存器中數(shù)據(jù)的移入或移出。圖2表示了TAP狀態(tài)機(jī)的基本流程,描述了從一個狀態(tài)到另一個狀態(tài)TMS信號的變化,在芯片JTAG接口的TRST引腳上加一低脈沖信號可以使TAP控制器復(fù)位到測試邏輯復(fù)位(Test-Logic-Reset)主狀態(tài)。

2.4 JTAG接口的控制指令

  控制指令用于控制JTAG接口進(jìn)行各種操作,控制指令包括基本指令和擴(kuò)展指令。JTAG接口標(biāo)準(zhǔn)要求芯片支持的基本指令有:EXTEST、INTEST、SAMPLE/PRELOAD、BYPASS、IDCODE、HIGHZ。芯片廠商可以根據(jù)實際需要選擇或添加擴(kuò)展指令。

3 JTAG接口的使用

  通過JTAG接口可以進(jìn)行電路板及芯片的測試,也可以實現(xiàn)對目標(biāo)電路板上的程序存儲器編程。本文僅討論使用JTAG接口對板上FLASH存儲器的編程。一般,可以利用專用的PC機(jī)內(nèi)插卡式硬件控制器或獨立的編程器訪問JTAG器件,也可以直接由PC機(jī)的并行接口模擬JTAG時序,硬件控制器或編程器通過專用電纜連接到目標(biāo)電路板。被編程的FLASH存儲器芯片的地址線、數(shù)據(jù)線和控制信號線接到JTAG兼容芯片的相應(yīng)引腳上。值得注意的是:采用這種編程方法,不要求FLASH器件具有JTAG接口,只要與其相連接的芯片具有JTAG接口即可。在編程FLASH芯片時,需要做的工作主要有:①PC機(jī)發(fā)送指令或數(shù)據(jù)到JTAG兼容芯片的邊界掃描寄存器(BSR);②將保存在BSR中的指令或數(shù)據(jù)通過JTAG專用指令傳送給FLASH存儲器。這個過程是由運行在PC機(jī)上的軟件進(jìn)行控制的。

3.1 硬件配置

  在某個設(shè)計項目中,使用了Intel公司的 StrongARM芯片SA-1110和該公司的Strata系列FLASH存儲器芯片。SA-1110芯片是一種高性能、低功耗、集成有多種常用接口的SOC微處理器芯片,特別適合于手持設(shè)備。而Strata FLASH是Intel公司使用獨創(chuàng)的1個存儲單元記錄2比特數(shù)據(jù)技術(shù)制造的閃速存儲器芯片,其特點是體積小、容量大、成本低,特別適合于程序代碼與數(shù)據(jù)的存儲。選擇的型號為:E28F128J3A,可以配置成8位或16位數(shù)據(jù)線方式。SA-1110為32位芯片,其外擴(kuò)的程序存儲器和數(shù)據(jù)存儲器也為32位,因此程序存儲器需要2片28F128J3A配置為32位形式,如圖3所示。

?

?

  在本例中,JTAG菊花鏈中包含兩個IEEE1149.1兼容芯片,即SA-1110微處理器和CPLD。由于FLASH的地址總線、數(shù)據(jù)總線和控制信號線接在SA-1110上,在利用JTAG接口編程FLASH存儲器時,與JTAG鏈上的CPLD芯片無關(guān),需要通過指令將CPLD芯片設(shè)為旁通模式。FLASH芯片的控制信號如讀信號(/OE)、寫信號(/WR)和片選信號(/CE)等直接由SA-1110產(chǎn)生。

  從圖3中可以看出,使用PC機(jī)并行接口的幾個數(shù)據(jù)線和信號線來構(gòu)成JTAG接口引腳信號,對應(yīng)關(guān)系如表1所示。采用信號線直接連接的方法簡便易行,只需要一條專用電纜即可操作JTAG接口。

?

?

3.2 控制軟件

  SA-1110芯片的JTAG接口實現(xiàn)了IEEE1149.1標(biāo)準(zhǔn)的部分功能,不能實現(xiàn)對芯片內(nèi)部的測試及芯片仿真,但提供對芯片外的測試功能,可以用于對芯片外部電路的測試或編程。芯片提供的JTAG指令包括:

  ·BYPASS(11111) 旁通片上系統(tǒng)邏輯指令,用于未被測試的芯片;

  ·EXTEST(00000) 片外電路測試指令,用于測試電路板上芯片之間的互連;

  ·SAMPLE/PRELOAD(00001) 采樣引腳/預(yù)加載數(shù)據(jù)指令,用于采樣芯片引腳信號或通過加載數(shù)據(jù)控制引腳輸出信號;

  ·IDCODE(00110) 讀芯片識別碼指令,用于識別電路板上的芯片;

  ·HIGHZ(00101) 設(shè)置高阻態(tài)指令,用于將芯片的引腳設(shè)為無效狀態(tài)。

  括號中的內(nèi)容是指令的操作碼" title="操作碼">操作碼,它們通過TDI引腳串行移入到指令寄存器。BYPASS和EXTEST指令的操作碼是IEEE1149.1中規(guī)定的,因此對于所有的JTAG接口兼容芯片,這兩個指令的操作碼都是相同的。其它指令的操作碼可以由芯片廠商根據(jù)實際定義。

  結(jié)合待編程的FLASH存儲器特征,利用上面提供的JTAG指令編寫一個編程FLASH存儲器的PC機(jī)應(yīng)用程序,借助SA-1110芯片的JTAG接口將目標(biāo)系統(tǒng)使用的操作系統(tǒng)和應(yīng)用軟件寫入到FLASH存儲器中。對目標(biāo)板上的FLASH存儲器進(jìn)行編程時,在PC機(jī)上運行該程序來控制并行接口模擬JTAG時序并將編程代碼傳送到SA-1110的JTAG控制器,利用JTAG的邊界掃描單元(BSC),把編程數(shù)據(jù)先移入到邊界掃描寄存器(BSR)。然后通過JTAG指令EXTEST按照FLASH芯片的編程時序?qū)?shù)據(jù)通過地址總線和數(shù)據(jù)總線寫入FLASH存儲器,實現(xiàn)芯片編程操作。在FLASH內(nèi)容的寫入過程中,程序?qū)?片F(xiàn)LASH同時執(zhí)行寫操作,完成32位編程。在PC機(jī)上運行的編程操作程序框圖如圖4所示,其中利用PC機(jī)并行接口實現(xiàn)JTAG接口信號的函數(shù)為:

?

?

  int putp(int tdi, int tms, int rp)

  { ??? //Output pins (LPT driving),LPT D0 Pin 2 and TCK,

????  ?? //LPT D1 Pin 3 and TDI,LPT D2 Pin 4 and TMS

???????? ?//Input pin (SA-1110 board drives),LPT Busy Pin?11 and TDO

?????? ??? int tdo = -1;

?????? ??? _outp(lpt_address, tms*4+tdi*2);?????? ???           //TCK low

?????? ??? _outp(lpt_address, tms*4+tdi*2+1);??              //TCK high

?????? ??? if(rp=RP)_outp(lpt_address,tms*4+tdi*2);            //TCK low

?????? ??? if(rp=RP)tdo!((int)_inp(lpt_address+1)>>7);           //get TDO data

?????? ??? return tdo;

  }

  通過PC機(jī)并行接口實現(xiàn)SA-1110的JTAG指令EXTEST的函數(shù)為:

  void extest(void)

  {??????????? putp(1,0,IP);? //Run-Test/Idle

????  ???????? putp(1,0,IP);? //Run-Test/Idle

?????????? ????? putp(1,0,IP);? //Run-Test/Idle

????????????? ?? putp(1,0,IP);? //Run-Test/Idle

???????????????? putp(1,1,IP); //select DR scan

???????????????? putp(1,1,IP);? //select IR scan

???????????????? putp(1,0,IP);? //capture IR

???????????????? putp(1,0,IP);? //shift IR

???????????????? putp(0,0,IP);? //SA1110 Extest,指令長度為5位

???????????????? putp(0,0,IP);

???????????????? putp(0,0,IP);

???????????????? putp(0,0,IP);

???????????????? putp(0,0,IP);

???????????????? putp(1,0,IP);? //CPLD Bypass,指令長度為4位

???????????????? putp(1,0,IP);

???????????????? putp(1,0,IP);

???????????????? putp(1,1,IP);? //Exit1-IR,操作碼的最后一位必須通過時鐘與下一狀態(tài)EXIT1_IR

???????????????????????????????????? 有效處于同一時刻,由時鐘控制TMS保持高電平時進(jìn)入EXIT1_IR

?????????????????????????????????? ? 狀態(tài)。

???????????????? putp(1,1,IP);? //Update-IR

?????? ????????? putp(1,0,IP);? //Run-Test/Idle

????????? ?????? putp(1,0,IP);? //Run-Test/Idle

???????????? ??? putp(1,0,IP);? //Run-Test/Idle

  }

  程序開始有四條語句:putp(1,0,IP)。其意義在于無論JTAG狀態(tài)機(jī)處于何種狀態(tài),經(jīng)過這四條指令后,必將返回到Run-Test/Idle狀態(tài),保證下面的操作從這一狀態(tài)開始進(jìn)入正常的操作狀態(tài)。

  編程FLASH存儲器使用的其它指令的實現(xiàn)方法與此類似。實踐表明,使用PC機(jī)并行接口實現(xiàn)JTAG時序的方法是可行的,對FLASH存儲器進(jìn)行編程無需其它板卡設(shè)備支持,是一種較為簡單的方法。

  使用JTAG接口對FLASH程序存儲器進(jìn)行編程的方法適合于系統(tǒng)中帶有兼容JTAG接口的芯片。隨著具有JTAG接口芯片應(yīng)用的普及,需要對JTAG接口有深入的了解,以便更好地利用芯片的資源,設(shè)計出容易測試、便于維護(hù)與升級的高可靠性系統(tǒng),延長產(chǎn)品的生命周期。同時,根據(jù)FALSH芯片及JTAG接口芯片的規(guī)范對使用JTAG接口進(jìn)行編程的控制程序的優(yōu)化,可以實現(xiàn)存儲芯片的高速編程操作,對減少產(chǎn)品的研發(fā)和生產(chǎn)周期,保證產(chǎn)品的上市時間非常有利。

?

參考文獻(xiàn)

1 Intel公司.Intel StrongARM SA1110 Microprocessor Advanced Developer's Manual. Dec.1999

2 IEEE Std 1149.1 Standard Test Access Port and?Boundary-Scan Architecture,ISBN 1-55937-350-4

(From IEEE, Inc,. 345 East 47th Street, New York,NY 100167, USA)

3 Kenneth P. Parker.The Boundary-Scan Handbook.publisher: Kluwer Academic Publishers

4 Intel公司.Designing for On-Board Programming Using?the IEEE 1149.1(JTAG). November 1996

5 Xilinx公司.In-System Programming Using an Embedded?Microcontroller.January 15. 2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产免费无码一区二区| 多女多p多杂交视频在线观看| 亚洲不卡av不卡一区二区| 男女交性特一级| 性色欲情网站iwww| 久久国产精品久久久久久久久久| 欧美人与性动交α欧美精品| 伊人久久大香线蕉无码| 美国式禁忌3在线影片| 国产乱人伦偷精品视频下| 麻豆麻豆必出精品入口| 国产精品无码永久免费888| a√天堂中文在线最新版| 成人av电影网站| 久9久9精品免费观看| 日韩欧美精品在线视频| 伊人电影综合网| 精品国产乱码久久久久久浪潮| 国产三级香港三韩国三级| 黄网视频在线观看| 国产欧美日韩另类精彩视频| 18禁男女爽爽爽午夜网站免费 | 国产精品久久久福利| 91啦在线视频| 国模丽丽啪啪一区二区| 99精品视频在线观看免费播放| 奇米777在线视频| √天堂中文www官网| 日韩人妻无码一区二区三区99| 亚洲人成电影网站| 欧美怡红院免费全视频| 亚洲日本黄色片| 欧美老人巨大xxxx做受视频| 亚洲精品国精品久久99热| 熟妇人妻中文字幕| 人妻av综合天堂一区| 理论片2023最新在线观看| 免费人成网站7777视频| 精品久久久久久久九九九精品| 再深点灬舒服灬太大了添学长 | 国产午夜影视大全免费观看|