《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于AT91RM9200的ARM Linux的移植方法
基于AT91RM9200的ARM Linux的移植方法
中電網
摘要: 本文根據一個特定的目標平臺,結合AT91RM9200的開發經驗,詳細介紹了將Linux移植到ARM構建的嵌入式系統上的主要技術和整個流程,實現了Linux向目標系統AT91RM9200的移植,移植后的操作系統在目標板上運行穩定,并且可以根據實際需要編寫相應的控制程序,將其應用于實際工業控制中。掌握這些技術,對于開發嵌入式系統十分重要,對開發其他類型的嵌入式系統同樣具有參考意義。
Abstract:
Key words :

1.引言
目前,在嵌入式系統里基于ARM微核的嵌入式處理器以其功耗低,功能強大的優點已經成為市場的主流。與此同時,在網絡上發展起來的Linux操作系統,以其功能強大,開放源代碼,支持硬件種類眾多的特點,越來越受到人們的青睞。然而如何把Linux操作系統移植到ARM平臺上卻成了一個重點,也是一個難點問題。

嵌入式Linux系統包括引導程序(Bootloader),內核(kernel)和根文件系統三個部分,其開發流程如圖1所示:嵌入式Linux 移植到特定的硬件平臺上,一般需要以下五個步驟:(1)前期準備包括從網站http://kernel.org上下載嵌入式Linux的源碼包, 搭建交叉編譯開發環境,配置主機的開發環境等(2)配置Bootloader,并將其燒寫到目標平臺的Flash上,使其能正常的啟動內核;(3)配置和編譯Linux內核,首先要對源碼進行一定的修改, 并將其移植到目標平臺上,然后再根據自己的硬件資源進行裁減,使內核達到最優;(4)制作RAMDISK來掛接Linux的根文件系統,并在 RAMDISK上添加自己的應用程序;(5)部署Linux系統使目標板脫離交叉開發環境,直接在目標機上本地啟動運行。本文就將根據實際項目開發中一個 ARM構架的嵌入式系統為例,闡述如何移植Linux到AT91RM9200的ARM平臺上。

29.jpg

2.建立交叉編譯環境

一般而言,直接在移植的目標硬件平臺上編寫和調試Linux比較困難,目前一般采用的辦法是首先在通用計算機上編寫程序,然后通過交叉編譯生成目標平臺上可以運行的二進制代碼格式,最后再下載到目標平臺上的特定位置上運行。

移植前需要在宿主機上建立如圖2所示的ARM的交叉編譯環境,建立ARM的交叉編譯環境主要用到的開發工具有: binutils、gcc、glibc,其中 binutils是二進制文件的處理工具; gcc是編譯工具, 用來編譯內核代碼的工具; glibc 是鏈接和運行庫。社區的開發者和一些芯片廠商已經編譯出了常用體系結構的工具鏈,使用這些工具鏈,可以大大減少工作量。交叉編譯工具的安裝步驟如下: (1)從官方站點http://arm.Linux.org.uk下載cross-2.95.3.tar.bz2;

(2)在usr/local/arm下解壓:#tar -jxvf cross-2.95.3.tar.bz2;

(3)在/etc/bashrc文件中修改PATH環境變量,加入export PATH=/usr/local/arm/2.95.3/bin:$PATH。

3. ARM Linux系統的開發

3.1 Linux啟動代碼Bootloader的移植

Bootloader是在操作系統內核運行之前運行的一段小程序。這段程序完成硬件的初始化和建立內存空間的映射圖等重要工作,為內核的啟動創建正確的環境,并最終啟動內核,Bootloader在Linux嵌入式系統中所處的層次位置如圖3所示。Bootloader的實現依賴于CPU的體系結構,大多數的Bootloader都分為stage 1和stage 2兩大部分,圖4為兩階段Bootloader的結構框圖。依賴于CPU體系結構的代碼,如設備初始化代碼等,通常都放在stage 1,而且用匯編語言實現。而stage 2則通常用C語言實現,這樣可以實現復雜功能,而且有更好的可讀性和移植性。

30.jpg

目前基于嵌入式系統的Bootloader版本很多,如Blob、Redboot、Vivi和U-Boot等,下面就以現在最流行的U-Boot為例,詳細介紹如何將它移植到自己的目標板上。U-boot移植主要步驟如下:

首先基于自己的目標板的硬件資源,修改或添加U-Boot源代碼的board/at91rm9200目錄中如下源碼文件:(1)重寫FLASH的設備控制程序flash.c , U-Boot讀、寫和刪除Flash設備的源代碼文件。由于在不同目標板中FLASH存儲器種類各不相同,參照自己flash的datasheet重寫 flash的設備控制程序flash.c,該程序完成的功能包括Flash初始化、打印Flash信息、Flash擦除和Flash寫入等操作。(2)添加memsetup.s。該匯編源碼文件初始化時鐘、SMC控制器和SDRAM控制器。(3)添加網卡芯片DM9161E的設備控制程序dm9161.c 和dm9161.h,程序。(4)修改Makefile文件。對上述修改或添加的源代碼文件編譯后,在Makefile里面主要做如下修改: OBJS :=at91rm9200dk.c at45.o dm9161.o flash.o  SOBJS:=memsetup.o(5) U-Boot.lds ,設置U-boot中各個目標文件的連接地址,基本不做修改。(6)config.mk。根據目標板的一級boot來修改,修改后TEXT BASE=0x21f00000。

其次,修改目錄include/configs的頭文件at91rm9200dk.h,根據目標板的資源配置,修改內容包括CPU ,系統時鐘、RAM 、Flash等配里信息以及內存映射相關參數。該頭文件還定義了U-Boot的一些環境變量和內核啟動參數.可在U-Boot啟動后通過setenv和 saveenv命令修改。U-Boot-1.1.2版本對at91rm9200處理器提供良好的支持,因此對于目錄CPU at91rm9200中的源碼基本不做修改。在U-Boot-1.1.2的Makefile中加入如下代碼:

at91rm9200dk_config: unconfig@/mkconfig $(@: _config=) arm at91rm9200 at91rm9200dk

其中“arm”是CPU的種類,at91rm9200是ARM CPU對應的代碼目錄,at91rm9200dk是目標板對應的目錄。由于交叉編譯器安裝在目錄/usr/local/arm,應把環境變量 CROSS_COMPILE設置成相應路徑:CROSS_COMPILE=/usr/local/arm/2.95.3 /bin/arm-linux-

最后,調試U-Boot源代碼,直到U-Boot在開發板上能正常啟動,調試成功后,燒寫U-Boot到FLASH,燒寫完成后,復位目標板,串口終端就顯示U-Boot的啟動信息。

3.2  Linux內核的移植、配置和編譯

 

31.jpg

標準Linux內核相對于資源受限的嵌入式系統來說是過于龐大,整個代碼分布如圖5所示,因此要將其移植到嵌入式系統上,就需要將Linux內核根據目標平臺的情況進行剪裁、配置,該目標板的主要硬件資源如圖6所示。和ARM體系結構相關的代碼都放在arch/arm/以及include/asm-arm/目錄下,將linux移植到ARM平臺上,主要修改這兩個目錄下的代碼。要想使linux內核應用于自己的ARM平臺AT91RM9200上,必須對內核的源代碼做一定的修改,主要修改部分如下:(1) 修改根目錄下的Makefile文件,確認ARCH和CROSS_COMPILE的定義:ARCH :=arm; CROSS_COMPILE :=arm-linux- (2)修改arch目錄下的Makefile文件,根據自己的電路設置TEXTADDR變量,TEXTADDR決定內核起始運行地址,即 image.ram應下載的地址。(3)修改arch目錄下的config.in 文件,添加CONFIG_ARCH_AT91RM9200自選項,config文件決定了menuconfig菜單的內容,把使用的平臺加在需要的地方,這樣在配置linux內核時就能夠選擇是否支你的平臺了。

(4)修改arch/arm/boot目錄下的Makefile文件,根據自己的電路設置ZTEXTADDR和ZRELADDR, ZTEXTADDR和ZRELADDR分別是自解壓代碼的起始地址和內核解壓后代碼輸出起始地址。(5)修改arch/arm/boot /compressed目錄下的Makefile文件,加入head-at91rm9200.S (6)修改arch/arm/kernel目錄下的Makefile文件,增加AT91RM9200的支持,同時在    debug-armv.S中加入關閉全部外圍設備,保證系統正常運行的代碼,在entry-armv.S中加入關于CPU中斷處理部分的代碼。(7)修改 arch/arm目錄下的mm-armv.c文件,將init_maps->bufferable=0改為init_maps-> bufferable=1;

當然,一些大的芯片開發商在發行芯片的同時,針對自己芯片的體系結構對linux內核作了一些補丁。實驗中使用的是針對AT91RM9200體系結構的補丁patch-2.4.19-rmk7給標準內核源代碼打上補丁后,該內核就可應用于AT91RM9200了,這樣可以大大減少開發的工作量。

移植之后要做的工作就是編譯內核,要想編譯適合自己工程中需要的內核,首先要對內核進行配置,常用的配置命令有:make config;make oldconfig;make menuconfig;make xconfig;make defconfig;Linux內核包允許用戶對其各類功能逐項配置,在配置時, 大部分選項可以使用其缺省值, 只有小部分需要根據用戶不同需要選擇。選擇的原則是將與內核其它部分關系較遠部分且不經常使用的部分功能代碼編譯成為可加載模塊, 有利于減小內核的長度, 減小內核消耗的內存,不需要的功能就不要選, 與內核緊密且經常使用的部分功能代碼直接編譯到內核中。主要是進行以下幾項配置: (1)選擇處理器類型;(2)選擇板級支持;(3)選擇對RAMDISK支持、對設備驅動的支持以及對文件系統的支持。在配置工作完成后, 就可以進行內核編譯。

編譯內核有壓縮方式和非壓縮兩種方式。非壓縮方式使用make vmlinux來編譯內核,或者直接運行make命令。壓縮方式用make bzImage來編譯內核。編譯成功后會在arch/arm/boot目錄中生成內核的鏡像,此鏡像下載到flash中就可以通過bootloader引導。具體的編譯步驟如下:(1) 進入打上補丁修改好的內核源代碼目錄下,執行make mrproper;make clean這兩條指令,將源代碼清理干凈(防止以前編譯產生的“垃圾”干擾)。(2)執行make at91rm9200dk_config,使源代碼按照AT91RM9200體系結構來配置。 (3)執行make o1dconfig(保存原編譯配置)(4)執行make menuconfig進入內核編譯前配置界面,進行配置。(5)執行make dep聲稱編譯要用的依賴文件。(6)執行make zImage生成內核鏡像。

3.3 文件系統的移植

linux采用文件系統組織系統中的文件和設備,為設備和用戶程序提供統一接口。linux要啟動起來還需要有根文件系統。根文件系統的作用是存放各種工具(如Linux命令)、應用程序、必需的鏈接庫等等。通常用busybox來制作根文件系統,在busybox中包含一百多種Linux上標準的工具程序, 而這些工具程序僅需幾百k空間。busybox使用非常方便, 只要建立一個符號連接即可, 用戶可以通過配置Config.h 和Makefile文件來定制busybox。將busybox復制到bin目錄中,分別使用ln-s 建立每一個命令的符號連接。但應該注意的是busybox需要glibc支持(如果使用靜態連接則不需要glibc 庫文件),因此還需要將運行busybox所需的庫文件copy到lib目錄中, 并建立符號連接。到此為止, ARM Linux 的根文件系統就已經建立起來了。

ARM Linux采用RAMDISK的方式來裝載根文件系統,所以在運行內核之前,需要先制作RAMDISK,將必須的文件和設備加人到RAMDISK中。內核啟動后,會從指定地址去讀取根文件系統,這里我們使用RAMDISK在內存中虛擬一個磁盤,具體方法如下:

(1)首先創建一個2048k的虛擬磁盤,文件名為initrd.img:# dd  if= dev/zero of=initrd.img bs= lk count= 2048  (2)將該虛擬磁盤文件格式化成Ext2格式:# mkfs ext2 -c initrd.img這就生成了一個支持Ext2文件系統的ramdisk  (3)mount這個文件系統到/tmp下,# mount -o loop -t ext2 initrd.img /tmp  (4)向/tmp中添加linux啟動必須的文件和設備。 # cd  /tmp;  # mkdir bin dev etc lib mnt proc sbin sys usr  以上這幾個程序和設備是啟動Linux必須的,這樣得到的ramdisk大約400k  (5)創建設備節點,添加相應的程序,將已經訂制好的一個文件系統全部復制過來。# cp –a  myfs/*  /tmp  (6)壓縮映像,把loop設備卸載下來,然后用gzip命令把映像壓縮一下。# umount /tmp ;  #gzip –best –c initrd.img > initrd.img.gz現在我們就得到了一個壓縮的RAMDISK映像initrd.img.gz制作好了。

32.jpg

4. 內核的下載和執行

要想使目標板的Linux系統脫離交叉開發環境,直接在目標機上本地啟動運行,必須通過U-boot將U-boot映像,內核映像和RAMDISK 映像燒寫到FLASH中,因為使用U-boot引導程序需要使用U-boot格式的內核映像和RAMDISK映像,可以通過以下命令來實現:
($U-BOOT-PATH)/tools /mkimage -A arm -O linux -T kernel -C gzip –a 0x20008000 -e 0x20008000 –n “linux-2.4.19”-d linux.bin.gz uImage
($U-BOOT-PATH)/tools/mkimage-A arm -O linux -T ramdisk -C gzip –a 0x21100000 -e 0x21100000 –n “RAMDISK”-d ramdisk.bin ramdisk

通過U-boot將uImage和ramdisk燒寫到flash相應的分區中去,燒寫到flash相應分區的地址如圖7所示:燒寫完畢后設置u- boot的環境變量,讓系統自動啟動,系統復位后,Linux系統就可以完全自動從本地flash啟動了,啟動后,進行地址映射,u-boot會把u- boot壓縮映像,kernel壓縮映像,ramdisk壓縮映像全部拷貝到SDRAM的相應地址,SDRAM的映射地址如圖8所示,這時Linux系統完全在SDRAM中運行了,Linux系統真正啟動起來了。

5. 總結

本文根據一個特定的目標平臺,結合AT91RM9200的開發經驗,詳細介紹了將Linux移植到ARM構建的嵌入式系統上的主要技術和整個流程,實現了Linux 向目標系統AT91RM9200的移植,移植后的操作系統在目標板上運行穩定,并且可以根據實際需要編寫相應的控制程序,將其應用于實際工業控制中。掌握這些技術,對于開發嵌入式系統十分重要,對開發其他類型的嵌入式系統同樣具有參考意義。

本論文作者創新點:從軟件與硬件的相互關系, 硬件對軟件的制約、硬件對軟件的支持這個角度對裁減和移植進行了分析,同時在Bootloader(啟動代碼)的移植,Kernel(內核)的裁減和移植過程中,把代碼分成了兩部分,一部分是和硬件相關的部分,一部分是和硬件無關的部分,這樣做不僅思路清晰,而且可以大大減少工作量。

參考文獻:
[1] 許先斌, 熊慧君, 李淵, 楊芬. 基于ARM9 的嵌入式Linux開發流程的研究[J]微計算機信息. 2006,11:87-90
[2] 劉振綱,劉成安,盧劍翔. 移植標準Linux 到S3C2410[J] 微計算機信息.2006,32:152-154
[3] 羅致,王仲東. ARM Linux在AT91RM9200平臺上的移植.軟件技術,2006年第25卷第1期 
[4] 李明,ARM Linux的移植過程及分析[J ].電子設計應用, 2003,7
[5] 劉崢嶸等編著,嵌入式Linux應用開發詳解[M].北京:機械工業出版社,2004. 7

此內容為AET網站原創,未經授權禁止轉載。
热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>
          国产欧美婷婷中文| 99在线精品观看| 亚洲人成精品久久久久| 欧美三级韩国三级日本三斤| 亚洲电影在线观看| 久久久不卡网国产精品一区| 免费的成人av| 亚洲精品综合久久中文字幕| 在线亚洲成人| 亚洲国语精品自产拍在线观看| 欧美日韩精品伦理作品在线免费观看| 欧美人牲a欧美精品| 精品av久久707| 葵司免费一区二区三区四区五区| 欧美午夜精品久久久久久孕妇| 国内成+人亚洲| 欧美一区不卡| 欧美成人精品在线视频| 久久午夜av| 国内一区二区三区| 欧美在线91| 一本一本大道香蕉久在线精品| 蜜桃av综合| 亚洲午夜免费视频| 国产精品美女主播| 欧美午夜一区| 99视频热这里只有精品免费| 亚洲午夜精品视频| 国产精品久久夜| 久久激情五月激情| 欧美激情精品久久久久久久变态| 美女视频网站黄色亚洲| 欧美激情在线有限公司| 久久久久天天天天| 国产手机视频一区二区| 免费久久99精品国产自| 这里只有精品视频在线| 欧美女人交a| 欧美激情国产日韩精品一区18| 久久综合九色综合欧美狠狠| 国产主播一区二区| 久久久夜精品| 尤物精品在线| 欧美日韩福利| 亚洲日本成人在线观看| 性色av一区二区三区红粉影视| 欧美日韩国产成人在线免费| 久久精品一区二区三区中文字幕| 国产精品久久久久国产a级| 精品动漫3d一区二区三区免费| 欧美在线观看一区二区| 日韩亚洲欧美在线观看| 国产色婷婷国产综合在线理论片a| 久久久另类综合| 在线视频观看日韩| 欧美激情一区二区三区蜜桃视频| 久久精品99国产精品酒店日本| 欧美一区二区三区免费视| 亚洲国产另类精品专区| 久久成人免费视频| 久久国产一区二区三区| 欧美一区二区三区久久精品茉莉花| 国产精品a久久久久| 亚洲一区二区三区久久| 国产啪精品视频| 亚洲人精品午夜| 久久精品国产久精国产一老狼| 欧美日韩欧美一区二区| 国产人久久人人人人爽| 一本色道久久88精品综合| 欧美日韩亚洲一区二区| 欧美国产日韩精品免费观看| 91久久线看在观草草青青| 亚洲国产色一区| 久久久综合香蕉尹人综合网| 国内精品视频久久| 国产日本亚洲高清| 欧美国产免费| 国产精品视频免费在线观看| 欧美专区一区二区三区| 欧美大片免费观看在线观看网站推荐| 久久久精品国产99久久精品芒果| 国产精品亚发布| 亚洲欧美日韩综合国产aⅴ| 亚洲欧洲精品成人久久奇米网| 欧美在线精品一区| 欧美久久久久中文字幕| 午夜亚洲福利| 欧美在线播放高清精品| 亚洲美女性视频| 欧美日韩日本视频| 夜夜爽www精品| 亚洲人成亚洲人成在线观看| 亚洲国产视频直播| 日韩亚洲欧美一区二区三区| 欧美成va人片在线观看| 国内久久视频| 欧美一区二区三区视频免费| 欧美国产欧美综合| 亚洲四色影视在线观看| 99精品久久免费看蜜臀剧情介绍| 欧美激情aaaa| 在线观看91久久久久久| 亚洲女同精品视频| 国产精品扒开腿爽爽爽视频| 亚洲一区二区在线免费观看| 亚洲韩国一区二区三区| 99精品国产在热久久婷婷| 欧美电影免费观看高清| 国产色爱av资源综合区| 亚洲最新在线| 欧美一区二区三区视频在线| 性做久久久久久免费观看欧美| 在线观看日韩av先锋影音电影院| 亚洲视频视频在线| 亚洲欧美一区二区在线观看| 欧美一区二区黄色| 国产精品盗摄一区二区三区| 日韩一级在线观看| 国产专区综合网| 久久婷婷国产综合国色天香| 韩国av一区| 欧美大尺度在线观看| 一区二区精品在线观看| 久久福利一区| 久久精品一二三| 亚洲第一综合天堂另类专| 欧美成人国产| 亚洲欧美一区二区三区久久| 久久国产精品99久久久久久老狼| 国产精品一区一区三区| 欧美在线一级视频| 国产一区在线视频| 韩国v欧美v日本v亚洲v| 亚洲专区免费| 欧美日韩亚洲激情| 欧美成人免费观看| 一区二区三区 在线观看视| 欧美国产视频日韩| 欧美亚洲在线视频| 亚洲国产精品高清久久久| 国内精品久久久久久久果冻传媒| 亚洲国产视频一区二区| 午夜精品成人在线视频| 亚洲欧美福利一区二区| 久久久久网址| 亚洲欧美中文日韩v在线观看| 狠狠色香婷婷久久亚洲精品| 国产精品一级在线| **欧美日韩vr在线| 午夜久久福利| 亚洲欧美一区二区激情| 国产精品影院在线观看| 中文无字幕一区二区三区| 国产精品自拍网站| 一区二区三区久久| 欧美日本高清视频| 久久这里有精品15一区二区三区| 老司机免费视频一区二区三区| 中文国产成人精品久久一| 欧美性猛交xxxx乱大交蜜桃| 国产日韩欧美精品一区| 国产老女人精品毛片久久| 亚洲午夜精品在线| 久久综合伊人77777麻豆| 国产精品天天看| 欧美日韩不卡在线| 国产精品日韩一区二区三区| 在线看欧美视频| 在线观看91久久久久久| 国户精品久久久久久久久久久不卡| 久久久久www| 亚洲特级片在线| 极品少妇一区二区三区精品视频| 激情五月综合色婷婷一区二区| 久热爱精品视频线路一| 久久国产精品72免费观看| 欧美二区在线观看| 亚洲欧美日韩国产综合精品二区| 欧美新色视频| 亚洲欧美在线一区二区| 国产精品99久久99久久久二8| 亚洲国产精品www| 午夜久久福利| 欧美成人免费大片| 亚洲一区二区三区国产| 国产精品日韩在线观看| 亚洲欧美另类在线| 国内揄拍国内精品久久| 亚洲小说春色综合另类电影| 欧美日韩成人在线播放| 亚洲精品久久久久中文字幕欢迎你| 国产色综合天天综合网| 国产偷自视频区视频一区二区| 久久蜜桃资源一区二区老牛| 欧美大片免费| 久久久综合激的五月天| 小黄鸭精品密入口导航| 亚洲国产婷婷综合在线精品| 一区二区三区 在线观看视| 91久久精品国产91性色| 亚洲精品国产系列| 老色鬼精品视频在线观看播放| 亚洲第一天堂av| 国产日韩欧美| 99视频热这里只有精品免费| 欧美女主播在线| 亚洲综合日韩中文字幕v在线| 亚洲高清不卡| 欧美精品一区二区三区蜜桃| 欧美午夜不卡视频| 欧美电影电视剧在线观看| 午夜精品免费视频| 亚洲欧美日本国产专区一区| 亚洲第一福利在线观看| 欧美精品v日韩精品v韩国精品v| 一区精品久久| 午夜影视日本亚洲欧洲精品| 久久在线免费视频| 欧美日韩综合在线免费观看| 久久综合伊人77777蜜臀| 久久夜色精品国产| 午夜综合激情| 午夜久久久久| 国产日韩亚洲欧美| 国产九九视频一区二区三区| 欧美精品精品一区| 激情欧美一区二区三区| 国产有码在线一区二区视频| 欧美成人a∨高清免费观看| 国产精品综合视频| 在线观看一区二区视频| 亚洲福利在线视频| 久久99在线观看| 中日韩视频在线观看| 国产精品女主播| 一区二区亚洲欧洲国产日韩| 久久这里只有精品视频首页| 国产日产精品一区二区三区四区的观看方式| 国产精品va| 韩日精品在线| 亚洲视频日本| 欧美一区二区三区在线视频| 国产日本欧美一区二区| 欧美一区二区三区四区在线观看| 国产一区二区中文| 久久资源av| 最新亚洲视频| 亚洲国产成人精品久久久国产成人一区| 亚洲三级免费| 国产精品欧美久久久久无广告| 欧美日韩免费一区二区三区视频| 亚洲欧洲在线看| 国产日韩精品一区二区浪潮av| 欧美日韩亚洲一区二区| 国产亚洲网站| 狠狠干狠狠久久| 亚洲第一级黄色片| 红桃视频一区| 国产亚洲欧美一区| 欧美一区二区成人| 国内成人精品2018免费看| 韩国视频理论视频久久| 极品av少妇一区二区| 欧美精品一区在线发布| 欧美亚洲一区在线| 国产欧美不卡| 国产精品护士白丝一区av| 欧美护士18xxxxhd| 亚洲精品日韩在线| 久久精品久久99精品久久| 欧美日韩999| 国产精品av一区二区| 亚洲影视中文字幕| 老鸭窝91久久精品色噜噜导演| 久久av红桃一区二区小说| 国产精品黄色在线观看| 正在播放亚洲一区| 六十路精品视频| 国产一区二区三区久久久| 国产噜噜噜噜噜久久久久久久久| 久久久亚洲欧洲日产国码αv| 一本色道久久综合亚洲精品不卡| 亚洲无限乱码一二三四麻| 国内一区二区在线视频观看| 亚洲永久网站| 国产精品久久久久一区二区三区| 1000精品久久久久久久久| 精品成人一区二区| 亚洲第一黄色网| 一级成人国产| 国产亚洲欧美另类一区二区三区| 午夜精品视频在线| 亚洲日本中文| 欧美日韩精品免费在线观看视频| 久久久久一区二区三区| 国产精品久久中文| 久久先锋影音av| 欧美一区视频在线| 午夜国产不卡在线观看视频| 欧美日韩国产经典色站一区二区三区| 亚洲精品国产精品国自产在线| 在线成人亚洲| 亚洲欧洲一区二区三区| 欧美承认网站| 国内免费精品永久在线视频| 午夜精品久久久久| 亚洲香蕉视频| 国产精品每日更新| 国产精品极品美女粉嫩高清在线| 久久国产毛片| 欧美日韩综合不卡| 欧美资源在线| 欧美成在线观看| 欧美视频在线观看视频极品| 激情综合五月天| 欧美激情一区二区三区在线| 激情久久一区| 欧美精品一区二区三区在线播放| 一区二区三区www| 一本色道久久精品| 在线综合+亚洲+欧美中文字幕| 久久久久久久综合色一本| 伊人夜夜躁av伊人久久| 一区二区三区日韩| 亚洲电影在线| 亚洲大胆女人| 久久久久久久综合色一本|