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

詳解 ARM Linux啟動(dòng)過程分析

移動(dòng)開發(fā)
本文介紹的是詳解 ARM Linux啟動(dòng)過程分析,很清晰的內(nèi)容,不多說,先來看內(nèi)容!~

ARM Linux啟動(dòng)過程分析是本人要介紹的內(nèi)容,嵌入式 Linux 的可移植性使得我們可以在各種電子產(chǎn)品上看到它的身影。對(duì)于不同體系結(jié)構(gòu)的處理器來說Linux的啟動(dòng)過程也有所不同。本文以S3C2410 ARM處理器為例,詳細(xì)分析了系統(tǒng)上電后 bootloader的執(zhí)行流程及 ARM Linux的啟動(dòng)過程。

1、引 言

Linux 最初是由瑞典赫爾辛基大學(xué)的學(xué)生 Linus Torvalds在1991 年開發(fā)出來的,之后在 GNU的支持下,Linux 獲得了巨大的發(fā)展。雖然 Linux 在桌面 PC 機(jī)上的普及程度遠(yuǎn)不及微軟的 Windows 操作系統(tǒng),但它的發(fā)展速度之快、用戶數(shù)量的日益增多,也是微軟所不能輕視的。而近些年來 Linux 在嵌入式領(lǐng)域的迅猛發(fā)展,更是給 Linux 注入了新的活力。

一個(gè)嵌入式 Linux 系統(tǒng)從軟件角度看可以分為四個(gè)部分[1]:引導(dǎo)加載程序(bootloader), Linux 內(nèi)核,文件系統(tǒng),應(yīng)用程序。

其中 bootloader是系統(tǒng)啟動(dòng)或復(fù)位以后執(zhí)行的***段代碼,它主要用來初始化處理器及外設(shè),然后調(diào)用 Linux 內(nèi)核。Linux 內(nèi)核在完成系統(tǒng)的初始化之后需要掛載某個(gè)文件系統(tǒng)做為根文件系統(tǒng)(Root Filesystem)。根文件系統(tǒng)是 Linux 系統(tǒng)的核心組成部分,它可以做為L(zhǎng)inux 系統(tǒng)中文件和數(shù)據(jù)的存儲(chǔ)區(qū)域,通常它還包括系統(tǒng)配置文件和運(yùn)行應(yīng)用軟件所需要的庫。

應(yīng)用程序可以說是嵌入式系統(tǒng)的“靈魂”,它所實(shí)現(xiàn)的功能通常就是設(shè)計(jì)該嵌入式系統(tǒng)所要達(dá)到的目標(biāo)。如果沒有應(yīng)用程序的支持,任何硬件上設(shè)計(jì)精良的嵌入式系統(tǒng)都沒有實(shí)用意義。

從以上分析我們可以看出 bootloader 和 Linux 內(nèi)核在嵌入式系統(tǒng)中的關(guān)系和作用。Bootloader在運(yùn)行過程中雖然具有初始化系統(tǒng)和執(zhí)行用戶輸入的命令等作用,但它最根本的功能就是為了啟動(dòng) Linux 內(nèi)核。在嵌入式系統(tǒng)開發(fā)的過程中,很大一部分精力都是花在bootloader 和 Linux 內(nèi)核的開發(fā)或移植上。如果能清楚的了解 bootloader 執(zhí)行流程和 Linux的啟動(dòng)過程,將有助于明確開發(fā)過程中所需的工作,從而加速嵌入式系統(tǒng)的開發(fā)過程。而這正是本文的所要研究的內(nèi)容。

2、Bootloader

(1)Bootloader的概念和作用

     Bootloader是嵌入式系統(tǒng)的引導(dǎo)加載程序,它是系統(tǒng)上電后運(yùn)行的***段程序,其作用類似于 PC 機(jī)上的 BIOS。在完成對(duì)系統(tǒng)的初始化任務(wù)之后,它會(huì)將非易失性存儲(chǔ)器(通常是 Flash或 DOC 等)中的Linux 內(nèi)核拷貝到 RAM 中去,然后跳轉(zhuǎn)到內(nèi)核的***條指令處繼續(xù)執(zhí)行,從而啟動(dòng) Linux 內(nèi)核。由此可見,bootloader 和 Linux 內(nèi)核有著密不可分的聯(lián)系,要想清楚的了解 Linux內(nèi)核的啟動(dòng)過程,我們必須先得認(rèn)識(shí) bootloader的執(zhí)行過程,這樣才能對(duì)嵌入式系統(tǒng)的整個(gè)啟過程有清晰的掌握。
    
(2)Bootloader的執(zhí)行過程

不同的處理器上電或復(fù)位后執(zhí)行的***條指令地址并不相同,對(duì)于 ARM 處理器來說,該地址為 0x00000000。對(duì)于一般的嵌入式系統(tǒng),通常把 Flash 等非易失性存儲(chǔ)器映射到這個(gè)地址處,而 bootloader就位于該存儲(chǔ)器的最前端,所以系統(tǒng)上電或復(fù)位后執(zhí)行的***段程序便是 bootloader。而因?yàn)榇鎯?chǔ) bootloader的存儲(chǔ)器不同,bootloader的執(zhí)行過程也并不相同,下面將具體分析。

嵌入式系統(tǒng)中廣泛采用的非易失性存儲(chǔ)器通常是 Flash,而 Flash 又分為 Nor Flash 和Nand Flash 兩種。 它們之間的不同在于: Nor Flash 支持芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣代碼可以在Flash上直接執(zhí)行而不必拷貝到RAM中去執(zhí)行。而Nand Flash并不支持XIP,所以要想執(zhí)行 Nand Flash 上的代碼,必須先將其拷貝到 RAM中去,然后跳到 RAM 中去執(zhí)行。

實(shí)際應(yīng)用中的 bootloader根據(jù)所需功能的不同可以設(shè)計(jì)得很復(fù)雜,除完成基本的初始化系統(tǒng)和調(diào)用 Linux 內(nèi)核等基本任務(wù)外,還可以執(zhí)行很多用戶輸入的命令,比如設(shè)置 Linux 啟動(dòng)參數(shù),給 Flash 分區(qū)等;也可以設(shè)計(jì)得很簡(jiǎn)單,只完成最基本的功能。但為了能達(dá)到啟動(dòng)Linux 內(nèi)核的目的,所有的 bootloader都必須具備以下功能[2] :

初始化 RAM

因?yàn)?Linux 內(nèi)核一般都會(huì)在 RAM 中運(yùn)行,所以在調(diào)用 Linux 內(nèi)核之前 bootloader 必須設(shè)置和初始化 RAM,為調(diào)用 Linux內(nèi)核做好準(zhǔn)備。初始化 RAM 的任務(wù)包括設(shè)置 CPU 的控制寄存器參數(shù),以便能正常使用 RAM 以及檢測(cè)RAM 大小等。

初始化串口

串口在 Linux 的啟動(dòng)過程中有著非常重要的作用,它是 Linux內(nèi)核和用戶交互的方式之一。Linux 在啟動(dòng)過程中可以將信息通過串口輸出,這樣便可清楚的了解 Linux 的啟動(dòng)過程。雖然它并不是 bootloader 必須要完成的工作,但是通過串口輸出信息是調(diào)試 bootloader 和Linux 內(nèi)核的強(qiáng)有力的工具,所以一般的 bootloader 都會(huì)在執(zhí)行過程中初始化一個(gè)串口做為調(diào)試端口。

檢測(cè)處理器類型

Bootloader在調(diào)用 Linux內(nèi)核前必須檢測(cè)系統(tǒng)的處理器類型,并將其保存到某個(gè)常量中提供給 Linux 內(nèi)核。Linux 內(nèi)核在啟動(dòng)過程中會(huì)根據(jù)該處理器類型調(diào)用相應(yīng)的初始化程序。

設(shè)置 Linux啟動(dòng)參數(shù)

Bootloader在執(zhí)行過程中必須設(shè)置和初始化 Linux 的內(nèi)核啟動(dòng)參數(shù)。目前傳遞啟動(dòng)參數(shù)主要采用兩種方式:即通過 struct param_struct 和struct tag(標(biāo)記列表,tagged list)兩種結(jié)構(gòu)傳遞。struct param_struct 是一種比較老的參數(shù)傳遞方式,在 2.4 版本以前的內(nèi)核中使用較多。從 2.4 版本以后 Linux 內(nèi)核基本上采用標(biāo)記列表的方式。但為了保持和以前版本的兼容性,它仍支持 struct param_struct 參數(shù)傳遞方式,只不過在內(nèi)核啟動(dòng)過程中它將被轉(zhuǎn)換成標(biāo)記列表方式。標(biāo)記列表方式是種比較新的參數(shù)傳遞方式,它必須以 ATAG_CORE 開始,并以ATAG_NONE 結(jié)尾。中間可以根據(jù)需要加入其他列表。Linux內(nèi)核在啟動(dòng)過程中會(huì)根據(jù)該啟動(dòng)參數(shù)進(jìn)行相應(yīng)的初始化工作。

#p#

調(diào)用 Linux內(nèi)核映像

Bootloader完成的***一項(xiàng)工作便是調(diào)用 Linux內(nèi)核。如果 Linux 內(nèi)核存放在 Flash 中,并且可直接在上面運(yùn)行(這里的 Flash 指 Nor Flash),那么可直接跳轉(zhuǎn)到內(nèi)核中去執(zhí)行。但由于在 Flash 中執(zhí)行代碼會(huì)有種種限制,而且速度也遠(yuǎn)不及 RAM 快,所以一般的嵌入式系統(tǒng)都是將 Linux內(nèi)核拷貝到 RAM 中,然后跳轉(zhuǎn)到 RAM 中去執(zhí)行。不論哪種情況,在跳到 Linux 內(nèi)核執(zhí)行之前 CUP的寄存器必須滿足以下條件:r0=0,r1=處理器類型,r2=標(biāo)記列表在 RAM中的地址。

3、Linux內(nèi)核的啟動(dòng)過程

在 bootloader將 Linux 內(nèi)核映像拷貝到 RAM 以后,可以通過下例代碼啟動(dòng) Linux 內(nèi)核:call_linux(0, machine_type, kernel_params_base)。

其中,machine_tpye 是 bootloader檢測(cè)出來的處理器類型, kernel_params_base 是啟動(dòng)參數(shù)在 RAM 的地址。通過這種方式將 Linux 啟動(dòng)需要的參數(shù)從 bootloader傳遞到內(nèi)核。Linux 內(nèi)核有兩種映像:一種是非壓縮內(nèi)核,叫 Image,另一種是它的壓縮版本,叫zImage。根據(jù)內(nèi)核映像的不同,Linux 內(nèi)核的啟動(dòng)在開始階段也有所不同。zImage 是 Image經(jīng)過壓縮形成的,所以它的大小比 Image 小。但為了能使用 zImage,必須在它的開頭加上解壓縮的代碼,將 zImage 解壓縮之后才能執(zhí)行,因此它的執(zhí)行速度比 Image 要慢。但考慮到嵌入式系統(tǒng)的存儲(chǔ)空容量一般比較小,采用 zImage 可以占用較少的存儲(chǔ)空間,因此犧牲一點(diǎn)性能上的代價(jià)也是值得的。所以一般的嵌入式系統(tǒng)均采用壓縮內(nèi)核的方式。

對(duì)于 ARM 系列處理器來說,zImage 的入口程序即為 arch/arm/boot/compressed/head.S。它依次完成以下工作:開啟 MMU 和 Cache,調(diào)用 decompress_kernel()解壓內(nèi)核,***通過調(diào)用 call_kernel()進(jìn)入非壓縮內(nèi)核 Image 的啟動(dòng)。下面將具體分析在此之后 Linux 內(nèi)核的啟動(dòng)過程。

(1)Linux內(nèi)核入口

Linux 非壓縮內(nèi)核的入口位于文件/arch/arm/kernel/head-armv.S 中的 stext 段。該段的基地址就是壓縮內(nèi)核解壓后的跳轉(zhuǎn)地址。如果系統(tǒng)中加載的內(nèi)核是非壓縮的 Image,那么bootloader將內(nèi)核從 Flash中拷貝到 RAM 后將直接跳到該地址處,從而啟動(dòng) Linux 內(nèi)核。不同體系結(jié)構(gòu)的 Linux 系統(tǒng)的入口文件是不同的,而且因?yàn)樵撐募c具體體系結(jié)構(gòu)有關(guān),所以一般均用匯編語言編寫[3]。對(duì)基于 ARM 處理的 Linux 系統(tǒng)來說,該文件就是head-armv.S。該程序通過查找處理器內(nèi)核類型和處理器類型調(diào)用相應(yīng)的初始化函數(shù),再建立頁表,***跳轉(zhuǎn)到 start_kernel()函數(shù)開始內(nèi)核的初始化工作。

檢測(cè)處理器內(nèi)核類型是在匯編子函數(shù)__lookup_processor_type中完成的。通過以下代碼可實(shí)現(xiàn)對(duì)它的調(diào)用:bl __lookup_processor_type。__lookup_processor_type調(diào)用結(jié)束返回原程序時(shí),會(huì)將返回結(jié)果保存到寄存器中。其中r8 保存了頁表的標(biāo)志位,r9 保存了處理器的 ID 號(hào),r10 保存了與處理器相關(guān)的 struproc_info_list 結(jié)構(gòu)地址。

檢測(cè)處理器類型是在匯編子函數(shù) __lookup_architecture_type 中完成的。與__lookup_processor_type類似,它通過代碼:“bl __lookup_processor_type”來實(shí)現(xiàn)對(duì)它的調(diào)用。該函數(shù)返回時(shí),會(huì)將返回結(jié)構(gòu)保存在 r5、r6 和 r7 三個(gè)寄存器中。其中 r5 保存了 RAM 的起始基地址,r6 保存了 I/O基地址,r7 保存了 I/O的頁表偏移地址。當(dāng)檢測(cè)處理器內(nèi)核和處理器類型結(jié)束后,將調(diào)用__create_page_tables 子函數(shù)來建立頁表,它所要做的工作就是將 RAM 基地址開始的 4M 空間的物理地址映射到 0xC0000000 開始的虛擬地址處。對(duì)筆者的 S3C2410 開發(fā)板而言,RAM 連接到物理地址 0x30000000 處,當(dāng)調(diào)用 __create_page_tables 結(jié)束后 0x30000000 ~ 0x30400000 物理地址將映射到0xC0000000~0xC0400000 虛擬地址處。

當(dāng)所有的初始化結(jié)束之后,使用如下代碼來跳到 C 程序的入口函數(shù) start_kernel()處,開始之后的內(nèi)核初始化工作:

b SYMBOL_NAME(start_kernel)

(2)start_kernel函數(shù)

start_kernel是所有 Linux 平臺(tái)進(jìn)入系統(tǒng)內(nèi)核初始化后的入口函數(shù),它主要完成剩余的與硬件平臺(tái)相關(guān)的初始化工作,在進(jìn)行一系列與內(nèi)核相關(guān)的初始化后,調(diào)用***個(gè)用戶進(jìn)程-init 進(jìn)程并等待用戶進(jìn)程的執(zhí)行,這樣整個(gè) Linux 內(nèi)核便啟動(dòng)完畢。該函數(shù)所做的具體工作有[4][5]:

調(diào)用 setup_arch()函數(shù)進(jìn)行與體系結(jié)構(gòu)相關(guān)的***個(gè)初始化工作;

對(duì)不同的體系結(jié)構(gòu)來說該函數(shù)有不同的定義。對(duì)于 ARM 平臺(tái)而言,該函數(shù)定義在arch/arm/kernel/Setup.c。它首先通過檢測(cè)出來的處理器類型進(jìn)行處理器內(nèi)核的初始化,然后通過 bootmem_init()函數(shù)根據(jù)系統(tǒng)定義的 meminfo 結(jié)構(gòu)進(jìn)行內(nèi)存結(jié)構(gòu)的初始化,***調(diào)用paging_init()開啟 MMU,創(chuàng)建內(nèi)核頁表,映射所有的物理內(nèi)存和 IO空間。

a、創(chuàng)建異常向量表和初始化中斷處理函數(shù);

b、初始化系統(tǒng)核心進(jìn)程調(diào)度器和時(shí)鐘中斷處理機(jī)制;

c、初始化串口控制臺(tái)(serial-console);

d、ARM-Linux 在初始化過程中一般都會(huì)初始化一個(gè)串口做為內(nèi)核的控制臺(tái),這樣內(nèi)核在啟動(dòng)過程中就可以通過串口輸出信息以便開發(fā)者或用戶了解系統(tǒng)的啟動(dòng)進(jìn)程。

e、創(chuàng)建和初始化系統(tǒng) cache,為各種內(nèi)存調(diào)用機(jī)制提供緩存,包括;動(dòng)態(tài)內(nèi)存分配,虛擬文件系統(tǒng)(VirtualFile System)及頁緩存。

f、初始化內(nèi)存管理,檢測(cè)內(nèi)存大小及被內(nèi)核占用的內(nèi)存情況;

g、初始化系統(tǒng)的進(jìn)程間通信機(jī)制(IPC);

當(dāng)以上所有的初始化工作結(jié)束后,start_kernel()函數(shù)會(huì)調(diào)用 rest_init()函數(shù)來進(jìn)行***的初始化,包括創(chuàng)建系統(tǒng)的***個(gè)進(jìn)程-init 進(jìn)程來結(jié)束內(nèi)核的啟動(dòng)。Init 進(jìn)程首先進(jìn)行一系列的硬件初始化,然后通過命令行傳遞過來的參數(shù)掛載根文件系統(tǒng)。*** init 進(jìn)程會(huì)執(zhí)行用 戶傳遞過來的“init=”啟動(dòng)參數(shù)執(zhí)行用戶指定的命令,或者執(zhí)行以下幾個(gè)進(jìn)程之一:

  1. execve("/sbin/init",argv_init,envp_init);   
  2. execve("/etc/init",argv_init,envp_init);   
  3. execve("/bin/init",argv_init,envp_init);   
  4. execve("/bin/sh",argv_init,envp_init)。  

當(dāng)所有的初始化工作結(jié)束后,cpu_idle()函數(shù)會(huì)被調(diào)用來使系統(tǒng)處于閑置(idle)狀態(tài)并等待用戶程序的執(zhí)行。至此,整個(gè) Linux 內(nèi)核啟動(dòng)完畢。

4. 結(jié)論

Linux 內(nèi)核是一個(gè)非常龐大的工程,經(jīng)過十多年的發(fā)展,它已從從最初的幾百 KB 大小發(fā)展到現(xiàn)在的幾百兆。清晰的了解它執(zhí)行的每一個(gè)過程是件非常困難的事。但是在嵌入式開發(fā)過程中,我們并不需要十分清楚 linux 的內(nèi)部工作機(jī)制,只要適當(dāng)修改 linux 內(nèi)核中那些與硬件相關(guān)的部分,就可以將 linux 移植到其它目標(biāo)平臺(tái)上。通過對(duì) linux 的啟動(dòng)過程的分 析,我們可以看出哪些是和硬件相關(guān)的,哪些是 linux 內(nèi)核內(nèi)部已實(shí)現(xiàn)的功能,這樣在移植linux 的過程中便有所針對(duì)。而 linux內(nèi)核的分層設(shè)計(jì)將使 linux 的移植變得更加容易。

小結(jié):詳解 ARM Linux啟動(dòng)過程分析的內(nèi)容介紹完了,希望本文能夠幫助到你。如果需要更多相關(guān)資料的話,請(qǐng)參考編輯推薦!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2021-09-28 15:03:06

Linux內(nèi)核arm

2018-03-13 13:00:03

Linux運(yùn)維啟動(dòng)分析

2011-09-05 17:35:18

MTK啟動(dòng)過程RTOS

2009-12-03 10:00:46

Linux系統(tǒng)啟動(dòng)

2012-02-20 14:47:08

JavaPlay

2012-08-16 09:07:57

Erlang

2024-09-11 09:25:03

Tomcat組件PREP

2009-08-11 09:03:45

Windows 7系統(tǒng)啟動(dòng)

2018-10-18 14:06:15

Linux系統(tǒng)過程

2014-06-23 10:31:09

Android啟動(dòng)過程

2011-07-28 10:34:38

Cocoa 程序 啟動(dòng)

2025-06-18 09:01:27

Linux系統(tǒng)啟動(dòng)系統(tǒng)

2025-09-23 06:15:00

Linux系統(tǒng)程序

2011-06-29 10:18:20

LINUX QT ARM

2021-07-02 06:34:53

Go語言sysmon

2010-05-06 14:05:15

Unix系統(tǒng)

2014-06-19 14:59:40

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-20 11:20:37

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-19 14:30:28

Android應(yīng)用程序進(jìn)程啟動(dòng)

2014-06-19 14:54:11

Android應(yīng)用程序進(jìn)程啟動(dòng)
點(diǎn)贊
收藏

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

亚洲电影一级片| 少女频道在线观看高清| 久久国产人妖系列| 欧美精品一区二区三区国产精品| 超级砰砰砰97免费观看最新一期 | 一区二区三区四区视频| 日日噜噜噜噜久久久精品毛片| 国产乱色在线观看| 97se亚洲国产综合自在线不卡| 国产精品福利小视频| 欧美性猛交xxxxx少妇| 丝袜连裤袜欧美激情日韩| 欧美日韩www| 国产深夜男女无套内射| 日本在线人成| 91蜜桃网址入口| 91免费国产网站| 久久久久久久久黄色| 中文字幕人成人乱码| 亚洲精品动漫100p| japan高清日本乱xxxxx| 天堂网在线最新版www中文网| 国产精品护士白丝一区av| 国产日韩欧美综合精品| 国产精品无码专区av免费播放| 一二三区精品| 美女黄色丝袜一区| 自拍偷拍第9页| 亚洲欧洲免费| 精品国内片67194| 午夜大片在线观看| 91九色综合| 一区二区三区在线观看动漫| 五码日韩精品一区二区三区视频| 天天综合永久入口| 国产成人免费xxxxxxxx| 国产成人精品日本亚洲| 日韩毛片在线播放| 欧美三区视频| 欧美精品少妇videofree| 国产黄a三级三级| 成人精品视频| 亚洲男女性事视频| 黄色国产在线观看| 成人春色在线观看免费网站| 欧美一区二区在线不卡| www.夜夜爽| 玖玖精品在线| 欧美色综合网站| 国产黄色特级片| 性感女国产在线| 黑人精品xxx一区| 精品欧美一区免费观看α√| 国产白丝在线观看| 亚洲一级不卡视频| 成人免费观看在线| 波多野结衣中文字幕久久| 一区二区三区精品在线| 久久综合亚洲精品| 国产一线二线在线观看| 亚洲国产一区二区三区| 97超碰在线人人| 美女av在线免费看| 欧美性猛交xxxx乱大交极品| 国产成人a亚洲精v品无码| 中文字幕在线免费观看视频| 色综合久久88色综合天天6 | 欧美黑人疯狂性受xxxxx野外| 欧美日韩一区二区免费在线观看 | 久久99久久精品| 91精品久久久久久久久久入口| 国产精品久久久久久无人区| 国产伦精品一区二区三区在线观看| 亚洲va欧美va国产综合久久| 囯产精品一品二区三区| 99视频超级精品| 欧洲成人一区二区| sm国产在线调教视频| 亚洲午夜久久久久久久久久久 | 日韩h在线观看| 无套内谢大学处破女www小说| 国产欧美日韩精品一区二区三区| 日韩中文理论片| 美国黄色小视频| 国产偷自视频区视频一区二区| 国产高清在线不卡| 99热这里只有精品在线| 盗摄精品av一区二区三区| 蜜桃视频日韩| 国产色在线观看| 姬川优奈aav一区二区| 美女喷白浆视频| 欧美高清一级片| 亚洲精选中文字幕| 国精产品一区一区二区三区mba| 亚洲免费黄色| 国产在线精品一区免费香蕉| 欧美自拍第一页| 国产色综合久久| 99热这里只有精品免费| 欧洲av一区二区| 欧美mv日韩mv亚洲| 日韩不卡av在线| 亚洲精品九九| 成人欧美在线观看| 青青青草原在线| 亚洲蜜臀av乱码久久精品| 国产精品沙发午睡系列| 国产精品久久久久久久久久辛辛 | 精品国产乱码91久久久久久网站| 日本少妇高潮喷水xxxxxxx| 欧美1区视频| 国产精品入口免费视频一| 日本激情一区二区| 亚洲人成在线播放网站岛国| 日韩欧美xxxx| 久久中文字幕导航| 欧美理论电影在线播放| 亚洲精品国产精品乱码视色| www.激情成人| 成人av在线播放观看| 日韩欧美三区| 亚洲桃花岛网站| 久久免费激情视频| 成人国产一区二区三区精品| 国产精品夜夜夜爽张柏芝| 另类中文字幕国产精品| 日韩电影中文字幕av| 9999热视频| 精品一区二区久久| 视频一区二区精品| 日本不卡一二三| 日韩精品在线视频观看| 国产精品99re| 国产91精品露脸国语对白| 欧洲美女和动交zoz0z| 福利视频一区| 国产亚洲精品久久久久久777 | 欧美中文字幕| 国产日韩一区二区三区| gogo久久| 欧美精品一区二区三区蜜臀| 欧美日韩在线观看免费| 国产一区二区在线免费观看| 国产免费色视频| 综合久久伊人| xvideos亚洲| 91禁在线观看| 中文字幕在线一区二区三区| 国产一二三区av| 日韩精品一区二区三区免费观看 | 久久久999久久久| 国产日韩精品一区二区三区 | 日韩精品一区二区不卡| 99在线精品一区二区三区| 午夜免费福利小电影| 奇米777国产一区国产二区| 97成人精品区在线播放| 深夜视频在线免费| 色悠悠久久综合| 人人妻人人澡人人爽| 麻豆91小视频| 国产又粗又硬又长| 亚洲图色一区二区三区| 韩国美女主播一区| 女人偷人在线视频| 欧美日韩国产成人在线91| 秋霞欧美一区二区三区视频免费| 国产资源精品在线观看| 高清无码视频直接看| 美女扒开腿让男人桶爽久久动漫| 清纯唯美亚洲综合| 在线免费观看的av网站| 欧美一区二区日韩一区二区| 久久精品视频日本| 国产午夜精品一区二区三区四区| 波多结衣在线观看| 女生裸体视频一区二区三区| 国产日韩三区| 日韩av懂色| 久久国产加勒比精品无码| 天堂中文在线资源| 欧洲一区在线观看| 久久久久久久福利| 久久这里都是精品| 午夜大片在线观看| 亚洲一区二区伦理| 亚洲日本无吗高清不卡| 色妞ww精品视频7777| 人妖精品videosex性欧美| 五月天婷婷在线视频| 亚洲成人av中文字幕| 日本熟妇一区二区三区| 亚洲欧美激情小说另类| 99久久人妻无码中文字幕系列| 欧美96一区二区免费视频| 欧美黄色免费网址| 成人午夜av| 国语精品中文字幕| 另类一区二区三区| 51精品在线观看| 成视频免费观看在线看| 亚洲老司机av| 亚洲爆乳无码一区二区三区| 91福利视频网站| 国产一级av毛片| 国产精品三级视频| 黄色性生活一级片| 国产成人精品影视| 亚洲精品手机在线观看| 亚洲永久免费| 免费网站在线观看视频| 欧美xxxx中国| 欧美深深色噜噜狠狠yyy| jizz国产精品| 91久久精品久久国产性色也91| 中文在线8资源库| 欧美激情亚洲一区| 国产一二三区在线观看| 国产亚洲一区二区在线| 午夜国产在线观看| 欧美xxx久久| 精品国产18久久久久久| 欧美三级视频在线观看| 亚洲熟女综合色一区二区三区| 亚洲永久免费视频| 国内偷拍精品视频| 自拍偷拍亚洲欧美日韩| 日本黄色激情视频| 国产婷婷色一区二区三区四区| 日本国产在线视频| 国产成人av电影免费在线观看| 日韩成人精品视频在线观看| 天堂一区二区在线| 男女午夜激情视频| 国产精品一卡| 国产极品粉嫩福利姬萌白酱 | 2019中文字幕全在线观看| 丁香花高清在线观看完整版| 九九久久久久久久久激情| 超碰个人在线| 欧美成人精品一区二区三区| 成人在线网址| 免费不卡欧美自拍视频| 在线观看男女av免费网址| 久久久av电影| 特级毛片在线| 久久久久久久91| 成年人国产在线观看| 91精品国产九九九久久久亚洲| 草美女在线观看| 欧美一区二区.| 黑人巨大亚洲一区二区久| 青青久久aⅴ北条麻妃| 88xx成人永久免费观看| 国产精品日韩电影| 亚洲成a人片777777久久| 成人免费看吃奶视频网站| 精品久久国产一区| www.久久艹| 日韩精品社区| 日韩电影在线播放| 天天久久综合| 免费在线看黄色片| 亚洲一区二区三区免费在线观看| 日韩精品xxxx| 免费国产亚洲视频| 中文字幕55页| 粉嫩欧美一区二区三区高清影视| xxxx黄色片| 久久精品亚洲乱码伦伦中文| 日韩一卡二卡在线观看| 亚洲制服欧美中文字幕中文字幕| 日产欧产va高清| 在线亚洲+欧美+日本专区| 一级黄色片在线| 精品久久一二三区| 美州a亚洲一视本频v色道| 日韩在线观看免费全集电视剧网站 | 在线观看亚洲欧美| 欧美日韩日日夜夜| 国产香蕉在线观看| 国产亚洲a∨片在线观看| 成人福利片网站| 欧美性资源免费| 9999精品| 欧美日韩系列| 中文av一区| av无码精品一区二区三区| 国产伦精品一区二区三区免费迷 | 亚洲精品极品少妇16p| 成人网站免费观看入口| 奇米色777欧美一区二区| 欧美熟妇精品一区二区| 国产嫩草影院久久久久| 欧美日韩激情在线观看| 91电影在线观看| 成人黄色免费视频| 中文日韩电影网站| www成人免费观看| 91精品在线看| 精品九九在线| 日韩av三级在线| 国产丶欧美丶日本不卡视频| 永久免费毛片在线观看| 亚洲国产成人91porn| 一卡二卡三卡在线观看| 亚洲色图美腿丝袜| av伦理在线| 99re视频| 亚洲91视频| 成人亚洲精品777777大片| 白白色亚洲国产精品| 久久中文免费视频| 欧美色精品在线视频| 青青国产在线| 亚州成人av在线| 亚洲精品国产九九九| 在线观看日本一区| 日本强好片久久久久久aaa| 日韩www视频| 一区二区三区国产豹纹内裤在线| 一级黄色片在线观看| 亚洲午夜未满十八勿入免费观看全集| 欧美78videosex性欧美| 成人黄色免费在线观看| 日韩中文首页| 中文字幕在线导航| 久久久精品国产99久久精品芒果| www.天天色| 亚洲第一精品久久忘忧草社区| 国产在线观看a视频| 成人疯狂猛交xxx| 97精品国产| 色呦色呦色精品| 中文字幕一区二| 97精品人妻一区二区三区| 色综合伊人色综合网| jizz免费一区二区三区| 视频在线精品一区| 男人的天堂久久精品| 亚欧精品视频一区二区三区| 欧美亚洲高清一区二区三区不卡| 黄色av免费在线观看| 国产99久久精品一区二区| 伊人久久大香线蕉综合网蜜芽 | 黄一区二区三区| 免费中文字幕日韩| 日韩一区二区免费在线电影| av电影高清在线观看| 99中文字幕| 亚洲电影在线| 久久人人爽人人爽人人片| 日韩欧美精品网址| 九色视频在线播放| 国产精品视频男人的天堂| 性欧美欧美巨大69| 国产精品无码自拍| 偷拍一区二区三区四区| 欧美巨乳在线| 国产欧美日韩精品丝袜高跟鞋| 天天射—综合中文网| 成人三级做爰av| 精品成人在线视频| 国内在线免费高清视频| 91精品国产综合久久香蕉最新版| 亚洲高清影视| 精品人妻一区二区免费| 欧美日韩免费看| av电影在线播放高清免费观看| 成人网在线视频| 亚洲国产欧美国产综合一区| 亚洲一区二区观看| 欧美日韩一区在线| 菠萝菠萝蜜在线视频免费观看| 国产精品对白刺激久久久| 噜噜噜久久亚洲精品国产品小说| 中国美女黄色一级片| 日韩欧美中文字幕公布| 在线看片福利| 中文字幕在线亚洲精品| www.日韩av| 中文字幕在线播放日韩| 欧美日韩ab片| 精品免费视频| 伊人影院在线观看视频| 色偷偷成人一区二区三区91| 久热国产在线| 免费精品视频一区二区三区| 久久精品999| 久久国产精品免费看| 色偷偷888欧美精品久久久| 欧美爱爱网站| 久久久久久久久久一区| 大伊人狠狠躁夜夜躁av一区| 国产福利在线播放麻豆| 欧美国产一二三区| 国产iv一区二区三区| 91麻豆精品在线| 亚洲91av视频|