欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術(shù)頻道

嵌入式Linux系統(tǒng)上的快速啟動(dòng)技術(shù)研究

  1 嵌入式Linux系統(tǒng)啟動(dòng)時(shí)序

  目前,嵌入式系統(tǒng)的硬件平臺(tái)和應(yīng)用方向區(qū)別很大,但總體啟動(dòng)流程一致的。這里的系統(tǒng)啟動(dòng)是指從用戶執(zhí)行上電/復(fù)位操作,到系統(tǒng)開(kāi)始提供用戶可接收的服務(wù)水平所需要的過(guò)程。典型的上電/復(fù)位時(shí)序如表1所列。

表1 嵌入式Linux系統(tǒng)啟動(dòng)時(shí)序

  2 Linux快速啟動(dòng)方法
  目前,一些Linux的發(fā)行版本已經(jīng)對(duì)啟動(dòng)速度進(jìn)行了優(yōu)化。如果利用標(biāo)準(zhǔn)Linux進(jìn)行開(kāi)發(fā),則啟動(dòng)速度的提高主要是通過(guò)內(nèi)核配置和各種補(bǔ)丁包來(lái)實(shí)現(xiàn)的。下面分析快速啟動(dòng)的一些關(guān)鍵技術(shù)。

  2.1 Firmware和Bootloader階段

  目標(biāo)板一旦確定,F(xiàn)irmware運(yùn)行的時(shí)間就無(wú)法改變了,F(xiàn)lash和RAM的讀寫(xiě)速度也就隨之確定了。但
如果復(fù)位時(shí)能夠繞過(guò)Firmware和Bootloader,即允許運(yùn)行中的內(nèi)核加載以及運(yùn)行另一個(gè)內(nèi)核,可以縮短啟動(dòng)的時(shí)間。典型的實(shí)現(xiàn)有Kexe c,它有2個(gè)組件,即用戶空間組件kexe ctools和內(nèi)核補(bǔ)丁。另外一種辦法是在內(nèi)核命令行中加入reboot=soft數(shù),同樣可以跳過(guò) Firmware,但是缺點(diǎn)在于無(wú)法從用戶空間調(diào)用。

  對(duì)于正常啟動(dòng),可以選擇速度比較快的Bootloader,并對(duì)內(nèi)核進(jìn)行小型化處理;還可以使用高速的映像復(fù)制技術(shù)(如DMA2RAM),從而縮短復(fù)制的時(shí)間。為了縮短解壓消耗的時(shí)間,可尋求比較高效的壓縮算法。但一般情況下,壓縮比越高,算法越復(fù)雜,解壓速度就越慢,從而造成復(fù)制時(shí)間(與壓縮比成反比)和解壓時(shí)間(一般與壓縮比成正比)之間的矛盾。

  2.2 內(nèi)核階段

  內(nèi)核初始化時(shí)要對(duì)RealTime Clock (RTC)進(jìn)行同步。此過(guò)程要占用1s的時(shí)間,可去掉以節(jié)約時(shí)間,但這樣CPU會(huì)與正確的時(shí)間有1s 的偏差,如果關(guān)機(jī)時(shí)CPU時(shí)鐘又要保存在RTC中,偏差就會(huì)不斷累積。但對(duì)于使用外部時(shí)鐘源進(jìn)行同步的系統(tǒng),則可安全地跳過(guò)這個(gè)階段。

  Preset LPJ可以用來(lái)縮短每次啟動(dòng)時(shí)調(diào)用calibrate_delay()來(lái)校準(zhǔn)loops_per_jiffy消耗的時(shí)間。這個(gè)時(shí)間開(kāi)銷(xiāo)與CPU頻率無(wú)關(guān),在典型的嵌入式硬件環(huán)境下會(huì)消耗300ms左右。LPJ值對(duì)于固定硬件平臺(tái)應(yīng)該是一致的,可以只計(jì)算一次,在后續(xù)的啟動(dòng)中就可以在啟動(dòng)參數(shù)中強(qiáng)制指定LPJ值,而跳過(guò)實(shí)際的計(jì)算過(guò)程。具體方法是:在正常啟動(dòng)后記錄下內(nèi)核啟動(dòng)信息中的"Calibrating Delay"數(shù)值,在啟動(dòng)參數(shù)中以"lpj=xxxxxx"的形式強(qiáng)制指定。

  啟動(dòng)過(guò)程默認(rèn)打開(kāi)控制臺(tái)輸出啟動(dòng)消息,但是控制臺(tái)尤其是基于幀緩沖的控制臺(tái)會(huì)減慢啟動(dòng)速度。因此在嵌入式Linux產(chǎn)品中,將啟動(dòng)過(guò)程中的控制臺(tái)設(shè)為靜默狀態(tài),方法是在內(nèi)核啟動(dòng)參數(shù)中加入"quiet"。

  設(shè)備搜索和驅(qū)動(dòng)安裝是比較耗時(shí)的操作,因此要在編譯內(nèi)核時(shí)確定需要安裝哪些驅(qū)動(dòng)模塊,以免系統(tǒng)搜索那些根本不存在的設(shè)備,尤其是多余的IDE設(shè)備。對(duì)于啟動(dòng)時(shí)暫時(shí)不用安裝的設(shè)備,盡量將驅(qū)動(dòng)編譯成模塊,在以后空閑時(shí)或者使用設(shè)備時(shí)加載,而不是全部放在啟動(dòng)階段。

  2.3 用戶空間階段

  傳統(tǒng)Linux的初始化腳本是由bash執(zhí)行的,在內(nèi)核引導(dǎo)后啟動(dòng)init進(jìn)程(/sbin/init)。它使用一個(gè)ASCII文件(/etc /inittab)來(lái)改變運(yùn)行級(jí)別,這個(gè)文件中又會(huì)調(diào)用RCSript,由RCSript查找/etc/rc.d/rc5.d/并啟動(dòng)相應(yīng)鏈接指向的系統(tǒng)服務(wù)。

  消費(fèi)電子類(lèi)Linux系統(tǒng)需要啟用圖形界面等必要的服務(wù),未經(jīng)優(yōu)化的系統(tǒng)在這個(gè)過(guò)程中會(huì)默認(rèn)啟動(dòng)很多根本用不到或者當(dāng)前用不到的系統(tǒng)服務(wù),這一部分會(huì)花去較大的時(shí)間開(kāi)銷(xiāo)。最簡(jiǎn)單的優(yōu)化辦法就是根據(jù)實(shí)際需要,通過(guò)改寫(xiě)服務(wù)配置文件定制系統(tǒng)服務(wù)。另外,init腳本的執(zhí)行是串行的,在腳本量大時(shí)會(huì)導(dǎo)致引導(dǎo)過(guò)程非常,因此可以考慮并行運(yùn)行各種服務(wù)以加快啟動(dòng)的速度。現(xiàn)在已經(jīng)出現(xiàn)了一些初始化程序來(lái)替代init進(jìn)程,下面介紹initng和upstart。

  initng(init nextgerneration)能夠并行啟動(dòng)服務(wù)從而快速完成初始化工作。initng認(rèn)為滿足了依賴關(guān)系的服務(wù)就可以啟動(dòng)。在從外存加載一個(gè)腳本或等待硬件設(shè)備啟動(dòng)的同時(shí),可以運(yùn)行另一個(gè)腳本來(lái)啟動(dòng)別的服務(wù),使系統(tǒng)在CPU 和 I/O 之間實(shí)現(xiàn)較好的平衡。作為一個(gè)基于依賴關(guān)系的解決方案,initng使用自己的初始化腳本集,它們對(duì)服務(wù)和守護(hù)進(jìn)程的依賴性進(jìn)行了編碼。如果某個(gè)服務(wù)依賴(使用 need關(guān)鍵字定義)于其他服務(wù),則要保證啟動(dòng)時(shí)它所依賴的所有服務(wù)均可用。無(wú)依賴關(guān)系的服務(wù)立即并行啟動(dòng),具有依賴關(guān)系的服務(wù)則要等待以安全啟動(dòng)。

  upstart與 initng的區(qū)別在于: upstart基于事件,任務(wù)/服務(wù)的啟動(dòng)/停止都取決于它所等待的事件是否發(fā)生。upstart對(duì)事件的定義非常靈活,分為3類(lèi):edge (simple) events, level (value) events和 temporal events。使用start/stop、事件名以及它所期待的值(可選)組成條目對(duì)觸發(fā)事件進(jìn)行描述。事件依賴有兩種辦法:一種是任務(wù)自身導(dǎo)致事件發(fā)生,不管任務(wù)何時(shí)啟動(dòng)/結(jié)束都會(huì)有事件發(fā)生,對(duì)于啟動(dòng)時(shí)要執(zhí)行的基本任務(wù),這種辦法比較有效;而對(duì)于較復(fù)雜的依賴關(guān)系,則可使用任務(wù)的 Shell腳本工具。

  2.4 預(yù)讀取和預(yù)鏈接

  預(yù)讀取(Readahead)可以將文件(程序和庫(kù)文件)在使用之前預(yù)先加載到RAM緩存中,這樣就不用在使用時(shí)為讀取這個(gè)文件而訪問(wèn)I/O。如果知道下一步操作要訪問(wèn)哪些文件,就可以提前將它們?nèi)?部分讀取到緩沖區(qū),從而加快執(zhí)行速度。嵌入式系統(tǒng)很多場(chǎng)合下對(duì)于下一步操作都是可預(yù)測(cè)的,比如系統(tǒng)啟動(dòng)時(shí)總是以同樣的順序訪問(wèn)同樣的可執(zhí)行/數(shù)據(jù)文件,文件塊的訪問(wèn)往往是順序的,應(yīng)用程序啟動(dòng)時(shí)總是訪問(wèn)同樣的程序文件段、共享庫(kù)、資源或者輸入文件。這樣使用預(yù)讀取有很強(qiáng)的針對(duì)性,從而提高程序執(zhí)行速度。

  ELF(Excutable and Linkable File)是目前Linux中的標(biāo)準(zhǔn)二進(jìn)制格式,其啟動(dòng)需要以下步驟:將共享庫(kù)映射到虛擬地址空間;解析符號(hào)引用;初始化每個(gè)ELF文件。由于共享庫(kù)是位置無(wú)關(guān)的,要在運(yùn)行時(shí)完成部分重定位處理和符號(hào)查找的工作,才能跳到程序的入口點(diǎn),因此在帶來(lái)靈活性的同時(shí),也造成ELF文件的啟動(dòng)速度緩慢,尤其是解析符號(hào)引用要消耗大量的時(shí)間,對(duì)于使用多個(gè)共享庫(kù)的大型程序更是如此。但在很多嵌入式系統(tǒng)中,可執(zhí)行文件和共享庫(kù)極少變化,而且每次程序運(yùn)行時(shí)鏈接工作完全相同。

  預(yù)鏈接(Prelink)利用這一點(diǎn),修改ELF共享庫(kù)和二進(jìn)制文件,將鏈接信息加入到可執(zhí)行文件中以簡(jiǎn)化動(dòng)態(tài)鏈接重定位,從而使程序啟動(dòng)加快。預(yù)鏈接首先搜集要預(yù)鏈接的ELF二進(jìn)制文件及其所依賴的共享庫(kù),為每個(gè)庫(kù)分配唯一的虛擬空間位置,并將共享庫(kù)重新鏈接到這個(gè)基準(zhǔn)位置(動(dòng)態(tài)鏈接器要加載這個(gè)庫(kù)時(shí),只要虛擬空間地址未被占用,它就會(huì)將庫(kù)映射到指定位置);然后預(yù)鏈接解析二進(jìn)制或者庫(kù)中的所有重定位,并將重定位信息存放到ELF對(duì)象,還要將所有依賴庫(kù)的列表及校驗(yàn)和添加到二進(jìn)制文件或庫(kù)中。對(duì)于二進(jìn)制文件,還需列出所有的沖突(在共享庫(kù)的自然搜索范圍內(nèi)對(duì)符號(hào)的解析不相同)。在運(yùn)行時(shí),動(dòng)態(tài)鏈接器先檢查是否所有依賴的庫(kù)都已經(jīng)映射到指定的位置,而且?guī)煳募](méi)有變化,只考慮沖突而不用處理每個(gè)庫(kù)的重定位,這樣大大提高了程序啟動(dòng)的速度。使用時(shí)要注意的是,若共享庫(kù)發(fā)生了改變,則使用它的所有程序都要重新鏈接,否則程序仍要進(jìn)行耗時(shí)的正常重定位。

  3 XIP和文件系統(tǒng)優(yōu)化

  3.1 代碼執(zhí)行方式

  嵌入式系統(tǒng)中代碼的執(zhí)行方式主要有3種:

 ?、?完全映射(fully shadowed)。嵌入式系統(tǒng)程序運(yùn)行時(shí),將所有的代碼從非易失存儲(chǔ)器(Flash、ROM等)復(fù)制到RAM中運(yùn)行。

  ② 按需分頁(yè)(demand paging)。只復(fù)制部分代碼到RAM中。這種方法對(duì)RAM中的頁(yè)進(jìn)行導(dǎo)入/導(dǎo)出管理,如果訪問(wèn)位于虛存中但不在物理RAM中會(huì)產(chǎn)生頁(yè)錯(cuò)誤,這時(shí)才將代碼和數(shù)據(jù)映射到RAM中。

 ?、?eXe cute In Place (XIP)。在系統(tǒng)啟動(dòng)時(shí),不將代碼復(fù)制到RAM,而是直接在非易失性存儲(chǔ)位置執(zhí)行。RAM中只存放需要不斷變化的數(shù)據(jù)部分,如圖1所示。如果非易失性存儲(chǔ)器的讀取速度與RAM相近,則XIP可以節(jié)省復(fù)制和解壓的時(shí)間。NOR Flash和ROM的讀取速度比較快(約100 ns),適合XIP;而NAND Flash的讀操作是基于扇區(qū)的,速度相對(duì)很慢(μs級(jí)),因此不宜實(shí)現(xiàn)XIP。


圖1 完全映射和XIP的比較

  XIP可以分為以下2種:

 ?、?內(nèi)核XIP。直接在Flash/ROM中運(yùn)行內(nèi)核,可以節(jié)省復(fù)制和映像解壓的時(shí)間。Linux 2.6.10內(nèi)核已經(jīng)包含了XIP支持。

 ?、?應(yīng)用程序XIP。直接從應(yīng)用程序代碼的存儲(chǔ)位置執(zhí)行,而不用將它加載到RAM中,這樣應(yīng)用程序的第一次執(zhí)行速度會(huì)比較快。要使用應(yīng)用程序XIP,應(yīng)該基于支持它的文件系統(tǒng)。

  3.2 XIP文件系統(tǒng)

  目前XIP文件系統(tǒng)的實(shí)現(xiàn)主要有2種: Linear XIP CRAMFS和Advanced XIP File System(AXFS)。

  CRAMFS是一個(gè)壓縮的只讀文件系統(tǒng),本來(lái)用于桌面Linux系統(tǒng)的啟動(dòng),但CRAMFS經(jīng)過(guò)修改后可以支持嵌入式系統(tǒng)并支持XIP。 Linear XIP CRAMFS用一個(gè)sticky bit對(duì)它管理的文件進(jìn)行區(qū)分,標(biāo)記為壓縮(按需分頁(yè))或者未壓縮(XIP)。如果文件標(biāo)記為 XIP,則所有頁(yè)都不壓縮,而且要在Flash中連續(xù)存儲(chǔ)。在加載XIP文件時(shí),直接對(duì)所有頁(yè)地址進(jìn)行映射;而按需分頁(yè)的文件則在發(fā)生頁(yè)錯(cuò)誤時(shí),將相應(yīng)頁(yè)解壓到RAM中。

  要?jiǎng)?chuàng)建Linear XIP CRAMFS文件系統(tǒng)映像,必須確定可執(zhí)行文件和庫(kù)文件的使用頻率,頻繁使用的文件適合于XIP,而其他文件應(yīng)該進(jìn)行壓縮?,F(xiàn)在有一些工具(如RAMUST和CFSST)可以幫助判斷哪些文件需要XIP,而哪些不需要。下面就可以給XIP文件加上標(biāo)記并制作根文件系統(tǒng),以使用mkfs.cramfs工具為例:

  chmod +t filenames

  mkfs.cramfs-x rootfs rootfs.bin

  另外,還要修改內(nèi)核配置參數(shù)以支持XIP:在啟動(dòng)選項(xiàng)中向默認(rèn)內(nèi)核命令字符串中加入 rootfstype=cramfs,選擇內(nèi)核XIP并設(shè)置 XIP內(nèi)核物理地址;在驅(qū)動(dòng)程序中加入MTD對(duì)XIP的支持;在文件系統(tǒng)中加入對(duì)Linear XIP CRAMFS的支持。接下來(lái)就可以生成XIP映像了。

  Linear XIP CRAMFS的一個(gè)缺陷在于它是基于文件的,即一個(gè)文件中的所有頁(yè)要么全部采用XIP,要么全部采用壓縮/按需分頁(yè),但事實(shí)上同一文件中不同頁(yè)的使用頻率區(qū)別也很大。AXFS是Intel公司開(kāi)發(fā)的一個(gè)新的只讀文件系統(tǒng),它從Linear XIP CRAMFS中繼承了許多方法,同時(shí)也進(jìn)行了一些改進(jìn)。AXFS的XIP粒度是基于頁(yè)的,并且自帶工具來(lái)判斷哪些頁(yè)需要XIP,哪些頁(yè)需要壓縮,從而更好地在速度和 RAM/Flash的使用上取得平衡。

  3.3 非XIP文件系統(tǒng)

  XIP一般基于NOR Flash,成本相對(duì)較高。對(duì)于用戶數(shù)據(jù)量大的應(yīng)用,往往還要使用基于NAND Flash的,非XIP的文件系統(tǒng)常用的有JFFS2/YAFFS。

  JFFS2是一種基于壓縮的文件系統(tǒng)。在多媒體應(yīng)用中,如果圖片、音視頻已經(jīng)經(jīng)過(guò)壓縮,則使用JFFS2無(wú)疑會(huì)給CPU帶來(lái)雙重的壓縮/解壓負(fù)擔(dān),訪問(wèn)速度也會(huì)受到影響。因此,在這類(lèi)應(yīng)用比較密集的應(yīng)用中,采用不壓縮的文件系統(tǒng)(如YAFFS/YAFFS2)可以加快系統(tǒng)速度。

  YAFFS/YAFFS2是專(zhuān)為嵌入式系統(tǒng)使用NAND Flash設(shè)計(jì)的日志文件系統(tǒng)。與JFFS2相比,減少了一些功能(例如不支持?jǐn)?shù)據(jù)壓縮),所以速度更快,掛載時(shí)間很短,對(duì)內(nèi)存的占用較小。YAFFS/YAFFS2自帶NAND芯片的驅(qū)動(dòng),用戶可以不使用MTD和VFS,直接對(duì)文件系統(tǒng)操作。 YAFFS與YAFFS2的主要區(qū)別在于:前者僅支持小頁(yè)(512字節(jié)) NAND Flash;后者則可支持大頁(yè)(2 KB) NAND Flash,同時(shí)在內(nèi)存使用、垃圾回收、訪問(wèn)速度等方面有所改進(jìn)。

  結(jié)語(yǔ)

  快速啟動(dòng)對(duì)于嵌入式Linux系統(tǒng)是比較迫切的要求之一。本文通過(guò)分析嵌入式系統(tǒng)的引導(dǎo)過(guò)程和關(guān)鍵時(shí)延因素,提出了相應(yīng)的解決辦法,并對(duì)XIP文件系統(tǒng)進(jìn)行了介紹。由于啟動(dòng)速度非常依賴于硬件平臺(tái),而且有的方法互相排斥,因此在具體應(yīng)用時(shí)需要綜合考慮和選擇。

  參考文獻(xiàn)

  [1] Tim Bird R. Methods to Improve Bootup Time in Linux [R]. Proceedings of the Linux Symposium, Ottawa,2004.

  [2] Karim Yaghmour. 構(gòu)建嵌入式Linux系統(tǒng)[M]. 北京:中電力出版社, 2004: 49-66.

  [3] 陳莉君. 深入分析Linux內(nèi)核源代碼[M]. 北京:民郵電出版社, 2001: 477-499.

  [4] 左大全,吳剛. 嵌入式Linux快速啟動(dòng)與XIP應(yīng)用[J]. 計(jì)算機(jī)工程與科學(xué),2006(12).

文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      久久久午夜视频| 一区二区三区在线免费播放| 久久国产日韩| 亚洲高清视频的网址| 国产精品三级视频| 美日韩精品视频免费看| 性色av香蕉一区二区| 亚洲精品美女久久久久| 国产一区视频网站| 欧美性猛交99久久久久99按摩| 久久在精品线影院精品国产| 亚洲综合视频在线| av成人天堂| 亚洲精品日韩综合观看成人91| 国产一区视频网站| 国产精品一二三视频| 欧美母乳在线| 欧美激情成人在线视频| 久久久久高清| 久久av在线| 亚洲欧美成人一区二区在线电影| 亚洲欧洲在线视频| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲香蕉在线观看| 99re6热在线精品视频播放速度| 极品少妇一区二区三区精品视频 | 久久精品国产亚洲5555| 中文精品视频| 亚洲视频一区在线| 亚洲精品乱码久久久久久蜜桃91 | 亚洲欧美中文日韩在线| 中文在线不卡| 亚洲精品国偷自产在线99热| 好看的日韩视频| 尤物yw午夜国产精品视频明星| 国产日韩亚洲欧美综合| 黄色成人在线观看| 欧美日韩中文在线| 欧美成人官网二区| 欧美日韩免费高清| 国产精品久久久久久超碰| 国产精品女主播| 国产一级一区二区| 亚洲福利免费| 夜夜夜精品看看| 香蕉久久精品日日躁夜夜躁| 欧美综合第一页| 久久亚洲精品一区二区| 欧美国产视频一区二区| 欧美巨乳在线观看| 国产精品视频第一区| 韩国福利一区| 日韩一级大片在线| 欧美一级视频| 欧美韩日一区| 国产日韩欧美日韩大片| 亚洲国产日韩欧美在线图片 | 欧美日韩综合网| 国产亚洲欧美另类中文| 亚洲欧洲一区二区三区| 亚洲性夜色噜噜噜7777| 欧美一区亚洲| 欧美视频不卡| 亚洲福利av| 亚洲女爱视频在线| 麻豆精品视频| 国产女人18毛片水18精品| 亚洲国产精品成人va在线观看| 亚洲一本大道在线| 欧美高清在线一区二区| 国产日韩欧美在线看| 一本久久精品一区二区| 久久久噜噜噜久久| 国产精品免费在线 | 亚洲精品乱码久久久久久黑人 | 国产日韩1区| 99re6热只有精品免费观看| 久久久久免费观看| 国产精品自拍小视频| 一本色道久久综合亚洲精品不| 久久久亚洲国产美女国产盗摄| 国产精品第13页| 亚洲精品视频一区| 久久综合婷婷| 激情懂色av一区av二区av| 亚洲欧洲99久久| 国产精品高潮视频| 日韩一区二区精品葵司在线| 蜜桃av一区二区三区| 伊人精品视频| 亚洲欧美日韩在线不卡| 国产精品美女久久久久久2018| 日韩午夜电影在线观看| 欧美精品二区| 99国内精品| 欧美色视频日本高清在线观看| 亚洲精品国精品久久99热一| 欧美成人日本| 亚洲精品美女在线观看| 欧美日韩一区二区三区视频| 在线亚洲观看| 国产精品亚洲网站| 欧美中文在线免费| 国产在线视频不卡二| 久久青青草综合| 亚洲国产乱码最新视频| 欧美黄色一区| 99精品热视频只有精品10| 欧美久久电影| 亚洲一区在线播放| 国产欧美亚洲视频| 久久免费视频一区| 亚洲精品在线看| 国产精品豆花视频| 久久狠狠一本精品综合网| 在线观看日韩www视频免费| 欧美精品一区二区三区高清aⅴ| 夜夜狂射影院欧美极品| 国产欧美日韩在线播放| 久久精品在线免费观看| 亚洲黄色成人| 国产精品免费一区豆花| 久久综合中文字幕| 在线视频你懂得一区二区三区| 国产精品三上| 欧美成人亚洲成人| 亚洲无线视频| 亚洲高清av| 国产精品区一区| 欧美大色视频| 午夜精品免费在线| 亚洲日本一区二区三区| 国产精品一区视频| 欧美国产日韩精品免费观看| 亚洲欧美精品中文字幕在线| 亚洲高清资源| 国产欧美一区二区精品秋霞影院| 美女久久一区| 欧美在线视频观看免费网站| 亚洲经典一区| 狠狠入ady亚洲精品经典电影| 欧美日本中文字幕| 久久青青草综合| 欧美在线视频一区二区| 亚洲裸体视频| 一区二区三区自拍| 国产女人精品视频| 欧美视频中文一区二区三区在线观看| 久久久www成人免费毛片麻豆| 中文av一区特黄| 亚洲国产免费看| 激情视频一区二区| 国产精品一区亚洲| 欧美视频在线观看一区二区| 欧美v国产在线一区二区三区| 欧美一区二区高清在线观看| 亚洲性线免费观看视频成熟| 亚洲啪啪91| 最新日韩av| 亚洲精品偷拍| 亚洲精品乱码久久久久久蜜桃麻豆| 国内成+人亚洲| 黑人巨大精品欧美一区二区小视频| 国产精品乱子久久久久| 欧美视频一区在线观看| 欧美日韩另类丝袜其他| 欧美日韩国产色视频| 欧美激情第二页| 欧美日韩三级电影在线| 欧美精品七区| 欧美日韩综合不卡| 欧美手机在线| 国产精品夜夜嗨| 国产精品视频导航| 国产精品免费在线| 国产精品试看| 精品成人久久| 亚洲欧洲日产国产网站| 亚洲精品在线电影| 亚洲一级电影| 久久激情五月婷婷| 免费观看亚洲视频大全| 欧美成人久久| 欧美日韩不卡一区| 国产精品爱啪在线线免费观看| 国产精品久久久久久久久久尿| 国产欧美大片| 亚洲第一区在线| 一区二区三区视频在线播放| 亚洲一区影院| 美女主播精品视频一二三四| 欧美日韩xxxxx| 国产区在线观看成人精品| 一区二区在线视频观看| 亚洲久久视频| 欧美一区二区在线播放| 欧美成人在线影院| 国产精品素人视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 日韩小视频在线观看|