999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RTW的驅(qū)動(dòng)代碼快速生成技術(shù)研究

2016-09-26 07:20:27馮輝宗蔣建春
關(guān)鍵詞:模型設(shè)計(jì)

馮輝宗 朱 澎 蔣建春

(重慶郵電大學(xué)重慶高校汽車(chē)電子與嵌入式系統(tǒng)工程研究中心 重慶 400065)

?

基于RTW的驅(qū)動(dòng)代碼快速生成技術(shù)研究

馮輝宗朱澎蔣建春

(重慶郵電大學(xué)重慶高校汽車(chē)電子與嵌入式系統(tǒng)工程研究中心重慶 400065)

雖然基于模型的設(shè)計(jì)逐步取代基于文本規(guī)范的傳統(tǒng)的嵌入式軟件開(kāi)發(fā)模式,但是目前RTW(Real-TimeWorkshop)代碼生成工具僅僅將控制算法模型自動(dòng)轉(zhuǎn)換為源代碼,對(duì)于實(shí)時(shí)系統(tǒng)的開(kāi)發(fā)來(lái)說(shuō),目標(biāo)芯片的驅(qū)動(dòng)代碼還需要用戶手動(dòng)編寫(xiě),然后添加到控制算法的模型源代碼中。針對(duì)上述問(wèn)題,提出基于RTW的驅(qū)動(dòng)代碼快速生成技術(shù),它能有效地實(shí)現(xiàn)在生成代碼的同時(shí)將驅(qū)動(dòng)程序嵌入到控制模型的源代碼中,真正實(shí)現(xiàn)由仿真模型到目標(biāo)芯片應(yīng)用程序的代碼自動(dòng)生成。最后以汽車(chē)電子主流芯片MPC5634的代碼生成為例,結(jié)果表明了該技術(shù)的實(shí)用性和高效性。

實(shí)時(shí)工作間驅(qū)動(dòng)代碼生成快速原型

0 引 言

日漸復(fù)雜的電控系統(tǒng)的需求對(duì)傳統(tǒng)的開(kāi)發(fā)模式提出了挑戰(zhàn),催生了快速控制原型的開(kāi)發(fā)方法。它的基本原理是利用快速原型控制器硬件來(lái)代替產(chǎn)品的控制器硬件,在建模仿真平臺(tái)上搭建并修改系統(tǒng)模型,通過(guò)自動(dòng)代碼生成工具自動(dòng)生成模型源代碼并將其經(jīng)過(guò)編譯鏈接后下載到快速原型控制器中,進(jìn)行算法仿真和驗(yàn)證,快速原型技術(shù)能縮短研發(fā)周期,降低研發(fā)成本,提高電控系統(tǒng)的質(zhì)量。自動(dòng)代碼生成技術(shù)是快速原型開(kāi)發(fā)中的關(guān)鍵環(huán)節(jié),控制模型源代碼通過(guò)代碼生成工具自動(dòng)生成,無(wú)需手動(dòng)編寫(xiě)系統(tǒng)的控制程序,雖然目前成熟的技術(shù)是利用RTW工具自動(dòng)生成控制模型源代碼[1],但是對(duì)于實(shí)時(shí)系統(tǒng)的開(kāi)發(fā)來(lái)說(shuō),用來(lái)與目標(biāo)芯片展開(kāi)通信的設(shè)備驅(qū)動(dòng)模塊程序還需要用戶手動(dòng)編寫(xiě),然后添加到控制算法的模型源代碼中,這樣勢(shì)必導(dǎo)致控制系統(tǒng)的開(kāi)發(fā)[2]、調(diào)試及測(cè)試難度大以及控制算法維護(hù)成本高。針對(duì)這一問(wèn)題,本文提出一種驅(qū)動(dòng)代碼快速生成的方法,在RTW程序創(chuàng)建過(guò)程中,將驅(qū)動(dòng)代碼嵌入到算法模型源代碼中,真正實(shí)現(xiàn)電控系統(tǒng)從仿真模型到應(yīng)用程序的一步生成[8]。

1 RTW體系架構(gòu)

圖1 RTW體系架構(gòu)

RTW是一個(gè)開(kāi)放式體系架構(gòu),它所生成的代碼支持多種不同的操作系統(tǒng)和目標(biāo)芯片。許多方式都能實(shí)現(xiàn)配置和豐富RTW功能的目的,RTW的體系架構(gòu)如圖1所示。

RTW的程序創(chuàng)建過(guò)程[3]包括:分析Simulink模型、使用目標(biāo)語(yǔ)言編譯器自動(dòng)生成模型源代碼、編譯鏈接源代碼。如圖1所示,模型分析階段將模型框圖轉(zhuǎn)換為中間描述文件model.rtw,目標(biāo)語(yǔ)言編譯器會(huì)根據(jù)中間描述文件來(lái)轉(zhuǎn)換C代碼,由系統(tǒng)tlc(targetlanguagecompiler)文件來(lái)控制整個(gè)轉(zhuǎn)換過(guò)程,對(duì)于模型中的模塊,會(huì)根據(jù)模塊對(duì)應(yīng)的tlc文件來(lái)生成相應(yīng)的C代碼。RTW支持將用戶自行編寫(xiě)的S函數(shù)模塊加入Simulink模型,從而在RTW的程序創(chuàng)建過(guò)程中將自定義的模塊程序嵌入到Simulink的模型源代碼中,在編譯鏈接階段,創(chuàng)建訪問(wèn)實(shí)例控制編譯器執(zhí)行。

2 驅(qū)動(dòng)代碼快速生成技術(shù)

在RTW的基礎(chǔ)上,為了實(shí)現(xiàn)驅(qū)動(dòng)代碼快速生成,須完成兩方面的工作,針對(duì)特定目標(biāo)硬件設(shè)計(jì)它的目標(biāo)系統(tǒng)、針對(duì)各驅(qū)動(dòng)函數(shù)接口設(shè)計(jì)設(shè)備驅(qū)動(dòng)模塊,總體方案流程如圖2所示。

圖2 總體方案流程圖

2.1實(shí)時(shí)目標(biāo)系統(tǒng)設(shè)計(jì)

實(shí)時(shí)目標(biāo)系統(tǒng)用于配置RTW的程序創(chuàng)建過(guò)程,它主要包括三部分:系統(tǒng)目標(biāo)文件、腳本文件及Hook文件。

1) 系統(tǒng)目標(biāo)文件用于設(shè)置代碼生成的參數(shù)及目標(biāo)硬件相關(guān)的專用數(shù)據(jù)。

該文件由四部分組成:瀏覽器注釋行、tlc配置變量、目標(biāo)語(yǔ)言編譯器程序的入口點(diǎn)、RTW_OPTIONS部分。瀏覽器注釋行為系統(tǒng)目標(biāo)瀏覽器和程序的創(chuàng)建過(guò)程提供了必要的信息,tlc配置變量部分配置了影響代碼生成過(guò)程的tlc全局變量,入口點(diǎn)允許修改從而調(diào)用自己的tlc文件,RTW_OPTIONS部分定義了rtwoptions結(jié)構(gòu)體數(shù)組和rtwgensettings結(jié)構(gòu)體,rtwoptions結(jié)構(gòu)體數(shù)組控制RTW選項(xiàng)卡中的顯示效果,rtwgensettins結(jié)構(gòu)體存放寫(xiě)入中間文件中的信息,同時(shí)聲明程序創(chuàng)建過(guò)程中的其他設(shè)置。

2) 腳本文件用于創(chuàng)建訪問(wèn)實(shí)例,通過(guò)COM(ComponentObjectModel)組件[4]在MATLAB中實(shí)現(xiàn)對(duì)編譯器的操作。為了在模型代碼生成完畢后,指定編譯器對(duì)其進(jìn)行編譯鏈接操作,腳本文件需要實(shí)現(xiàn)的功能有:復(fù)制編譯器文件夾到模型源代碼文件夾中、在工程中添加模型源代碼、編譯目標(biāo)工程文件。

3)Hook文件的設(shè)計(jì)是實(shí)時(shí)目標(biāo)系統(tǒng)設(shè)計(jì)的重要環(huán)節(jié),用于在代碼生成過(guò)程中調(diào)用腳本文件將自動(dòng)生成的模型源代碼鏈接到編譯器中,經(jīng)過(guò)編譯鏈接下載到目標(biāo)板中執(zhí)行。Hook文件的執(zhí)行分為六個(gè)階段,貫穿了整個(gè)RTW的程序創(chuàng)建過(guò)程,分別是:

①entry階段開(kāi)始RTW的程序創(chuàng)建過(guò)程,檢查模型中的各模塊;②before_tlc階段生成模型的中間描述文件,同時(shí)RTW調(diào)用目標(biāo)語(yǔ)言編譯器TLC自動(dòng)生成模型源代碼;③after_tlc階段自動(dòng)生成創(chuàng)建目錄的信息文件,并將其存放到創(chuàng)建的文件夾中;④before_make階段生成程序創(chuàng)建過(guò)程必須的庫(kù)文件;⑤after_make階段更新創(chuàng)建信息對(duì)象;⑥exit階段根據(jù)腳本文件com組件調(diào)用編譯器對(duì)模型源代碼進(jìn)行編譯鏈接及下載。前五個(gè)階段都可以由RTW自動(dòng)執(zhí)行,只有exit階段的執(zhí)行是需要設(shè)計(jì)的。

為了減少RTW程序創(chuàng)建過(guò)程的風(fēng)險(xiǎn),需要將定制的目標(biāo)硬件的目標(biāo)系統(tǒng)存放在一個(gè)單獨(dú)的文件夾中,并將其添加到MATLAB的工作路徑。

2.2設(shè)備驅(qū)動(dòng)模塊設(shè)計(jì)

設(shè)備驅(qū)動(dòng)模塊的設(shè)計(jì)是實(shí)現(xiàn)驅(qū)動(dòng)代碼快速生成的關(guān)鍵,設(shè)備驅(qū)動(dòng)模塊的功能是在RTW程序創(chuàng)建過(guò)程中將驅(qū)動(dòng)程序內(nèi)嵌到模型源代碼中,其中生成的驅(qū)動(dòng)模塊程序與模塊tlc文件有關(guān),模型源代碼的功能與原始的目標(biāo)硬件驅(qū)動(dòng)程序有關(guān)。驅(qū)動(dòng)模塊的設(shè)計(jì)包括以下階段:將目標(biāo)硬件驅(qū)動(dòng)程序封裝成靜態(tài)庫(kù)、根據(jù)模塊參數(shù)及輸入輸出端口數(shù)來(lái)設(shè)計(jì)模塊的S函數(shù)[5],并對(duì)其進(jìn)行封裝和加入Simulink模塊庫(kù),通過(guò)編寫(xiě)S-Function使得在RTW的程序創(chuàng)建過(guò)程中能將自定義的模塊程序嵌入到模型源代碼中、設(shè)計(jì)模塊tlc文件用于定制模塊程序,tlc文件通過(guò)獲取模塊中的參數(shù)值來(lái)定制驅(qū)動(dòng)程序并將其嵌入到自動(dòng)生成的模型源代碼中,全程不需要人為對(duì)代碼做任何修改,如果不設(shè)計(jì)模塊tlc文件,創(chuàng)建的S函數(shù)模塊只能用于仿真而不能用于生成代碼。

以MPC5634的模數(shù)轉(zhuǎn)換模塊和通用定時(shí)器模塊為例,介紹驅(qū)動(dòng)模塊設(shè)計(jì)方法。

模數(shù)轉(zhuǎn)換驅(qū)動(dòng)模塊的設(shè)計(jì)分成兩步:① 設(shè)計(jì)S-function,S-Function通常由定義與包含、回調(diào)函數(shù)、Simulink/RTW接口三部分組成。定義與包含和最后的接口部分是固定的,不同特征模塊的差異體現(xiàn)在回調(diào)函數(shù)中。該模塊無(wú)需設(shè)置輸入端口,設(shè)置一個(gè)輸出端口,用于將轉(zhuǎn)換結(jié)果傳遞給下一級(jí)模塊,另外設(shè)置兩個(gè)參數(shù),分別用于獲取通道號(hào)和轉(zhuǎn)換精度。② 設(shè)計(jì)模塊tlc文件,在程序創(chuàng)建過(guò)程中獲取模塊參數(shù),并對(duì)指定通道進(jìn)行模數(shù)轉(zhuǎn)換,最后將結(jié)果傳遞給下一級(jí)模塊。在tlc文件中設(shè)計(jì)各個(gè)函數(shù)實(shí)現(xiàn)需要的功能。模數(shù)轉(zhuǎn)換模塊tlc文件中包含四個(gè)函數(shù):BlockTypeSetup實(shí)現(xiàn)符合標(biāo)準(zhǔn)的原型聲明;Start函數(shù)用來(lái)實(shí)現(xiàn)Adc_Init并添加到模型的初始化函數(shù)initialize中;Outputs函數(shù)獲取模塊通道號(hào)和轉(zhuǎn)換精度進(jìn)行轉(zhuǎn)換且把轉(zhuǎn)換結(jié)果傳給下一模塊,最后把代碼添加到自動(dòng)生成的模型step函數(shù)中;Terminate函數(shù)中的代碼在經(jīng)過(guò)程序創(chuàng)建過(guò)程后會(huì)存放到模型的terminate函數(shù)中。

通用定時(shí)器(GPT)用來(lái)實(shí)現(xiàn)系統(tǒng)和應(yīng)用軟件的定時(shí)功能,MPC5634的GPT模塊包含一個(gè)32位的增量計(jì)數(shù)器和四個(gè)32位的比較通道,每個(gè)比較通道都有一個(gè)單獨(dú)的中斷源,因此MPC5634的GPT模塊由四路GPT所組成。通用定時(shí)器驅(qū)動(dòng)模塊的設(shè)計(jì)分成兩步:① 設(shè)計(jì)S-function,該模塊需要設(shè)置一個(gè)輸出端口,該端口用來(lái)連接函數(shù)調(diào)用子系統(tǒng)(Function-Call)模塊,每個(gè)定時(shí)周期內(nèi)執(zhí)行一次該Function-Call模塊,同時(shí)還需要設(shè)置三個(gè)參數(shù)實(shí)現(xiàn)GPT模塊的定時(shí)功能,這三個(gè)參數(shù)分別為:GPT通道、定時(shí)周期和模塊分頻值。為了允許連接Function-Call模塊,需要在S-Function中對(duì)其進(jìn)行相應(yīng)的設(shè)置,GPT模塊沒(méi)有輸入端口,為了保證仿真結(jié)果的正確性,必須設(shè)置模塊的采樣時(shí)間為無(wú)窮大。② 設(shè)計(jì)模塊tlc文件,在程序創(chuàng)建過(guò)程中獲取模塊通道號(hào)、定時(shí)周期和預(yù)分頻值,執(zhí)行GPT模塊的定時(shí)功能,每個(gè)定時(shí)周期執(zhí)行一次GPT中斷處理程序,用于調(diào)用Fucntion-Call模塊中自動(dòng)生成的代碼。在tlc文件中設(shè)計(jì)各個(gè)函數(shù)實(shí)現(xiàn)需要的功能,通用定時(shí)器模塊tlc文件包含三個(gè)函數(shù):函數(shù)BlockTypeSetup和函數(shù)Start實(shí)現(xiàn)的功能跟模數(shù)轉(zhuǎn)換模塊類(lèi)似,進(jìn)行聲明和初始化;Outputs函數(shù)用來(lái)將Fucntion-Call模塊中生成的代碼添加到GPT的任務(wù)函數(shù)中,然后再將該任務(wù)函數(shù)創(chuàng)建在RTW自動(dòng)生成的源文件中。由于涉及到定時(shí)器中斷,必須設(shè)計(jì)中斷函數(shù)tlc文件,其主要功能是在中斷函數(shù)中調(diào)用GPT的任務(wù)函數(shù),具體操作如下:檢查Simuink模塊中的GPT模塊,獲取通道號(hào);根據(jù)模塊通道號(hào),生成相應(yīng)的中斷函數(shù);在主函數(shù)中裝載中斷函數(shù)。

需要注意的是,上述模塊tlc文件必須和對(duì)應(yīng)的模塊S函數(shù)文件同名。

3 MPC5634芯片驅(qū)動(dòng)代碼快速生成實(shí)例驗(yàn)證

MPC5634微處理器因其優(yōu)越的性能被汽車(chē)電子領(lǐng)域、航空航天等高端嵌入式控制領(lǐng)域廣泛使用。對(duì)驅(qū)動(dòng)代碼快速生成技術(shù)進(jìn)行功能驗(yàn)證及實(shí)際應(yīng)用實(shí)例測(cè)試,將其應(yīng)用于MPC5634芯片模數(shù)轉(zhuǎn)換模塊和通用定時(shí)器模塊等驅(qū)動(dòng)程序的開(kāi)發(fā),設(shè)計(jì)功能驗(yàn)證實(shí)例通過(guò)RTW程序創(chuàng)建過(guò)程之后能夠自動(dòng)后臺(tái)調(diào)用CodeWarrior編譯器對(duì)所生成的模型源代碼進(jìn)行編譯鏈接,下載到目標(biāo)板中,驗(yàn)證驅(qū)動(dòng)代碼的功能正確性[6]。

首先按上述方法設(shè)計(jì)MPC5634芯片的實(shí)時(shí)目標(biāo)系統(tǒng),其中腳本文件調(diào)用的是CodeWarrior編譯器,然后分別開(kāi)發(fā)各功能模塊。MPC5634硬件驅(qū)動(dòng)程序靜態(tài)庫(kù)是已有的。將驅(qū)動(dòng)模塊加入Simulink模塊庫(kù),用示波器、下載器、開(kāi)發(fā)板搭建好硬件平臺(tái),并創(chuàng)建如圖3所示的功能驗(yàn)證實(shí)例模型。

圖3 驗(yàn)證模型,其中K=0.0001

通過(guò)RTW生成模型源代碼,經(jīng)過(guò)自動(dòng)編譯鏈接下載到目標(biāo)板MPC5634中之后,對(duì)其進(jìn)行功能測(cè)試,將Adc21號(hào)通道連接到開(kāi)發(fā)板的1.2V參考電壓上,將Adc22號(hào)通道連接到開(kāi)發(fā)板的3.3V參考電壓上,用示波器觀測(cè)Pwm8號(hào)和14號(hào)通道的輸出波形如圖4所示。示波器上方波形代表Pwm8號(hào)通道的輸出,其波形頻率為1.26kHz,占空比0.126。示波器下方波形代表Pwm14號(hào)通道的輸出,其波形頻率為3.3kHz,占空比0.5。

該結(jié)果與模型期望的的輸出信號(hào)一致,經(jīng)以上驗(yàn)證可知本文驅(qū)動(dòng)代碼快速生成技術(shù)是實(shí)用的。

快速驅(qū)動(dòng)代碼生成技術(shù)是與長(zhǎng)安汽車(chē)合作項(xiàng)目的中間關(guān)鍵技術(shù),已成功應(yīng)用到長(zhǎng)安汽車(chē)公司車(chē)身控制系統(tǒng)的實(shí)際應(yīng)用開(kāi)發(fā)中,針對(duì)車(chē)身控制需求,開(kāi)發(fā)車(chē)身控制BCM(BodyControlModel)模塊,包括車(chē)窗、車(chē)燈、雨刮等。利用控制模塊搭建控制模型,經(jīng)仿真后添加已開(kāi)發(fā)的驅(qū)動(dòng)模塊和操作系統(tǒng)模塊,自動(dòng)生成代碼編譯下載到STM8目標(biāo)控制芯片,經(jīng)實(shí)車(chē)反復(fù)測(cè)試代碼能正確控制車(chē)身部件后,現(xiàn)已應(yīng)用于實(shí)際量產(chǎn)過(guò)程,體現(xiàn)了其實(shí)際生產(chǎn)應(yīng)用價(jià)值。

4 結(jié) 語(yǔ)

RTW是開(kāi)放式架構(gòu),許多方式都能實(shí)現(xiàn)配置和豐富RTW功能的目的。控制算法模型的代碼生成已經(jīng)不能滿足電控系統(tǒng)快速開(kāi)發(fā)[7]的要求,本文介紹的快速生成驅(qū)動(dòng)代碼的技術(shù)大大提高了快速控制原型的效率,經(jīng)驗(yàn)證,該方法確實(shí)高效可行,簡(jiǎn)單易學(xué),對(duì)各種芯片通用,對(duì)快速控制原型系統(tǒng)開(kāi)發(fā)具有指導(dǎo)意義。

[1] 楊滌,李立濤,楊旭,等.系統(tǒng)實(shí)時(shí)仿真開(kāi)發(fā)環(huán)境與應(yīng)用[M].北京:清華大學(xué)出版社,2002:1-37.

[2] 陳婷,張烈平.基于MATLAB/RTW的實(shí)時(shí)控制器快速開(kāi)發(fā)方法的研究[J].科學(xué)技術(shù)與工程,2008,8(17):5071-5074.

[3] 張曉輝.基于RTW的AMT代碼自動(dòng)生成技術(shù)研究[D].濟(jì)南:山東大學(xué)機(jī)械工程學(xué)院,2012.

[4] 田麗華,曾航.基于COM組件的MATLAB與VC++混合編程[J].科技創(chuàng)新導(dǎo)報(bào),2009(31):27-28.

[5] 北京恒潤(rùn)科技公司.S-Function的編寫(xiě)[M].北京:北京恒潤(rùn)科技公司,2010:33-53.

[6] 齊振恒,孫中杰,李濤.RTW嵌入式代碼自動(dòng)生成機(jī)制與代碼結(jié)構(gòu)分析[J].計(jì)算機(jī)測(cè)量與控制,2010,18(3):639-642.

[7]HuJinhui,HuDabin,XiaoJianbo.StudyofReal-TimeSimulationSystemBasedonRTWandItsApplicationinWarshipSimulator[C].TheNinthInternationalConferenceonElectronicMeasurement&Instruments,2009:966-970.

[8] 劉杰.基于模型的設(shè)計(jì)—MCU篇[M].北京:北京航空航天大學(xué)出版社,2011:152-218.

RESEARCHONDRIVERCODEQUICKGENERATIONTECHNIQUEBASEDONREAL-TIMEWORKSHOP

FengHuizongZhuPengJiangJianchun

(Engineering Research Center of Automotive Electronic and Embedded System,Chongqing University of Posts and Telecommunication,Chongqing 400065,China)

Althoughthemodel-baseddesigntechniqueisgraduallysubstitutingthetextspecification-basedtraditionalembeddedsoftwaredevelopmentpattern,butatpresent,RTWcodegenerationtoolonlytransformsthecontrolalgorithmmodelintomodelsourcecode.Astothedevelopmentofreal-timesystem,usershavetoprogramdrivercodefortargetchip,thenappendtomodelsourcecodeofcontrolalgorithm.Inviewoftheabovequestions,weputforwardtheRTW-baseddrivercodequickgenerationtechnique,whichcaneffectivelyrealisetoembedthedriverprogramtosourcecodesofcontrolmodelwhilegeneratingcode,thusrealisestrulytheautomaticcodegenerationfromsimulationmodeltoapplicationsoftargetchips.InendofthepaperweusethecodegenerationofmainstreamchipMPC5634ofautomotiveelectronicsasinstance,resultshaveverifiedthepracticalityandefficiencyofthetechnique.

Real-timeworkshopDrivercodegenerationRapidprototype

2014-08-07。“核高基”重大專項(xiàng)(2009ZX01038-002-002)。馮輝宗,教授,主研領(lǐng)域:汽車(chē)電子控制系統(tǒng),發(fā)動(dòng)機(jī)控制。朱澎,碩士生。蔣建春,副教授。

TP391

ADOI: 10.3969/j.issn.1000-386x.2016.03.052

猜你喜歡
模型設(shè)計(jì)
一半模型
重要模型『一線三等角』
何為設(shè)計(jì)的守護(hù)之道?
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
主站蜘蛛池模板: 色综合天天娱乐综合网| 亚洲精品图区| 国产拍在线| 国产白浆在线| 免费一级毛片| 亚洲浓毛av| 国产91在线免费视频| 精品一区二区久久久久网站| 亚洲中文在线看视频一区| 亚洲首页在线观看| 黄片一区二区三区| 青青草原国产精品啪啪视频| 制服丝袜 91视频| 成人一区专区在线观看| 成人毛片在线播放| 中文字幕欧美日韩| 欧美午夜在线播放| 亚洲 日韩 激情 无码 中出| 日韩精品成人网页视频在线| 亚洲欧美h| 污网站在线观看视频| 狠狠色丁香婷婷综合| 91偷拍一区| 福利片91| 亚洲综合精品香蕉久久网| 18禁不卡免费网站| 国产成人亚洲精品色欲AV| 亚洲欧美一区在线| 亚洲最大情网站在线观看 | 人妻少妇乱子伦精品无码专区毛片| 成人一区在线| 日本黄色不卡视频| 国产精品尹人在线观看| 国产一区二区三区免费观看 | 久热这里只有精品6| 国产91蝌蚪窝| aⅴ免费在线观看| 国产最爽的乱婬视频国语对白| 97国产在线视频| 色老二精品视频在线观看| 国产在线一区视频| 欧美日韩91| 国产www网站| 噜噜噜久久| 中日韩一区二区三区中文免费视频 | 97人妻精品专区久久久久| 国产日本一线在线观看免费| 黄色成年视频| 亚洲第一成人在线| 小说 亚洲 无码 精品| 国产一区二区视频在线| 成年片色大黄全免费网站久久| 99视频在线免费观看| 97超碰精品成人国产| 91av成人日本不卡三区| 91亚洲国产视频| 精品国产香蕉伊思人在线| 欧美不卡视频在线观看| 亚洲系列中文字幕一区二区| 午夜无码一区二区三区| 亚洲a级毛片| 无码高清专区| 亚洲精品卡2卡3卡4卡5卡区| JIZZ亚洲国产| 伊人久久青草青青综合| 亚洲成a人片| AV片亚洲国产男人的天堂| 91视频日本| 亚洲人成网18禁| yjizz国产在线视频网| 国产成人精品高清不卡在线 | 伊人精品视频免费在线| 一本久道久久综合多人| 91久久国产综合精品| 日韩不卡免费视频| 亚洲a级毛片| 国内精品久久久久鸭| 青青草国产在线视频| 亚洲日韩图片专区第1页| 自慰网址在线观看| 激情综合网激情综合| 成人年鲁鲁在线观看视频|