精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解Cortex-A9 uboot啟動代碼

系統(tǒng) Linux
本篇給大家介紹一款比較常用的bootloader:uboot,通過uboot的介紹以及源代碼的詳細(xì)分析,讓大家把之前所有ARM相關(guān)的知識點融會貫通起來。

[[378325]]

 前言

我們在前面的arm系列課程,已經(jīng)講解了arm的架構(gòu)、匯編指令、異常、常用外設(shè)的控制器驅(qū)動,那么我們已經(jīng)具備開發(fā)arm系列產(chǎn)品的基本技能。

本篇給大家介紹一款比較常用的bootloader:uboot,通過uboot的介紹以及源代碼的詳細(xì)分析,讓大家把之前所有ARM相關(guān)的知識點融會貫通起來。

一、uboot

1. 概念

U-Boot 是一個主要用于嵌入式系統(tǒng)的引導(dǎo)加載程序,可以支持多種不同的計算機(jī)系統(tǒng)結(jié)構(gòu),包括PPC、ARM、AVR32、MIPS、x86、68k、Nios與MicroBlaze。這也是一套在GNU通用公共許可證之下發(fā)布的自由軟件。

U-Boot不僅僅支持嵌入式Linux系統(tǒng)的引導(dǎo),它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系統(tǒng)。其目前要支持的目標(biāo)操作系統(tǒng)是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。

2. uboot基本功能

U-Boot可支持的主要功能列表:

  • 系統(tǒng)引導(dǎo)支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng);支持NFS掛載、從FLASH中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核;
  • 基本輔助功能強(qiáng)大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤以Linux支持最為強(qiáng)勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRAM、EEPROM;
  • CRC32校驗可校驗FLASH中內(nèi)核、RAMDISK鏡像文件是否完好;
  • 設(shè)備驅(qū)動串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持;
  • 上電自檢功能SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號。

3. 常用命令

uboot命令比較多,下面只列舉網(wǎng)絡(luò)啟動要用到的命令:

4. 配置參數(shù)舉例

以下以網(wǎng)絡(luò)下載內(nèi)核、網(wǎng)絡(luò)掛載nfs為例。

1)ubuntu環(huán)境

ubuntu ip:192.168.6.186

nfs配置:

配置文件如下:

  1. /etc/exports 

配置信息如下:

 

nfs

2)開發(fā)板設(shè)置

開發(fā)板ip:192.168.6.187

配置命令:

  1. setenv ipaddr 192.168.6.187      ;板子的ip 
  2. setenv serverip 192.168.6.186    ;虛擬機(jī)的ip 
  3. setenv gatewayip 192.168.1.1     ;網(wǎng)關(guān) 
  4. saveenv                          ;保存配置 

加載內(nèi)核和設(shè)備樹

  1. setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000 

bootcmd:uboot2啟動之后,首先先執(zhí)行找到這個參數(shù),執(zhí)行后面的命令。

從tftp服務(wù)器下載內(nèi)核鏡像uImage到地址41000000,設(shè)備樹文件exynos4412-fs4412.dtb到42000000,并通過命令bootm加載啟動內(nèi)核。

  • 掛載nfs
  1. setenv bootargs root=/dev/nfs nfsroot=192.168.6.186:/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.6.187 

掛載nfs文件系統(tǒng)

  • root=/dev/nfs
  • nfsroot=192.168.6.186:/rootfs nfs服務(wù)器地址192.168.6.186,目錄為/rootfs,
  • rw 文件系統(tǒng)操作權(quán)限為可續(xù)寫
  • console=ttySAC2,115200 串口名稱和波特率
  • init=/linuxrc 內(nèi)核啟動后運(yùn)行的進(jìn)程為linuxrc
  • ip=192.168.6.187 開發(fā)板地址

二、exynos-4412 Soc 啟動順序

要想了解exynos-4412的啟動順序,我們首先需要了解該soc的內(nèi)存布局。

1. exynos-4412內(nèi)存布局

通常一款soc的內(nèi)存在廠家設(shè)計的時候就已經(jīng)規(guī)定死了,對于使用者來說,我們無法改變。


我們只關(guān)心和啟動相關(guān)的一個地址,

  1. iROM 在soc內(nèi)部,出廠時廠家固化了特定的程序,iROM中程序?qū)?yīng)用戶來說不可改變
  2. iRAM 在soc內(nèi)部,速度較快,但空間不大
  3. DMC RAM控制器,位于SOC內(nèi)部,用于驅(qū)動RAM,大容量的RAM都需要連接到該控制器

2. Booting Sequence

不同的廠家的啟動順序是不太一樣的,本篇主要以三星的exynos-4412 soc為基礎(chǔ),講解該基于該板子的uboot啟動順序。


根據(jù)上圖,系統(tǒng)啟動的大概順序:

  • iROM在SOC內(nèi)部,是一個64KB的ROM,他樹池化一些系統(tǒng)啟動必須的功能。比如:時鐘、棧。
  • iROM負(fù)責(zé)從特殊的啟動外設(shè)加載BL1的image到soc內(nèi)部的256KB的SRAM中。啟動的外設(shè)由操作按鈕來決定的。根據(jù)不同按鍵的值,iROM將會對bl1 的image做不同的校驗。
  • BL1初始化系統(tǒng)時鐘和DRAM控制器,然后從啟動外設(shè)加載OS image到DRAM中。根據(jù)啟動按鈕的值的不同,BL1會對OS做不同的校驗。
  • 啟動完成之后,BL1跳轉(zhuǎn)到操作系統(tǒng)(kernel)。

iROM會根據(jù)OM 引腳的不同選擇不同的啟動設(shè)備,對應(yīng)的OM寄存器需要提供對應(yīng)的啟動信息。

三、內(nèi)核啟動流程概述

1. 內(nèi)核啟動流程 概述

 

uboot啟動流程

如上圖所示:

  1. 設(shè)備上電之后,先執(zhí)行iROM中的出廠代碼,先進(jìn)行必要硬件的初始化 去執(zhí)行uboot,
  2. 通常把kernel、設(shè)備樹文件放到flash中
  3. 程序啟動之后,往往先從flash啟動,運(yùn)行uboot
  4. 第一步:先進(jìn)行硬件的初始化(svc模式棧、clock、內(nèi)存、串口) 第二步:自搬移:把uboot從flash中拷貝到RAM中,跳轉(zhuǎn)到RAM中執(zhí)行剩下的uboot代碼
  5. 第三步:把內(nèi)核拷貝到RAM中,執(zhí)行內(nèi)核,把控制權(quán)交給內(nèi)核。

2. 內(nèi)核啟動詳細(xì)流程

開發(fā)板從上電到啟動內(nèi)核的過程

四、uboot啟動流程代碼詳解

1. lds文件

要想了解uboot整個項目的代碼流程,必須首先了解鏈接腳本【鏈接腳本參考《7. 從0開始學(xué)ARM-GNU偽指令,lds使用》】。

該文件決定了uboot最終生成的鏡像文件,各個段的布局。

uboot鏈接腳本如下:

  1. u-boot-2013.01/arch/arm/cpu/u-boot.lds 

文件內(nèi)容:

  1. 26 OUTPUT_FORMAT("elf32-littlearm""elf32-littlearm""elf32-littlearm"
  2.  27 OUTPUT_ARCH(arm) 
  3.  28 ENTRY(_start) 
  4.  29 SECTIONS 
  5.  30 { 
  6.  31     . = 0x00000000; 
  7.  32  
  8.  33     . = ALIGN(4); 
  9.  34     .text : 
  10.  35     { 
  11.  36         __image_copy_start = .; 
  12.  37         CPUDIR/start.o (.text*) 
  13.  38         *(.text*) 
  14.  39     } 
  15.  40  
  16.  41     . = ALIGN(4); 
  17.  42     .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } 
  18.  43  
  19.  44     . = ALIGN(4); 
  20.  45     .data : { 
  21.  46         *(.data*) 
  22.  47     } 
  23.  48  
  24.  49     . = ALIGN(4); 
  25.  50  
  26.  51     . = .; 
  27.  52  
  28.  53     . = ALIGN(4); 
  29.  54     .u_boot_list : { 
  30.  55     #include <u-boot.lst> 
  31.  56     } 
  32.  57  
  33.  58     . = ALIGN(4); 
  34.  59  
  35.  60     __image_copy_end = .; 
  36.  61  
  37.  62     .rel.dyn : { 
  38.  63         __rel_dyn_start = .; 
  39.  64         *(.rel*) 
  40.  65         __rel_dyn_end = .; 
  41.  66     } 
  42.  67  
  43.  68     .dynsym : { 
  44.  69         __dynsym_start = .; 
  45.  70         *(.dynsym) 
  46.  71     } 
  47.  72  
  48.  73     _end = .; 
  49.  74  
  50.  75     /* 
  51.  76      * Deprecated: this MMU section is used by pxa at present but 
  52.  77      * should not be used by new boards/CPUs. 
  53.  78      */ 
  54.  79     . = ALIGN(4096); 
  55.  80     .mmutable : { 
  56.  81         *(.mmutable) 
  57.  82     } 
  58.  83  
  59.  84     .bss __rel_dyn_start (OVERLAY) : { 
  60.  85         __bss_start = .; 
  61.  86         *(.bss*) 
  62.  87          . = ALIGN(4); 
  63.  88         __bss_end__ = .; 
  64.  89     } 
  65.  90  
  66.  91     /DISCARD/ : { *(.dynstr*) } 
  67.  92     /DISCARD/ : { *(.dynamic*) } 
  68.  93     /DISCARD/ : { *(.plt*) } 
  69.  94     /DISCARD/ : { *(.interp*) } 
  70.  95     /DISCARD/ : { *(.gnu*) } 
  71.  96 } 
  72.  97  

核心內(nèi)容解釋:

  1. 27 OUTPUT_ARCH(arm)       :    該鏡像運(yùn)行在arm架構(gòu)的硬件上 
  2. 28 ENTRY(_start)          :    程序的入口是 _start 
  3. 29 SECTIONS 
  4. 30 { 
  5. 31  . = 0x00000000;      :   程序的鏈接地址,不是運(yùn)行地址【uboot一定是位置無關(guān)碼】 
  6. 34     .text : 
  7. 35     { 
  8. 36         __image_copy_start = .;    : 宏對應(yīng)整個程序編譯好后首地址,自搬移代碼的初始位置 
  9. 37         CPUDIR/start.o (.text*)    : 第一個目標(biāo)文件CPUDIR/start.o中的代碼段 
  10. 38         *(.text*)                  : 剩下的目標(biāo)文件的代碼段 
  11. 39     } 
  12. 60     __image_copy_end = .;          : 自搬移代碼的結(jié)束為止 

BSS全局未初始化變量、全局初始化為0的變量所在的段:

  1. 84     .bss __rel_dyn_start (OVERLAY) : { 
  2.  85         __bss_start = .; 
  3.  88         __bss_end__ = .; 
  4.  89     } 

2. uboot啟動代碼流程概要

代碼只分析到uboot命令行,函數(shù)main_loop()位置。


3. 啟動代碼詳細(xì)分析

_start入口位于以下文件:

  1. u-boot-2013.01/arch/arm/cpu/armv7/start.S 

第一階段:

 

第二階段

第二階段代碼從_main開始:


以上代碼詳細(xì)解釋,請結(jié)合B站視頻同步學(xué)習(xí)。

五、uboot啟動的幾個關(guān)鍵知識點

1.如何判斷第一條機(jī)器指令的位置?

鏈接腳本決定了內(nèi)存的布局。

uboot鏈接腳本如下:

  1. u-boot-2013.01/arch/arm/cpu/u-boot.lds 

文件內(nèi)容:

  1. 28 ENTRY(_start) 
  2. 29 SECTIONS 
  3. 30 { 
  4. 31     . = 0x00000000; 
  5. 32  

uboot的入口是_start

鏈接地址是0x00000000

2.uboot如何搬運(yùn)代碼?

代碼位于:

  1. u-boot-2013.01/arch/arm/cpu/armv7/start.S 

搬移代碼如下:

  1. ENTRY(relocate_code) 
  2.  mov r4, r0 /* save addr_sp */ 
  3.  mov r5, r1 /* save addr of gd */ 
  4.  mov r6, r2 /* save addr of destination */ 
  5.  
  6.  adr r0, _start 
  7.  cmp r0, r6 
  8.  moveq r9, #0  /* no relocation. relocation offset(r9) = 0 */ 
  9.  beq relocate_done  /* skip relocation */ 
  10.  mov r1, r6   /* r1 <- scratch for copy_loop */ 
  11.  ldr r3, _image_copy_end_ofs 
  12.  add r2, r0, r3  /* r2 <- source end address     */ 
  13.  
  14. copy_loop: 
  15.  ldmia r0!, {r9-r10}  /* copy from source address [r0]    */ 
  16.  stmia r1!, {r9-r10}  /* copy to   target address [r1]    */ 
  17.  cmp r0, r2   /* until source end address [r2]    */ 
  18.  blo copy_loop 

詳情參考第四章,第3節(jié)。

3.uboot中,如何判斷此次開機(jī)是從斷電狀態(tài)開機(jī)還是從休眠狀態(tài)啟動的?

  1. board/samsung/fs4412/lowlevel_init.S 

代碼如下:

  1. 41   lowlevel_init: 
  2. 54     /* AFTR wakeup reset */ 
  3. 55     ldr r2, =S5P_CHECK_DIDLE 
  4. 56     cmp r1, r2 
  5. 57     beq exit_wakeup 
  6. 58  
  7. 59     /* LPA wakeup reset */ 
  8. 60     ldr r2, =S5P_CHECK_LPA 
  9. 61     cmp r1, r2 
  10. 62     beq exit_wakeup 
  11. 63  
  12. 64     /* Sleep wakeup reset */ 
  13. 65     ldr r2, =S5P_CHECK_SLEEP 
  14. 66     cmp r1, r2 
  15. 67     beq wakeup_reset 
  16.  
  17. 112 wakeup_reset: 
  18. 113     bl system_clock_init 
  19. 114     bl mem_ctrl_asm_init 
  20. 115     bl tzpc_init 
  21. 116  
  22. 117 exit_wakeup: 
  23. 118     /* Load return address and jump to kernel */ 
  24. 119     ldr r0, =(EXYNOS4_POWER_BASE + INFORM0_OFFSET) 
  25. 120  
  26. 121     /* r1 = physical address of exynos4210_cpu_resume function */ 
  27. 122     ldr r1, [r0] 
  28. 123  
  29. 124     /* Jump to kernel*/ 
  30. 125     mov pc, r1 

由上可知,當(dāng)手機(jī)因為各種原因進(jìn)入休眠時,會將當(dāng)前程序執(zhí)行的上下文保護(hù)起來,并向一些pmic的寄存器中寫入指定的數(shù)據(jù),以表明此次是因為何種原因進(jìn)入休眠。

而手機(jī)并沒有完全斷電,而是處于一個低功耗模式下,此時啟動RAM仍然有數(shù)據(jù),所以在此啟動后,只需要從特殊的寄存器中讀取相應(yīng)的值,就可以知道之前是因為什么原因休眠,進(jìn)而回復(fù)休眠之前的上下文即可。

3.uboot代碼搬到ram之后,代碼的運(yùn)行地址發(fā)生了變化,如何保證程序跳轉(zhuǎn)不會出錯?

除了要保證uboot代碼是基于地址無關(guān)的,此外.rel.dyn幫我們解決了,其實主要還是編譯器幫我們做了很多工作。

位置無關(guān)碼參考《15. 從0學(xué)ARM-什么是位置無關(guān)碼?》

4.設(shè)備啟動的時候,有可能直接從ram啟動, 如何知道當(dāng)前是從flah啟動還是ram啟動的?

文件:

  1. board/samsung/fs4412/lowlevel_init.S 

代碼:

lowlevel_init:

  1. 85     /* 
  2.  86      * If U-boot is already running in ram, no need to relocate U-Boot. 
  3.  87      * Memory controller must be configured before relocating U-Boot 
  4.  88      * in ram. 
  5.  89      */ 
  6.  90     ldr r0, =0x0ffffff      /* r0 <- Mask Bits*/ 
  7.  91     bic r1, pc, r0      /* pc <- current addr of code */ 
  8.  92                     /* r1 <- unmasked bits of pc */ 
  9.  93     ldr r2, _TEXT_BASE      /* r2 <- original base addr in ram */ 
  10.  94     bic r2, r2, r0      /* r2 <- unmasked bits of r2*/ 
  11.  95     cmp r1, r2          /* compare r1, r2 */ 
  12.  96     beq 1f          /* r0 == r1 then skip sdram init */ 

原理:RAM地址空間是:0x40000000-0xA0000000 0xA0000000-0x00000000 而iROM/iRAM地址的bit:28-31均是0,所以只需要讀取出執(zhí)行到lowlevel_init時pc的值,判斷其bit:28-31是否是0即可知道現(xiàn)在代碼是否運(yùn)行在RAM中。

 

責(zé)任編輯:姜華 來源: 一口Linux
相關(guān)推薦

2021-01-19 19:32:01

Cortex-A9 R嵌入式系統(tǒng)i2c 外設(shè)

2021-01-06 05:42:42

Cortex-A9 R嵌入式系統(tǒng) RTC

2021-01-16 11:40:28

ARM嵌入式開發(fā)ADC應(yīng)用

2020-12-22 11:54:42

C語言Cortex-A9LED匯編

2021-01-08 12:06:59

WDT定時裝置

2020-12-30 15:17:25

Cortex-A9UARTprintf函數(shù)

2009-11-11 10:19:59

uboot內(nèi)核

2021-04-20 09:26:40

Cortex M架構(gòu)Cortex A架構(gòu)STM32系列

2019-08-19 00:31:16

Pytorch神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)

2012-02-21 23:05:17

Windows啟動順序

2011-02-23 15:26:01

FileZilla

2025-06-26 02:45:00

UbootSoC系統(tǒng)

2024-11-27 08:14:43

2017-08-03 10:25:26

AndroidActivity

2010-06-13 15:58:20

GRUB啟動命令

2024-12-16 08:10:00

Spring開發(fā)

2010-06-09 13:52:55

OpenSUSE桌面

2009-12-24 14:14:41

Fedora 9

2009-12-22 17:46:56

Fedora 9嵌入式

2009-09-07 14:54:47

CCNA學(xué)習(xí)筆記
點贊
收藏

51CTO技術(shù)棧公眾號

懂色av成人一区二区三区| 国产免费无码一区二区视频| 欧美xxxx做受欧美护士| 中文在线免费一区三区高中清不卡| 国产在线日韩在线| 国产成人在线免费观看视频| 欧美中文一区二区| 欧美va天堂va视频va在线| 男人天堂999| 国产鲁鲁视频在线观看特色| 99久久久久久| 成人午夜小视频| 国产微拍精品一区| 亚洲在线久久| 亚洲视频在线观看网站| 亚洲911精品成人18网站| 亚洲最新免费视频| 手机看片福利视频| 国产厕拍一区| 欧美日韩免费一区二区三区视频| 日韩av新片网| 黄色精品免费看| 久久老女人爱爱| caoporn国产精品免费公开| 在线永久看片免费的视频| 国产精品videossex久久发布| 在线观看国产精品91| 岛国精品资源网站| 欧美9999| 欧美日韩国产色站一区二区三区| 日韩免费视频播放| 欧美aaa免费| 亚洲欧洲av在线| 久久伊人资源站| 韩国av电影在线观看| 激情五月婷婷综合| 国产精品视频网| 免费黄色片视频| 亚洲毛片av| 欧美激情综合色| 妺妺窝人体色www聚色窝仙踪| 999国产精品视频| 在线观看中文字幕亚洲| 波多野结衣av在线观看| 色婷婷久久久| 日韩成人黄色av| av黄色一级片| 久久91在线| 亚洲国产成人精品久久久国产成人一区| 在线观看网站黄| 国产精品免费精品自在线观看| 欧美喷潮久久久xxxxx| 成年人视频在线免费| 成人勉费视频| 色悠悠久久综合| 无码人妻丰满熟妇区五十路百度| 最新中文字幕在线播放| 懂色av中文一区二区三区天美| 日本人体一区二区| 97蜜桃久久| 福利一区福利二区微拍刺激| 亚洲美免无码中文字幕在线| 日本黄色免费在线| 91国在线观看| 欧美日韩一区二区三区69堂| 欧美亚洲人成在线| 538在线一区二区精品国产| 亚洲免费在线播放视频| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 综合激情视频| 欧美国产日韩xxxxx| 国产乱码久久久久久| 国产精品毛片在线看| 欧洲一区二区视频| 这里只有精品9| 国产成人午夜高潮毛片| 精品欧美一区二区三区久久久| 日韩精品视频无播放器在线看 | 精品国产精品一区二区夜夜嗨| 五月天激情小说| 国产欧美一区| 久久天天躁日日躁| 久久精品无码人妻| 日韩中文字幕区一区有砖一区| 国产精品丝袜久久久久久高清| 国产视频手机在线| 26uuu色噜噜精品一区二区| 午夜精品区一区二区三| 午夜小视频在线观看| 日韩欧美精品中文字幕| 激情文学亚洲色图| 亚欧日韩另类中文欧美| 久久激情五月丁香伊人| 一区二区三区视频免费看| 日韩黄色一级片| www.一区二区三区| 国产福利小视频在线观看| 亚洲女爱视频在线| 国产在线青青草| 高清一区二区三区av| 日韩精品中文字幕视频在线| 男人晚上看的视频| 免费在线欧美黄色| 亚洲已满18点击进入在线看片| 亚洲av片一区二区三区| 亚洲欧美在线视频| 爱福利视频一区二区| 麻豆视频久久| 最近中文字幕日韩精品| 丰满少妇乱子伦精品看片| 国产一区二区三区久久久| 欧美lavv| 超级白嫩亚洲国产第一| 欧美精品v国产精品v日韩精品| 欧美 日本 国产| 欧美日韩1区| 成人午夜激情免费视频| 岛国在线视频免费看| 午夜天堂影视香蕉久久| 91网址在线观看精品| 成人情趣视频| 青青久久aⅴ北条麻妃| 亚洲精品视频专区| 亚洲精选免费视频| 在线观看免费视频高清游戏推荐 | 亚洲欧美日产图| 亚洲人成午夜免电影费观看| 精品国产露脸精彩对白| 在线观看成人毛片| 国模无码大尺度一区二区三区| 日本午夜精品一区二区三区| 超级碰碰久久| 日韩高清免费在线| 日干夜干天天干| 成人av午夜影院| 男女裸体影院高潮| 久久一级大片| 欧美xxxx做受欧美.88| 一个人看的www日本高清视频| 国产丝袜美腿一区二区三区| 国产精品97在线| 日韩精品丝袜美腿| 97视频在线观看免费| 亚洲精品久久久久久无码色欲四季| 亚洲免费av观看| 久久久久亚洲av无码麻豆| 亚洲成av人电影| 91热福利电影| 97影院秋霞午夜在线观看| 91精品国产高清一区二区三区 | 小小影院久久| 91系列在线观看| 肉肉视频在线观看| 337p日本欧洲亚洲大胆精品 | 国产女主播喷水高潮网红在线| 性欧美videos另类喷潮| 欧美中日韩免费视频| 成人午夜精品| 丝袜情趣国产精品| 欧美成人黑人猛交| 做爰无遮挡三级| 久久精品视频免费观看| 人妻丰满熟妇av无码区app| 国产不卡一区| 国产精品中文在线| 蜜桃av在线免费观看| 91精品免费在线观看| 九九九免费视频| 99精品视频在线播放观看| 黄色a级片免费| 色无极亚洲影院| 99精彩视频| 午夜久久中文| 一区二区在线免费视频| 国产精品爽爽久久久久久| 一区二区三区成人在线视频| 日韩精品一区二区三区高清免费| 蜜桃av综合| 一级黄色片播放| 任我爽精品视频在线播放| 国产成人精品日本亚洲| 久草免费在线观看| 亚洲精品电影网站| 精品乱码一区内射人妻无码| 亚洲激情图片一区| 国产在线观看无码免费视频| 久久99国产精品久久99果冻传媒| 国产欧美日韩小视频| 国产精品视频一区二区三区四蜜臂| 国产美女精彩久久| av在线视屏| 日韩中文有码在线视频| 亚洲成人一二三区| 在线观看免费一区| 精品无码一区二区三区电影桃花| 国产丝袜欧美中文另类| 日韩精品――色哟哟| 视频在线观看91| 久久久久久久香蕉| 波多野结衣在线观看一区二区三区| 高清av免费一区中文字幕| 97精品国产综合久久久动漫日韩| 欧美国产日产韩国视频| jizz在线观看视频| 亚洲精品国产美女| 99在线小视频| 欧美性生活久久| 黄色片网站在线免费观看| 亚洲欧美视频一区| 国产123在线| aaa国产一区| 日本在线视频播放| 久久精品国产精品青草| 欧美黑人经典片免费观看| 91精品国产乱码久久久久久 | 黄色片网站免费在线观看| 欧美日韩亚洲综合| youjizz在线视频| 亚洲电影第三页| 日韩视频中文字幕在线观看| 国产欧美一区二区精品性色超碰| 中文字幕天堂网| 国产精品中文字幕一区二区三区| 国产v亚洲v天堂无码久久久| 国产日韩高清一区二区三区在线| 成人免费a级片| 亚洲国产一区二区三区在线播放| 性欧美.com| 国产免费av一区二区三区| 精品九九九九| 黄色免费大全亚洲| 国产成人精品免费视频大全最热| 日韩福利影视| 国产日韩精品综合网站| 91精品国产66| 国产精品三级网站| 97精品国产99久久久久久免费| 国产成人在线播放| 91九色综合| 国产精品国产自产拍高清av水多| 欧美www.| 国产精品午夜视频| 成人全视频在线观看在线播放高清| 国产99视频在线观看| 美女福利一区二区| 日本精品久久久久久久| 国产精品迅雷| 国产精品第一区| 成人全视频在线观看在线播放高清| 国产美女久久精品| 91嫩草国产线观看亚洲一区二区| 成人h视频在线观看播放| 亚州精品国产| 97人人香蕉| julia中文字幕一区二区99在线| 国产精品国产精品| 国产成人tv| 欧美一区二区三区四区夜夜大片| 欧美综合一区| 青青在线免费视频| 亚洲第一网站| 99色精品视频| 久久99国产精品尤物| 成年人性生活视频| 99re视频精品| 欧美成人另类视频| 亚洲三级免费电影| 日本中文字幕免费观看| 日本精品一区二区三区四区的功能| 中国黄色一级视频| 欧美一区二区福利在线| 天天综合永久入口| 亚洲色图15p| 黄色在线观看网站| 国内自拍欧美激情| av在线日韩| 91亚洲永久免费精品| 精品综合久久88少妇激情| 日本不卡高清视频一区| 91精品综合久久久久久久久久久| 欧美日韩福利在线| 欧美aⅴ一区二区三区视频| 亚洲熟女乱综合一区二区| 91尤物视频在线观看| 粉嫩精品久久99综合一区| 亚洲综合在线第一页| 欧美 亚洲 另类 激情 另类| 欧美一区二区高清| 国产美女视频一区二区三区 | 精品国产91亚洲一区二区三区婷婷| 日本v片在线免费观看| 麻豆乱码国产一区二区三区| 国产污视频在线播放| 国产主播精品在线| 香蕉久久99| 一二三四中文字幕| 日韩精彩视频在线观看| 又大又长粗又爽又黄少妇视频| 国产欧美日韩不卡免费| 久久久久久久久久综合| 欧美日韩国产三级| 日本精品专区| 欧美肥臀大乳一区二区免费视频| 色8久久影院午夜场| 国产精品免费一区二区三区四区| 成人在线免费观看91| 成人av一级片| 成人涩涩免费视频| 中日韩一级黄色片| 欧美性高清videossexo| 污视频网站免费观看| 欧美成人h版在线观看| 精品乱码一区二区三区四区| 精品午夜一区二区| 亚洲激情综合| 久久久久久久久久久影视| 欧美国产日产图区| 黄色免费av网站| 日韩成人性视频| 久草在线资源站资源站| 成人性生交xxxxx网站| 欧美日韩国产免费观看视频| 成熟丰满熟妇高潮xxxxx视频| 丰满放荡岳乱妇91ww| 免费看一级大片| 欧美狂野另类xxxxoooo| аⅴ资源新版在线天堂| 欧洲亚洲在线视频| 首页亚洲中字| 男女高潮又爽又黄又无遮挡| 99在线热播精品免费| 九九九国产视频| 精品国产乱码久久久久久免费| 国产在线看片| 成人中文字幕在线观看 | 无码专区aaaaaa免费视频| 国产精品99久久久久久久女警 | av在线1区2区| 国产精品久久久久久久久久久久久久 | 欧美性色欧美a在线播放| 福利在线午夜| 国产精品视频一| 日韩综合在线| 亚洲精品国产久| 亚洲美女区一区| 亚洲av无码片一区二区三区 | 国产河南妇女毛片精品久久久| 性欧美疯狂猛交69hd| 欧美一区二区三区的| 神马午夜伦理不卡| 9a蜜桃久久久久久免费| 伊人久久婷婷| theav精尽人亡av| 色婷婷av久久久久久久| 成人好色电影| 成人自拍性视频| 亚洲成人中文| 粉嫩av蜜桃av蜜臀av| 91福利国产成人精品照片| 无遮挡的视频在线观看| 91免费在线视频| 欧美二区视频| 日本一卡二卡在线| 色综合天天做天天爱| 国产在线91| 91久久伊人青青碰碰婷婷| 亚洲美女少妇无套啪啪呻吟| 成人网站免费观看| 欧美日韩精品是欧美日韩精品| 在线观看操人| 国产伦精品一区二区三区照片91| 国产日韩高清一区二区三区在线| 国产一区二区三区四区在线| 日韩午夜av一区| 三级中文字幕在线观看| 日韩女优中文字幕| 激情成人综合网| 日本一级片免费看| 色阁综合伊人av| 草草视频在线一区二区| 日本成人中文字幕在线| 亚洲视频网在线直播| 五月激情六月婷婷| 国产精品偷伦一区二区| 亚洲第一精品影视| www成人啪啪18软件| 精品国产乱码久久久久久夜甘婷婷| 一个人www视频在线免费观看| 伊人久久99| 26uuu久久天堂性欧美| 国产精品欧美久久久久天天影视| 国产做受高潮69| 国产高清一区| 一级性生活毛片| 欧美一区二区三区喷汁尤物| 不卡av影片| 91动漫在线看| 中文字幕视频一区| 欧美在线观看在线观看| 成人黄动漫网站免费|