《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 嵌入式自開發(fā)軟件的設(shè)計(jì)與實(shí)現(xiàn)

嵌入式自開發(fā)軟件的設(shè)計(jì)與實(shí)現(xiàn)

2008-05-16
作者:余曉建1,沈永林1,郭 超2

  摘 要: 在基于SH7709S處理器的系統(tǒng)上實(shí)現(xiàn)了自開發(fā)軟件,介紹了自開發(fā)軟件的原理、方法、組成與結(jié)構(gòu),分析了與上位機(jī)" title="上位機(jī)">上位機(jī)通信接口設(shè)計(jì)、在系統(tǒng)燒寫" title="燒寫">燒寫Flash及設(shè)置斷點(diǎn)等關(guān)鍵技術(shù)。
  關(guān)鍵詞: 自開發(fā) 串口" title="串口">串口 ISP 斷點(diǎn) 人機(jī)界面 SH7709S處理器


  嵌入式自開發(fā)軟件有兩大特點(diǎn)。一是嵌入,指嵌入在系統(tǒng)內(nèi)部,占用系統(tǒng)一定的RAM和ROM資源;二是自開發(fā)功能,自身具備調(diào)試和開發(fā)功能。自開發(fā)軟件也被稱為監(jiān)控程序(monitor program)。實(shí)現(xiàn)自開發(fā)軟件是一種廉價的仿真器替代方案,它讓用戶更加深入地理解處理器和底層硬件的工作實(shí)質(zhì)。更為重要的是,它嵌入于應(yīng)用系統(tǒng)內(nèi)部,提供完全在線式的調(diào)試功能。
  自開發(fā)軟件的配置如圖1所示。上位機(jī)完成程序的編輯、編譯和鏈接,由自開發(fā)軟件通過與上位機(jī)的通信接口把程序下載到應(yīng)用系統(tǒng)中,并提供基本的調(diào)試手段。自開發(fā)軟件在功能上可以劃分為上位機(jī)通信接口、內(nèi)存操作、寄存器操作、下載及執(zhí)行用戶程序和斷點(diǎn)調(diào)試幾大部分。


1 與上位機(jī)通信接口設(shè)計(jì)
  (1)底層設(shè)計(jì)
  系統(tǒng)狀況和用戶命令都要通過與上位機(jī)的通信接口互相交換,一般用串行通信接口實(shí)現(xiàn)。通常使用最簡單的硬件連接和通信協(xié)議:只使用發(fā)送(TXD)、接收(RXD)和地這三根線,不使用其他握手信號線。PC端可以使用通用的串口通信軟件,如超級終端、串口助手;應(yīng)用系統(tǒng)端的通信軟件需要自行編寫。
  串口接收數(shù)據(jù)時,當(dāng)數(shù)據(jù)量很大、通信速度很快時,如果處理數(shù)據(jù)包的時間過長,則無論使用查詢或中斷方式,都有可能出現(xiàn)接收緩沖寄存器溢出,造成數(shù)據(jù)丟失。較好的解決方法是以中斷方式接收,在內(nèi)存中開辟一個環(huán)形隊(duì)列緩沖區(qū),把程序分成兩部分實(shí)現(xiàn)。
  如圖2所示,當(dāng)接收數(shù)據(jù)中斷時,由中斷服務(wù)程序" title="中斷服務(wù)程序">中斷服務(wù)程序迅速地把數(shù)據(jù)放置到緩沖區(qū)內(nèi),再重新使接收中斷使能,準(zhǔn)備接收下一個數(shù)據(jù),而主程序則通過查詢緩沖區(qū)是否為空從中讀取讀據(jù)。這樣做可以盡可能地減少關(guān)閉接收中斷的時間,防止數(shù)據(jù)丟失。緩沖區(qū)的大小與通信速度和處理器的處理速度有關(guān)。通信速度越快,處理速度越慢,緩沖區(qū)應(yīng)開辟得越大。反之亦然。在SH7709S系統(tǒng)中,傳輸速率為38 400bps,處理器運(yùn)行在64MHz時鐘下,緩沖區(qū)設(shè)置為64B。


  發(fā)送也可以使用中斷加發(fā)送緩沖區(qū)的方式,主程序向緩沖區(qū)寫入數(shù)據(jù)的同時打開發(fā)送中斷,發(fā)送中斷服務(wù)程序從緩沖區(qū)取得數(shù)據(jù)并發(fā)送,如果緩沖區(qū)非空,則保持發(fā)送中斷使能。但發(fā)送的情況和接收很不一樣,發(fā)送時可以主動控制發(fā)送字節(jié)的時機(jī),在高傳輸速率下發(fā)送每一個字符的時間比較短。例如,在38 400bps的傳輸速率下,傳輸一個字符的時間大約26μs。
  (2)實(shí)現(xiàn)printf()函數(shù)
  為了便于后續(xù)程序的設(shè)計(jì),應(yīng)該實(shí)現(xiàn)自己的格式化輸出函數(shù)printf(),包含字符串輸出、字符輸出、十進(jìn)制數(shù)輸出和十六進(jìn)制數(shù)輸出功能。輸出十六進(jìn)制數(shù)時,要有8位、4位和2位寬度方式,如果數(shù)據(jù)的寬度不夠,則在前面補(bǔ)0,使得數(shù)據(jù)對齊,以便于用戶觀察。printf函數(shù)的實(shí)現(xiàn)思路是,把所有數(shù)據(jù)按不同的格式先轉(zhuǎn)換成對應(yīng)的ASCII碼,然后將其串成一個有結(jié)束符的字符串,再統(tǒng)一按照字符串輸出。要注意一點(diǎn):當(dāng)輸出回車符\n時,要同時輸出一個換行符\r,以符合C語言中的編程習(xí)慣。
2 下載程序及在系統(tǒng)Flash燒寫技術(shù)
  (1)S文件格式
  上位機(jī)完成編譯、鏈接,生成程序文件后,首先要通過串口把程序裝載到系統(tǒng)中,自開發(fā)軟件必須能夠識別主機(jī)傳送來ASCII碼的含義,即向哪個地址裝載、是否結(jié)束、有無誤碼,這就需要有一個通信協(xié)議。這里以SH7709S使用S格式文件為例說明。它是行結(jié)構(gòu)的ASCII碼文件,包含了所需要的協(xié)議,主要有起始記錄(S0)、正文記錄(S1、S2、S3)和結(jié)束記錄(S7、S8、S9)三種。三種記錄如下:
  S00E00004D6F6E56657232206D6F74F8
  S113000000090009000900090009DF0B0002D10BF7
  S9030000FC
  圖3是S1類型的記錄格式,以S1開頭;接下來是一個記錄長度的字節(jié),長度從該字節(jié)后面開始算起,一直到該行結(jié)尾;再下來是程序的裝載地址,S1、S2和S3的裝載地址長度分別是2B、3B、4B,裝載程序的地址范圍分別是0~64KB、64KB~16MB和16MB~4GB;裝載地址后面是ASCII碼表示的十六進(jìn)制機(jī)器碼,最后一個字節(jié)是校驗(yàn)碼,等于該記錄中的所有內(nèi)容之和的反碼。S格式文件一般以S0記錄開始,S0與S1記錄類似,所不同的是機(jī)器碼部分是S格式文件的文件名。S7、S8和S9也與S1記錄類似,但沒有機(jī)器碼部分,裝載地址表示程序的起始地址,分別為3B、2B、1B。


  通過串口,可以把程序下載到RAM或Flash中。RAM的讀寫速度較快,可以邊從串口下載邊裝載;Flash的操作相對較復(fù)雜,在寫入Flash時,一般是先把程序全部下載到RAM中,再集中燒寫。
  (2)在系統(tǒng)Flash燒寫技術(shù)
  Flash存儲器由于容量大、價格低、編程方便等優(yōu)勢在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。出于價格、體積等方面的考慮,多數(shù)系統(tǒng)只配備單片普通的NAND Flash。由于同一片F(xiàn)lash在寫操作時一般不能讀,因而很多采用Flash作為程序存儲器的系統(tǒng)無法直接實(shí)現(xiàn)在系統(tǒng)燒寫(ISP)。通過編寫程序?qū)崿F(xiàn)在線燒寫Flash,達(dá)到“程序燒寫程序”目的,這簡化了電路設(shè)計(jì),降低了開發(fā)成本,是目前常用的開發(fā)模式。它把燒寫Flash的程序與其他程序分開,使用時把它拷貝到RAM中執(zhí)行。由于大多數(shù)嵌入式系統(tǒng)只能執(zhí)行非可重定位的程序,即只能在鏈接時指定的地址執(zhí)行程序,所以這種方法遇到的最大難點(diǎn)就是程序的存儲地址和執(zhí)行地址不一致。這里給出一種非常有效且通行的解決方法。首先,編寫?yīng)毩⒌臒龑慒lash程序,使這部分程序不能調(diào)用其他程序,避免在寫Flash的同時讀取Flash;然后把這部分程序編譯,并鏈接到RAM中的指定地址,生成程序文件(如前文中提到的S格式文件);最后用一個在用戶主機(jī)上運(yùn)行的小程序把程序文件轉(zhuǎn)換成C語言格式的數(shù)組,再在主程序中拷貝或調(diào)用。數(shù)組定義如下:
  struct rom_data {
  unsigned long start_address;
  unsigned long data_length;
  unsigned char data[4708];
  };
  start address是程序在RAM中執(zhí)行的入口地址,data length是機(jī)器碼的字節(jié)數(shù),在data中存儲程序的機(jī)器碼。以一個轉(zhuǎn)換后的數(shù)組為例:
  const struct rom_data datastruct={
  0x0dff0000,
  0x0000084b,
  0x2f,0x86,0x2f,0x96,0x2f,0xa6,0x2f,0xb6,0x2f,0xc6,
  0x2f,0xd6,0x2f,0xe6,0x4f,0x22,
  ……
  };
  程序從地址0xdff0000開始執(zhí)行,由0x84b個字節(jié)組成。燒寫Flash時,由自開發(fā)軟件把這部分程序搬運(yùn)到RAM中的對應(yīng)地址,再跳轉(zhuǎn)到該地址開始執(zhí)行。只要了解程序文件的結(jié)構(gòu),程序文件到數(shù)組的轉(zhuǎn)換將很容易實(shí)現(xiàn)。Renesas公司提供了S文件格式的程序文件到數(shù)組轉(zhuǎn)換工具motice_cl,把它設(shè)定為IDE的最后一個編譯階段即可方便地生成數(shù)組。
3 實(shí)現(xiàn)斷點(diǎn)
  在程序中設(shè)置斷點(diǎn)是調(diào)試程序的有效方法。通常,斷點(diǎn)只能在RAM中實(shí)現(xiàn)。SH7709S由于內(nèi)嵌有UBC(用戶斷點(diǎn)控制器)單元,所以也可以在ROM中設(shè)置斷點(diǎn)。
  (1)在RAM中設(shè)置斷點(diǎn)
  RAM中設(shè)置斷點(diǎn)的思路是:在斷點(diǎn)處用一條軟中斷指令替換原有指令,當(dāng)軟中斷發(fā)生時,將所有寄存器的值推入堆棧中。只要在軟中斷的服務(wù)程序顯示棧中對應(yīng)CPU有關(guān)寄存器的內(nèi)容,回到主程序,并允許修改寄存器和內(nèi)存,就實(shí)現(xiàn)了在RAM中設(shè)置斷點(diǎn)。
  用戶設(shè)置完斷點(diǎn)后,在自開發(fā)軟件中不要直接替換對應(yīng)地址的指令,否則觀察寄存器或反匯編" title="反匯編">反匯編時,這段程序就被改變了。應(yīng)該在用戶輸入運(yùn)行程序命令后再去替代指令,在軟中斷服務(wù)程序返回前,還要遍歷每個斷點(diǎn),將已經(jīng)替換后的指令恢復(fù),使用戶看不到被替換過的痕跡。
  (2)使用UBC單元設(shè)置斷點(diǎn)
  SH7709S內(nèi)置兩個UBC單元,以方便在ROM或RAM設(shè)置斷點(diǎn),協(xié)助用戶實(shí)現(xiàn)自調(diào)試功能。它實(shí)際上是一個比較中斷發(fā)生器,在程序運(yùn)行時,斷點(diǎn)寄存器中的地址不停地與程序計(jì)數(shù)器PC比較,中斷發(fā)生的條件可以是地址相同,也可以是某一數(shù)據(jù)的讀或?qū)懙取0l(fā)生中斷后在中斷服務(wù)程序中顯示寄存器,同時把這個斷點(diǎn)清除,屏蔽UBC中斷,并返回到主程序,從而實(shí)現(xiàn)斷點(diǎn)功能。
  實(shí)現(xiàn)斷點(diǎn)功能后就可以輕松地實(shí)現(xiàn)單步調(diào)試功能,實(shí)際上是在下一條指令前設(shè)置斷點(diǎn)。
4 編輯寄存器或內(nèi)存
  (1)編輯寄存器
  編輯寄存器包括讀、寫和清零操作。讀寄存器并不需要每次都顯示當(dāng)前寄存器的真實(shí)值(因?yàn)橄到y(tǒng)被自開發(fā)軟件控制時,這種顯示對用戶并無意義),而只需在用戶程序被打斷后顯示打斷前的真實(shí)寄存器值;寫和清零操作也不需要在用戶改變寄存器后立即改變CPU的寄存器,否則自開發(fā)軟件無法正常運(yùn)行,而只需在用戶程序執(zhí)行前改變。自開發(fā)軟件應(yīng)該在內(nèi)存中建立一個CPU寄存器的映像,用戶對寄存器的操作實(shí)際上是操作內(nèi)存中的映像單元。發(fā)生斷點(diǎn)中斷后,在中斷服務(wù)程序里把入棧的中斷前寄存器值寫入到對應(yīng)的內(nèi)存映像單元,在用戶輸入運(yùn)行程序命令后,先把內(nèi)存映像單元的值寫入到CPU的寄存器中再運(yùn)行程序。
  (2)編輯內(nèi)存
  編輯內(nèi)存包括顯示、修改和反匯編操作。一般按單字節(jié)使用十六進(jìn)制顯示內(nèi)存的內(nèi)容,每一行顯示16個內(nèi)存單元,左邊要有該段內(nèi)存的起始地址,在最右邊,將這些數(shù)據(jù)對應(yīng)的ASCII碼顯示出來,數(shù)值小于0x20的ASCII碼控制字符及大于0x7F的非ASCII碼字符用“.”表示,如圖4所示。
  修改內(nèi)存應(yīng)提供按逐個內(nèi)存單元和按塊填充功能。對于總線寬度為32位的系統(tǒng),內(nèi)存單元可以是字節(jié)、雙字和長字,修改過一個單元后,提示符應(yīng)指向下一個單元,最好能設(shè)置一個鍵碼,當(dāng)發(fā)現(xiàn)輸入值不當(dāng)時,可以回退一個單元,如果輸入字符不是0~F,則自動退出,此單元無須修改時按回車?yán)^續(xù)下一單元。填充內(nèi)存是把一塊內(nèi)存單元修改為同一個值,在觀察內(nèi)存變化時很有用。


  反匯編是將內(nèi)存的內(nèi)容以指令形式顯示出來。在RISC和CISC機(jī)上實(shí)現(xiàn)反匯編的難度不同,RISC架構(gòu)的處理器指令是定長的,如SH7709S每條指令占用兩個字節(jié),而CISC架構(gòu)的處理器上指令占用的字節(jié)數(shù)從一個到四個不等,讀取時還要判斷是否讀到了正確的指令。反匯編功能需占用較多的存儲空間,因?yàn)樗⒁粋€對應(yīng)關(guān)系,在內(nèi)存中存儲一個指令表。一般情況下,指令的設(shè)計(jì)都有一定規(guī)律,設(shè)計(jì)時要仔細(xì)觀察,SH7709S的指令集可以分為n、nm和md等類型,找出規(guī)律可大大簡化程序設(shè)計(jì)。
5 人機(jī)對話界面設(shè)計(jì)
  用戶主機(jī)上的串口通信軟件,如Hypertrm,只顯示接收的字符。為了在用戶輸入命令的同時把命令字符顯示到屏幕上,自開發(fā)軟件需要把接收到的字符再發(fā)送一遍。有些特殊字符要特別處理,如用戶鍵入backspace后,軟件應(yīng)發(fā)送退格、空格、退格三個字符才能得到backspace鍵效果。
  圖5是實(shí)現(xiàn)人機(jī)界面的流程圖,當(dāng)用戶輸入回車符后,認(rèn)為一個命令輸入完畢。命令中可能會含有一些多余的空格,要先把這些空格剔除并整定成要求的格式。有些命令需要經(jīng)常執(zhí)行,如單步、查看內(nèi)容等。把這些命令設(shè)定為需要標(biāo)記的命令,輸入一次后,再輸入回車即可重復(fù)執(zhí)行。


  自開發(fā)軟件可以大大方便調(diào)試和開發(fā),它提供了所有基本的調(diào)試手段,嵌入于應(yīng)用系統(tǒng)內(nèi)部,攜帶方便,十分靈活,是仿真器的有益補(bǔ)充,甚至可以在一定程度上替代昂貴的仿真器。
  筆者在基于SH7709S處理器的系統(tǒng)上成功地實(shí)現(xiàn)了自開發(fā)軟件,在此基礎(chǔ)上闡述了自開發(fā)軟件的原理和方法,介紹了自開發(fā)軟件的組成與結(jié)構(gòu),詳細(xì)分析了與上位機(jī)通信接口設(shè)計(jì)、在系統(tǒng)燒寫Flash和設(shè)置斷點(diǎn)等關(guān)鍵技術(shù)。這些內(nèi)容也適用于基于不同處理器或單片機(jī)的應(yīng)用及開發(fā)系統(tǒng)。
參考文獻(xiàn)
1 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法.北京:清華大學(xué)出版社,2004
2 Renesas Co,Ltd.SH7709s hardware manual.2003,9
3 Renesas Co,Ltd.SuperH RISC engine C/C++ Compiler,Assembler,Optimizing Linkage Editor User′s Manual.2003
4 Hitachi Europe LTD.Utility To Convert S-Record DataTo A C Structure.2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(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。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品久久久久秋霞影院| 亚洲综合好骚| 亚洲视频一二区| 亚洲国产精品小视频| 国内自拍一区| 韩国美女久久| 激情91久久| 韩国福利一区| 韩日欧美一区| 激情亚洲一区二区三区四区| 国产午夜精品理论片a级大结局| 国产精品推荐精品| 国产日本欧美一区二区| 国产伦精品一区二区三区在线观看| 国产精品久久久免费| 国产精品成人v| 国产精自产拍久久久久久| 国产毛片精品国产一区二区三区| 国产精品一二一区| 国产农村妇女精品| 国产在线不卡精品| 伊人久久久大香线蕉综合直播| 国产日韩欧美一区二区三区四区| 国产视频综合在线| 激情久久婷婷| 亚洲国产三级网| 亚洲最黄网站| 亚洲一区在线直播| 欧美在线亚洲一区| 亚洲欧洲偷拍精品| 在线亚洲精品| 午夜天堂精品久久久久| 欧美在线视频一区二区| 久久天堂成人| 欧美黄免费看| 国产精品久久久999| 国产视频丨精品|在线观看| 樱花yy私人影院亚洲| 亚洲精品乱码| 亚洲一二三区在线观看| 欧美在线影院在线视频| 亚洲激情专区| 亚洲特级片在线| 欧美亚洲在线视频| 免费日韩av| 欧美午夜电影在线| 国产视频不卡| 亚洲精品国精品久久99热一| 亚洲一区二区三区中文字幕| 亚洲第一偷拍| 亚洲一区精彩视频| 久久久在线视频| 欧美日本网站| 国产视频在线观看一区| 亚洲人成网站色ww在线| 亚洲男女毛片无遮挡| 亚洲国产精品悠悠久久琪琪| 一本久道综合久久精品| 久久av一区二区三区亚洲| 欧美高清影院| 国产美女在线精品免费观看| 亚洲国产精品一区在线观看不卡| 制服丝袜亚洲播放| 亚洲国产欧美日韩另类综合| 亚洲午夜激情免费视频| 久久久久网址| 欧美体内she精视频在线观看| 国产综合视频| 在线一区观看| 亚洲激情在线观看| 欧美一区观看| 欧美精品日韩| 激情文学一区| 亚洲欧美久久久| 99精品欧美一区二区三区| 久久精品亚洲一区二区三区浴池 | 欧美一区二区三区另类| 欧美国产综合视频| 国产一区二区日韩精品欧美精品| 一本大道久久a久久综合婷婷| 久久精品国亚洲| 欧美一级电影久久| 欧美三级电影精品| 亚洲国产女人aaa毛片在线| 亚洲欧美精品suv| 亚洲色图制服丝袜| 欧美成人福利视频| 国产一区二区三区黄| 亚洲一区二区三区免费观看| 亚洲免费不卡| 麻豆精品在线播放| 国产日韩在线看片| 亚洲一区二区三区国产| 伊人久久婷婷色综合98网| 欧美一区二区三区播放老司机| 亚洲一区二区在线免费观看| 欧美乱人伦中文字幕在线| 国产综合色在线视频区| 亚洲欧美精品一区| 亚洲欧美视频在线观看| 欧美三区在线视频| 亚洲精品久久视频| 亚洲精品一品区二品区三品区| 久久一本综合频道| 国产日韩精品一区二区三区 | 亚洲高清不卡av| 久久久久久一区| 国产亚洲高清视频| 午夜国产精品影院在线观看| 亚洲一区日韩| 欧美午夜精品久久久| 99在线精品视频| 一区二区福利| 欧美日韩和欧美的一区二区| 亚洲精品久久久久久久久久久久久| 亚洲欧洲精品一区二区三区| 玖玖在线精品| 在线日韩日本国产亚洲| 亚洲国产成人精品视频| 另类欧美日韩国产在线| 在线观看一区欧美| 亚洲经典自拍| 欧美激情麻豆| 99精品视频免费观看| 亚洲视频综合在线| 欧美调教vk| 亚洲免费一区二区| 欧美在线影院在线视频| 国产九九精品| 久久成人18免费观看| 久久综合久久久久88| 影音先锋亚洲一区| 亚洲久久视频| 欧美日韩在线观看一区二区三区 | 欧美另类在线播放| 日韩午夜在线视频| 亚洲男人av电影| 国产精品一区一区三区| 销魂美女一区二区三区视频在线| 香蕉成人久久| 国产一区久久久| 亚洲精品一区二区三区福利| 欧美久久久久久久| 亚洲天堂网在线观看| 久久aⅴ国产欧美74aaa| 一区二区在线观看视频| 亚洲精品欧美精品| 欧美日韩一区在线播放| 亚洲欧美日韩精品久久奇米色影视 | 免费视频一区| 99视频+国产日韩欧美| 午夜精品美女自拍福到在线| 国产亚洲成精品久久| 亚洲日本黄色| 国产精品久久二区| 久久精品视频免费| 欧美日韩国内自拍| 午夜精品久久久久久久蜜桃app| 久热re这里精品视频在线6| 亚洲精品婷婷| 久久精品国产69国产精品亚洲| 亚洲国产成人久久综合一区| 亚洲制服少妇| 好吊色欧美一区二区三区四区| 亚洲精选中文字幕| 国产精品夜色7777狼人| 亚洲国产专区| 国产精品久久久久久久7电影| 久久激情网站| 欧美视频免费| 久久av二区| 欧美亚一区二区| 亚洲第一成人在线| 国产精品白丝av嫩草影院| 亚洲高清不卡在线| 国产精品久久久久久亚洲调教| 亚洲高清影视| 欧美性大战久久久久久久| 久久国产免费看| 欧美特黄一级大片| 亚洲黄色av| 国产女人精品视频| 一区二区日韩伦理片| 国产伊人精品| 亚洲一区二区三区激情| 一区二区三区在线不卡| 亚洲欧美日韩国产综合在线| 亚洲电影天堂av| 久久精品99国产精品日本| 日韩视频一区二区三区在线播放免费观看 | 亚洲毛片在线看| 久久综合精品国产一区二区三区| 一区二区三区四区蜜桃| 免费在线观看精品| 性欧美办公室18xxxxhd| 欧美日韩色婷婷| 亚洲黄网站黄| 国产一区999| 亚洲欧美一区二区在线观看| 亚洲激情综合|