《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM和Linux的嵌入式平臺的構建
基于ARM和Linux的嵌入式平臺的構建
EEworld
摘要: 本文通過對U-Boot 移植和Linux 內核移植的討論,給出了移植U-Boot 和Linux 到大多數開發板的關鍵部分。由于移植的復雜性, 不可能包括全部步驟, 但通過本文的闡述可以了解移植的基本流程和關鍵點, 為移植不同版本到其他硬件平臺提供了參考, 也為應用程序的開發搭建了一個比較完整的嵌入式平臺。
關鍵詞: ARM Linux
Abstract:
Key words :

關鍵字:ARM Linux

    進入后PC 時代以來, 伴隨著設計和制造技術的發展, 集成電路從當初的晶體管集成發展到現在的IP 集成, 即SoC(System on Chip ) 設計技術。促使嵌入式系統滲透到了當今社會中的各個行業, 并且發揮越來越重要的作用。嵌入式系統一般可定義為以應用為中心、以計算機技術為基礎、軟硬件可裁剪、適用于應用系統且對功能、成本、體積、功耗有嚴格要求的專用計算機系統,它的主要特點是嵌入、應用。

  隨著各種嵌入式設備功能越來越強大, 在設備中使用嵌入式操作系統也成為必然。Linux 操作系統具有開放源代碼、易于移植、資源豐富、免費等特點, 在嵌入式領域的地位越來越重要。嵌入式Linux 和PC 上的Linux是同一套內核代碼, 只是裁剪的程度不一樣, 所以, 很多在PC 上開發的軟件, 經過交叉編譯后可以直接在嵌入式設備上運行。本文主要涉及到Bootloader 移植和Linux-2.6.32.2 內核的移植、根文件系統移植、在S3C2440平臺上構建完整的嵌入式開發平臺三個方面。

  1 交叉開發環境的建立

  在進行嵌入式軟件開發之前, 必須要在PC 上建立ARM 的交叉編譯環境。交叉編譯就是在PC 平臺上生成可以在ARM 平臺上運行的代碼。其中主要包括ARM 的交叉編譯器arm-elf-gcc 和交叉連接器arm-elf-ld 。本文采用的交叉編譯器的版本是gcc -3.4.5 -glibc -2.3.6 。

  交叉編譯流程如圖1 所示。

圖1 嵌入式系統交叉編譯流程

  2 BootLoader 引導加載程序

  BootLoader 是一段在系統上電時開始執行的程序,用以初始化硬件設備, 準備好軟件環境, 設置好啟動參數, 最后引導操作系統, 與PC 上的BIOS 程序相似。當前開放源碼的Linux 引導程序主要有x86 架構的LILO、GRUB, 對于ARM 架構的主要有Vivi 和U-Boot 。本文使用U-Boot 作為引導程序。U-Boot(Universal Boot Loader) ,即通用的BootLoader , 遵循GPL 條款開放源代碼。U-Boot相對于Vivi 功能更加強大, 也更方便后續程序的調試。

  BootLoader 的啟動一般分為兩個階段, 第一階段的代碼主要是用匯編語言編寫, 主要的功能是完成硬件設備的初始化, 為加載第二階段的代碼準備RAM 空間, 設置好堆棧; 第二階段主要用C 語言編寫, 檢測內存映射, 將內核映像和根文件系統從Nand Flash 讀到RAM中, 為內核啟動設置參數, 引導內核。

  U-Boot 的源代碼可以從ftp://ftp.denx.de/pub/u-boot/進行下載, 本文使用的U-Boot 版本是U-Boot2009.08 。

  移植U-Boot 的關鍵步驟如下:

 ?。?) 首先, 將include/configs 目錄下的smdk2410.h 復制并改名為mini2440.h , 根據U-Boot 的說明可以知道,如果要使用開發板board/ , 則先執行“make ”_config 命令進行配置, 然后執行“make all ” , 生成可執行文件。所以, 修改U-Boot 頂層的Makefile 文件, 添加下面一行mini2440_config : unconfig@ $ (MKCONFIG) $ (@:_config = ) arm arm920t mini2440frank s3c24x0 。這里有幾個重要的參數,arm 指CPU 的架構,arm920t 指CPU 的類型,s3c24x0 指CPU 的型號。這樣就可以使用make mini2440_config 這條命令進行配置。

 ?。?)本文使用的U-Boot 是從Nand Flash 啟動的, CPU可以直接訪問Nand Flash 中前4 KB 代碼, 利用這4 KB代碼把U-Boot 中絕大部分代碼拷貝到內存中[ 3]。其中下面的代碼就是調用C 語言中的Nand Flash 的讀寫函數, 該函數主要把Nand Flash 中4 KB 以后的代碼復制到RAM 中。在編寫nand_read_ll 的函數時, 注意參考Nand Flash 的數據手冊, 對大頁和小頁的Nand Flash , 其讀寫的命令和時序是不同的。

  @copy U-Boot to RAM

  ldr r0,=TEXT_BASE

  mov r1,#0x0

  mov r2,#0x60000

  bl nand_read_ll

  tst r0,#0x0

  beq ok_nand_read

  由于在后面加載Linux 內核和根文件系統時, 使用的是tftp 方式, 所以必須添加DM9000EP 網卡的驅動。在mini2440.h 文件中, 其主要的配置如下:

  #define CONFIG_DRIVER_DM9000 1

  #define CONFIG_NET_MULTI 1

  #define CONFIG_DM9000_NO_SROM 1

  #define CONFIG_DM9000_BASE 0x20000300

  #define DM9000_DATA (CONFIG_DM9000_BASE +4)

  其中,CONFIG_DM9000_BASE 宏是最重要的, 因為它定義的是網卡的地址, 不同的網卡有不同的地址,DM9000EP 訪問的基址為0x20000000, 之所以再偏移0x300 是由它的特性決定的。

 ?。?) 要正確引導Linux 內核, 還需要配置下面幾個重要的宏定義, 這幾個宏定義不同, 意味著引導Linux 內核的方式也不同。

  #define CONFIG_BOOTARGS"noinitrd root=/dev/mtdblock3

  init=/linuxrc console=ttySAC0,115200 mem=64M"

  其中,root =/dev/mtdblock3 是由Linux 中的Nand Flash 分區所決定的, 意味著Nand Flash 的第4 個分區為根文件系統。

  #define CONFIG_BOOTCOMMAND"nand read 0x32000000 0x60000 0x560000;bootm 0x32000000"

  這個宏定義是將Nand Flash 中0x60000 -0x560000( 和kernel 分區一致) 的內容讀到內存0x32000000 中, 然后用bootm 命令來執行。

  要正常地引導Linux 內核, 必須要具備如下幾個條件:

 ?。?)CPU 寄存器

  R0=0 ;

  R1= 機器類型ID ; 對于ARM 結構的CPU, 其機器類

  型ID 在linux/arch/arm/tools/mach-types ;

  R2=啟動參數標記列表在RAM 中起始基地址。

  (2)CPU 工作模式

  必須禁止中斷(IRQs 和FIQs ) ;

  CPU 必須為SVC 模式。

 ?。?)Cach 和MMU 的設置

  MMU 必須關閉;

  指令Cach 可以打開也可以關閉;

  數據Cach 必須關閉。

  3 Linux2.6.32.2 內核的移植

  3.1 內核的獲取

  Linux 內核的更新很快, 可以從http://www.kernel.org/pub/linux/kernel/ 得到最新的Linux 內核版本, 本文使用的Linux 內核版本是Linux -2.6.32.2, 交叉編譯工具使用符合EABI 標準的arm-linux-gcc-4.3.2 。

  3.2 內核的移植

  可以在內核的根目錄下, 運行make menuconfig 命令, 對內核進行適當的裁剪, 以適應硬件平臺。

  對內核進行適當的裁剪, 以適應硬件平臺。

  (1) 修改Makefile 文件

  欲設置Linux 的默認平臺為ARM 平臺, 需進入Linux-2.6.32 文件夾中, 修改此目錄下的Makefile 文件。

  export KBUILD_BUILDHOST := $(SUBARCH)

  ARCH ?=arm // 使用的目標平臺

  CROSS_COMPILE ?=arm-linux- // 使用的交叉編譯器,

  這里使用系統默認的編譯器

 ?。?) 關于機器碼

  在啟動內核時, 根據BootLoader 傳入的機器碼(MACH_TYPE) 來決定應啟動哪種目標平臺[ 6], 本開發平臺的機器碼為1999 。機器碼存放在文件opt/kernel/linux-2.6.32.2/arch/arm/tools/mach-types 中。

  mini2440 MACH_MINI2440 MINI2440 1999 // 機器碼

  如果機器碼不匹配, 引導內核不成功, 則會出現如下的錯誤提示:

  Uncompressing

  Linux……………………………………………………………………………done, booting the kernel.

(3) 修改時鐘源

 

  將/kernel/linux -2.6.32.2/arch/arm/mach -s3c2440/ 目錄下的mach-smdk2440.c 文件改名為mach-mini2440.c。

  因為mini2440 和mach-smdk2440.c 極其相似, 以該文件為基礎進行修改, 在mach -mini2440.c 文件中將staticvoid__init smdk2440_map_io ( void ) 函數中的晶振頻率修改為mini2440 開發板上實際使用的12000000。

 ?。?) 為內核打上yaffs2 補丁

  ①Yaffs2 文件系統是專門針對嵌入式設備, 特別是使用Nand Flash 作為存儲器的嵌入式設備而創建的一種文件系統, 使用yaffs2 就可以支持大頁的Nand Flash。

  進入yaffs2 源代碼目錄執行如下命令:

  #./patch -ker.sh c /opt/FriendlyARM/mini2440/linux -2.6.32.2

 ?、谂渲脙群艘灾С諽affs2 文件系統

  在Linux 內核源代碼根目錄運行make xconfig, 在“File systems ” 選項中, 找到“Miscellaneous filesystems ” 菜單項, 找到“YAFFS2 file system support ” 并選中它, 這樣就在內核中添加了yaffs2 文件系統的支持, 保存并退出。然后在命令行中, 執行make zImage 。

 ?。?) 修改Nand Flash 分區信息

 ?、僭趍ach-mini2440.c 文件中添加Nand Flash 的分區信息, 下面的代碼將Nand Flash 分成了4 個分區, 第1 分區也是BootLoader 所在的分區, 對應dev/mtdblock0 ;第2 個分區是U-Boot 的參數分區, 對應dev/mtdblock1 ;第3 個分區是內核分區, 對應dev/mtdblock2 ; 第4 個分區為根文件系統分區對應dev/mtdblock3 。分區結構圖如表1 所示。

表1 128 MB Nand Flash 的分區結構圖

  其部分實現代碼如下:

  static struct mtd_partition mini2440_default_nand_part[] ={

  [0] = {

  .name="U-boot",

  .offset= 0,

  .size= 0x00040000,

  }

  其中name 是分區的名字,offset 是偏移的開始地址,size是分區的大小, 其余部分的分區與此類似。

  ②下面代碼是添加Nand Flash 的設置表, 因為板子上只有一片Nand Flash, 因此也就只有一個設置表。

  static struct s3c2410_nand_set mini2440_nand_sets[] = {

  [0] = {

  .name= "NAND",

  .nr_chips= 1,

  .nr_partitions=

  ARRAY_SIZE(mini2440_default_nand_part),

  .partitions= mini2440_default_nand_part,

  }

  }

  ③上面的設置完成后, 還需要將Nand Flash 設備注冊到系統中。下面這段代碼就是將Nand Flash 設備添加到開發板的設備列表結構。

  static struct platform_device *mini2440_devices [] __initdata

  = {

  &s3c_device_nand,

  }

 ?、茉趍ini2440_machine_init 函數中添加平臺的數據信息。

  static void __init mini2440_machine_init(void){

  s3c_device_nand.dev.platform_data=&mini2440_nand_info;

  }

  現在可以進入kernel/linux-2.6.32.2/arch/arm/boot 目錄,然后執行下面的命令, 就會在該目錄下生成uImage.img格式的、U-Boot 可以引導的內核鏡象。

  Mkimage – n ‘linux-2.6.32.2 ’ –A arm – O linux–T kernel –C none – a 0x30008000 – e 0x30008000 –d zImage uImage.img

  至此, 可以把生成的uImage.img 格式的鏡像文件復制到tftp 目錄下, 使用tftp 進行下載。

  3.3 文件系統

  所謂根文件系統, 就是創建各個目錄, 例如在/bin 、/sbin/ 目錄下存放各種可執行的程序, 在/etc 目錄下存放配置文件, 在/lib 目錄下存放庫文件。

  可以利用Busybox 工具創建根文件系統,Bosybox 是一個遵循GPL v2 協議的開源項目, 它在編寫過程中對文件大小進行優化, 并考慮了系統資源有限( 例如內存)的情況, 使用Busybox 可以自動生成根文件系統所需的bin、sbin、usr 目錄和linuxrc 文件, 可以使用make menuconfig對Busybox 的選項進行配置。

 ?。?) 進入opt/kernel, 創建一個shell 腳本用于構建根文件系統的各個目錄, 并且為其增加執行權限;(2)Linux 中的init 進程會根據etc/inittab 文件創建其他子進程, 下面代碼是inittab 文件中的內容, 說明了系統啟動后首先執行的腳本文件是rcS, 虛擬的終端是串口0, 當按下ctr+alt+del 時重啟系統,inittab 文件的作用就是控制系統啟動時和啟動后一些程序的運行。

  #etc/inittab

  ::sysinit:/etc/init.d/rcS

  s3c2410_serial0::askfirst:-/bin/sh

  ::ctrlaltdel:/sbin/reboot

  ::shutdown:/bin/umount -a-r

 ?。?) 創建etc/init.d/rcS 文件, 這是一個腳本文件, 可以在里面添加要自動執行的一些命令。

  #! /bin/sh

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  runlevel=S // 運行的級別

  prevlevel=N

  umask 022 // 文件夾的掩碼

  mount -a // 掛載/etc/fstab/ 文件指定的所有的文件系統

  mdev-s

  /bin/hostname -F /etc/sysconfig/HOSTNAME// 主機的名字

  使用yaffs 源碼提供的工具制作文件系統的映像文件。由于128 MB 的Nand Flash 是大頁結構, 所以需要使用相應的大頁制作工具; 使用命令mkyaffs2image rootfsrootfs.img 生成根文件系統映像文件。

  本文通過對U-Boot 移植和Linux 內核移植的討論,給出了移植U-Boot 和Linux 到大多數開發板的關鍵部分。由于移植的復雜性, 不可能包括全部步驟, 但通過本文的闡述可以了解移植的基本流程和關鍵點, 為移植不同版本到其他硬件平臺提供了參考, 也為應用程序的開發搭建了一個比較完整的嵌入式平臺。
 

此內容為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>
          葵司免费一区二区三区四区五区| 亚洲视频网站在线观看| 欧美午夜不卡视频| 黑人极品videos精品欧美裸| 国产精品久久久久影院色老大| 亚洲精品日韩在线观看| 亚洲日韩成人| 国产专区精品视频| 国产综合久久久久影院| 黄色精品免费| 国产精品av久久久久久麻豆网| 国产精品xxxav免费视频| 亚洲主播在线| 欧美区一区二| 99在线观看免费视频精品观看| 亚洲日韩第九十九页| 久久精品视频一| 国产美女精品在线| 麻豆九一精品爱看视频在线观看免费| 亚洲国产综合在线| 亚洲国产成人在线播放| 欧美77777| 欧美午夜在线视频| 久久久亚洲高清| 一二三四社区欧美黄| 欧美日韩天天操| 亚洲国产成人不卡| 国产精品男女猛烈高潮激情| 国产午夜精品在线观看| 亚洲无线一线二线三线区别av| 性欧美办公室18xxxxhd| 亚洲精品韩国| 国产一区二区三区不卡在线观看| 国产精品蜜臀在线观看| 麻豆国产精品va在线观看不卡| 女同性一区二区三区人了人一| 亚洲一区国产| 国产精品超碰97尤物18| 欧美sm重口味系列视频在线观看| 一区在线电影| 亚洲日本va午夜在线电影| 欧美日韩一区二区在线播放| 欧美大片在线看| 欧美国产先锋| av成人手机在线| 国产精品久久久久久久久动漫| 狼狼综合久久久久综合网| 最新国产精品拍自在线播放| 国产视频一区在线观看一区免费| 亚洲免费电影在线| 日韩亚洲视频在线| 亚洲国产小视频在线观看| 久久av一区二区三区漫画| 久久av一区二区三区亚洲| 国产精品国产三级国产| 久久这里只精品最新地址| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲最新视频在线播放| 亚洲免费在线视频一区 二区| 久久久久国产精品一区三寸| 99精品免费| 欧美国产在线视频| 亚洲精品自在在线观看| 亚洲视频一区二区免费在线观看| 久久成人免费| 亚洲欧美精品| 欧美视频二区| 在线看国产一区| 欧美激情一区二区三区成人| 欧美激情精品久久久久久久变态| 欧美日本韩国一区| 亚洲视频 欧洲视频| 亚洲男人的天堂在线观看| 欧美日韩一区二区在线视频| 国产欧美一区二区三区久久人妖| 国产精品99久久久久久宅男| 欧美α欧美αv大片| 久久久噜噜噜久久人人看| 久久久www成人免费毛片麻豆| 久久亚洲精选| 欧美一区二区日韩一区二区| 9人人澡人人爽人人精品| 蜜桃视频一区| 日韩一区二区久久| 国产日韩欧美在线播放不卡| 欧美国产欧美亚洲国产日韩mv天天看完整| 最新亚洲激情| 国产毛片一区| 国产精品网站在线| 亚洲美女一区| 亚洲国产精彩中文乱码av在线播放| 又紧又大又爽精品一区二区| 国产视频在线一区二区| 欧美本精品男人aⅴ天堂| 国产在线成人| 亚洲国产天堂网精品网站| 国产精品亚洲美女av网站| 欧美日韩一卡二卡| 国产亚洲欧美色| 亚洲视频在线免费观看| 老司机久久99久久精品播放免费| 欧美三级电影精品| 欧美午夜视频在线观看| 久久riav二区三区| 久久久成人精品| 国产网站欧美日韩免费精品在线观看| 国产日韩欧美综合精品| 国产午夜精品美女视频明星a级| 欧美大片在线观看一区二区| 欧美亚洲午夜视频在线观看| 欧美一区网站| 久久亚洲影音av资源网| 欧美精品97| 亚洲大片精品永久免费| 欧美日韩aaaaa| 亚洲一区二区三区在线观看视频| 免费成人美女女| 国产精品久久波多野结衣| 亚洲综合色自拍一区| 亚洲理论在线| 国产精品久99| 亚洲综合丁香| 亚洲大胆人体视频| 一区二区三区高清视频在线观看| 亚洲图片欧美一区| 国产有码在线一区二区视频| 夜夜嗨一区二区三区| 久久国产99| 国产亚洲a∨片在线观看| 久久久久久69| 久久综合伊人| 国产精品久久久久久影院8一贰佰| 亚洲影院色在线观看免费| 欧美精品aa| 久久三级视频| 欧美成人a视频| 99视频精品全国免费| 欧美一级黄色录像| 一本色道久久综合亚洲精品不| 久久精视频免费在线久久完整在线看| 亚洲永久免费精品| 一本色道久久综合亚洲精品高清| 亚洲国产成人午夜在线一区| 久久久久99精品国产片| 国产日韩精品一区| 免费一级欧美在线大片| 欧美在线国产精品| 国产精品黄色在线观看| 欧美日韩亚洲一区二| 国产乱码精品1区2区3区| 欧美色123| 久久欧美中文字幕| 在线免费精品视频| 亚洲精品久久久久中文字幕欢迎你| 亚洲福利国产| 国产精品一区二区你懂的| 在线一区免费观看| 欧美日韩1234| 精品不卡一区| 在线一区二区视频| 国产午夜精品理论片a级探花| 老司机午夜免费精品视频| 国产久一道中文一区| 99av国产精品欲麻豆| 国产午夜精品一区二区三区视频| 免费一级欧美片在线观看| 亚洲精品在线观看视频| 国产日韩欧美亚洲一区| 欧美一级片久久久久久久| 欧美日韩国产不卡在线看| 亚洲三级毛片| 夜夜嗨av一区二区三区四季av| 亚洲视频在线一区观看| 久久九九精品99国产精品| 在线一区亚洲| 国产精品一区在线播放| 模特精品在线| 欧美成人乱码一区二区三区| 在线观看av不卡| 久久精品一区二区| 久久国产精品一区二区三区四区| 亚洲一区二区动漫| 日韩一级欧洲| 久久看片网站| 黄色成人在线观看| 国产精品日本一区二区| 欧美一区永久视频免费观看| 亚洲欧美国产一区二区三区| 亚洲国产精品小视频| 免费在线看一区| 伊人久久久大香线蕉综合直播| 欧美视频网站| 久久在线免费观看| 美女露胸一区二区三区| 亚洲精品视频中文字幕| 欧美日韩另类视频| 久久成人一区二区| 欧美激情在线狂野欧美精品| 国产啪精品视频| 久久激情久久| 午夜久久美女| 国产手机视频一区二区| 国产精品日韩精品欧美精品| 欧美高清在线观看| 欧美色区777第一页| 欧美诱惑福利视频| 国产一区二区按摩在线观看| 国产精品日韩在线| 欧美午夜精品久久久久久孕妇| 国产精品嫩草久久久久| 欧美久色视频| 国产精品制服诱惑| 午夜精品福利一区二区蜜股av| 99香蕉国产精品偷在线观看| 国产中文一区| 韩国女主播一区| 亚洲图片欧美午夜| 欧美日韩一区视频| 亚洲女性喷水在线观看一区| 亚洲动漫精品| 亚洲网站在线观看| 亚洲欧美精品| 亚洲精品九九| 国产精品大片免费观看| 亚洲欧美另类综合偷拍| 国产一区日韩一区| 亚洲国产成人精品久久久国产成人一区| 激情丁香综合| 老司机aⅴ在线精品导航| 欧美在线观看网站| 久热这里只精品99re8久| 欧美精品一线| 欧美jizzhd精品欧美巨大免费| 亚洲精品视频一区二区三区| 欧美三级午夜理伦三级中文幕| 欧美精品一区二区三区蜜桃| 欧美亚洲系列| 久久精品国内一区二区三区| 亚洲精品人人| 日韩网站在线| 国产一级揄自揄精品视频| 国产日韩精品在线观看| 免费高清在线一区| 亚洲精品国产精品国自产观看| 国产伦精品一区二区三区视频黑人| 欧美在线免费视屏| 在线精品亚洲一区二区| 激情国产一区二区| 韩国精品久久久999| 精品91免费| 国产日韩欧美成人| 欧美.日韩.国产.一区.二区| 亚洲国产精品一区二区第四页av| 国内精品久久久久影院 日本资源| 亚洲精品免费电影| 国产精品女主播一区二区三区| 国产精品推荐精品| 久久久久久亚洲精品不卡4k岛国| 国产精品成人一区二区网站软件| 国产精品自拍一区| 免费在线国产精品| 欧美一区二区三区在线免费观看| 91久久国产综合久久91精品网站| 国产精品久久久久久亚洲毛片| 黄色日韩网站| 欧美伦理a级免费电影| 欧美激情综合五月色丁香小说| 在线播放视频一区| 亚洲你懂的在线视频| 国产精品久久久久久久久久久久久| 91久久久一线二线三线品牌| 一本久久知道综合久久| 欧美天堂在线观看| 亚洲一区二区av电影| 欧美人在线视频| 欧美日韩国产免费| 亚洲国产精品一区二区www在线| 亚洲开发第一视频在线播放| 亚洲全部视频| 午夜视黄欧洲亚洲| 国产一区二区三区高清| 欧美日韩视频在线第一区| 欧美日韩在线一二三| 黄色成人精品网站| 国产一区 二区 三区一级| 亚洲第一级黄色片| 在线看片成人| 欧美一区二区三区免费看| 亚洲人体1000| 国产一区二区三区四区| 亚洲天堂av电影| 亚洲欧美电影院| 久久精品噜噜噜成人av农村| 欧美性生交xxxxx久久久| 妖精视频成人观看www| 久久av在线看| 99国产精品久久| 悠悠资源网亚洲青| 国内精品久久久久久久影视麻豆| 欧美在线免费看| 国产精品青草久久久久福利99| 欧美亚洲一区二区三区| 99www免费人成精品| 亚洲一区999| 欧美日韩午夜精品| 欧美色图首页| 国产精品综合视频| 鲁大师影院一区二区三区| 亚洲国产精品第一区二区| 蜜桃视频一区| 久久免费视频这里只有精品| 国产精品日韩欧美| 欧美成年人在线观看| 免费亚洲电影| 亚洲色图综合久久| 欧美另类一区二区三区| 亚洲欧美春色| 国产精品久久久久久久久久直播| 欧美日韩在线视频首页| 久久久久一区二区三区| 免费在线观看日韩欧美| 欧美日韩激情小视频| 欧美日韩和欧美的一区二区| 性久久久久久久久| 欧美午夜精品久久久久久久| 国产精品三级久久久久久电影| 欧美日韩1234| 欧美日韩国产在线一区|