• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    實時操作系統(tǒng)mbedOS啟動流程剖析

    2020-10-19 04:40:40劉長勇王宜懷蔡闖華蔣建武
    計算機(jī)工程與應(yīng)用 2020年20期
    關(guān)鍵詞:服務(wù)程序主線內(nèi)核

    劉長勇,王宜懷 ,蔡闖華,蔣建武

    1.武夷學(xué)院 數(shù)學(xué)與計算機(jī)學(xué)院,福建 武夷山 354300

    2.蘇州大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006

    3.認(rèn)知計算與智能信息處理福建省高校重點實驗室,福建 武夷山 354300

    1 引言

    2014 年ARM 公司推出了mbedOS,它是一種專為物聯(lián)網(wǎng)(IoT)中的“物體”設(shè)計的開源嵌入式實時操作系統(tǒng)(Real-Time Operating System,RTOS)[1-2],能提供精確的實時控制,以保證系統(tǒng)的實時性需求[3],具有線程管理與調(diào)度、內(nèi)存管理、時間管理、隊列管理等基本功能要素,在協(xié)議棧和IP 網(wǎng)絡(luò)組件[4]、通信技術(shù)和安全訪問服務(wù)機(jī)制[5]、物聯(lián)網(wǎng)設(shè)備平臺[6]等方面得到廣泛應(yīng)用?;赗TOS 的嵌入式開發(fā),對應(yīng)用系統(tǒng)的穩(wěn)定性、實時性和啟動時間等都有嚴(yán)格的要求,在啟動過程中要完成??臻g、堆空間、線程棧大小、時間嘀嗒、線程調(diào)度機(jī)制等方面的設(shè)置[7],具有啟動時間短且復(fù)雜性高的特點。因此,充分理解RTOS 的啟動流程,有助于開發(fā)人員設(shè)計出響應(yīng)速度快、穩(wěn)定性強(qiáng)的嵌入式系統(tǒng)。目前,有關(guān)操作系統(tǒng)啟動的研究集中在Android 操作系統(tǒng)[8]、MQX 操作 系 統(tǒng)[9]、μC/OS-III 操 作 系 統(tǒng)[10]、Linux 操 作 系 統(tǒng)[11]、MTX 操作系統(tǒng)[12]以及ARM 嵌入式系統(tǒng)的啟動過程[13]等方面,但對mbedOS的啟動剖析研究方面缺乏相關(guān)資料。為此,本文將利用蘇州大學(xué)與ARM 公司聯(lián)合出品的嵌入式開發(fā)集成開發(fā)環(huán)境AHL-GEC-IDE 和金葫蘆AHL-A 系列Cortex-M0+內(nèi)核的KL36 微控制器[14](即AHL-AN100VL 型號開發(fā)板),基于SD-mbedOS 工程框架對mbedOS的啟動流程進(jìn)行分析,剖析其從芯片上電啟動,到main函數(shù),最終進(jìn)入mbedOS啟動的全過程,結(jié)合關(guān)鍵代碼、宏定義函數(shù)、流程圖、SVC中斷[15]等分析其實現(xiàn)的原理,可為mbedOS的應(yīng)用研究和在不同微控制器上的移植提供基礎(chǔ),也可為其他RTOS的啟動分析提供借鑒參考。

    2 SD-mbedOS工程框架啟動流程

    SD-mbedOS工程框架的啟動過程分為芯片上電啟動和實時操作系統(tǒng)mbedOS 啟動兩部分,如圖1 所示。芯片上電啟動包括堆棧指針初始化、啟動復(fù)位向量、關(guān)中斷、關(guān)閉看門狗、系統(tǒng)時鐘初始化、開中斷、復(fù)制初始化數(shù)據(jù)至RAM、清空BSS數(shù)據(jù)段、初始化標(biāo)準(zhǔn)庫函數(shù)和運行主函數(shù)main,這一部分的內(nèi)容與操作系統(tǒng)無關(guān)。當(dāng)進(jìn)入主函數(shù)main 中調(diào)用mbedOS_start 函數(shù)時,才會將系統(tǒng)控制權(quán)移交給mbedOS,由它完成線程的調(diào)度工作。

    圖1 SD-mbedOS工程框架啟動流程

    芯片上電啟動是從調(diào)用startup_MKL36Z4.S這個啟動文件開始,芯片內(nèi)部機(jī)制首先從Flash 的0x00000000地址處取出中斷向量表第一個表項的內(nèi)容,賦給內(nèi)核寄存器主棧指針MSP,即完成堆棧指針的設(shè)置;芯片內(nèi)部機(jī)制從Flash 的0x00000004 地址處取出第二個表項(即復(fù)位向量Reset_Handler 的首地址),賦給程序計數(shù)器PC。然后,關(guān)中斷、調(diào)用系統(tǒng)初始化函數(shù)SystemInit 完成系統(tǒng)時鐘初始化和開中斷。接著,將已初始化的數(shù)據(jù)復(fù)制到RAM 中、清空BSS 數(shù)據(jù)段和調(diào)用__libc_init_array 完成系統(tǒng)標(biāo)準(zhǔn)庫函數(shù)的初始化。最后,轉(zhuǎn)入main函數(shù)執(zhí)行,調(diào)用mbedOS_start函數(shù)完成mbedOS啟動。

    3 mbedOS啟動流程解析

    從芯片上電啟動到main函數(shù)后,將進(jìn)行mbedOS啟動。在該函數(shù)中會將主線程thd_main 和主線程執(zhí)行函數(shù)app_init 作為參數(shù)傳入mbedOS_start 函數(shù),由它負(fù)責(zé)mbedOS 啟動。mbedOS 啟動過程包括定義臨時變量、設(shè)置mbedOS 堆棧區(qū)、重定向中斷向量表至RAM、內(nèi)核初始化、設(shè)置主線程屬性、創(chuàng)建主線程、啟動內(nèi)核等方面。

    3.1 設(shè)置堆棧區(qū)和重定向中斷向量表

    (1)定義臨時變量

    定義三個臨時變量用于創(chuàng)建主線程,變量main_obj用于存儲線程控制塊,變量main_attr用于存儲將要創(chuàng)建的主線程屬性,main_stack數(shù)組用來作為主線程的棧空間。

    os_thread_t main_obj;

    osThreadAttr_t main_attr;

    __attribute__((aligned(8)))char main_stack[512];

    (2)設(shè)置mbedOS堆棧區(qū)

    在mbedOS中只有一個主棧,主棧的棧底位置通常設(shè)置在RAM 的最高地址加1 處,由高地址向低地址方向分配??臻g,主棧指針MSP 指向棧頂位置。堆通常用于存放臨時變量,由程序員動態(tài)分配和釋放,它一般采用鏈表的方式來管理變量,堆在內(nèi)存中位于bss 區(qū)和棧區(qū)之間,堆是從RAM 的低地址向高地址方向使用。調(diào)用函數(shù)mbed_set_stack_heap 設(shè)置mbedOS 的堆與棧的起始位置和大小,主要是對已定義的四個變量進(jìn)行初始化操作。

    //取得空閑RAM起始地址與大小

    unsigned char *free_start=HEAP_START;

    uint32_t free_size=HEAP_SIZE;

    //初始化棧大小與起始地址

    mbed_stack_isr_size=ISR_STACK_SIZE<free_size?ISR_STACK_SIZE:free_size;

    mbed_stack_isr_start=free_start+free_size-mbed_stack_isr_size;

    free_size-=mbed_stack_isr_size;

    //初始化堆大小與起始地址

    mbed_heap_size=free_size;

    mbed_heap_start=free_start;

    (3)重定向中斷向量表

    在系統(tǒng)啟動時中斷向量表是在Flash中的,位于Flash的0x00000000地址處,通過函數(shù)mbed_cpy_nvic重定向中斷向量表到RAM 中,實際上就是將中斷向量表拷貝到RAM中。這樣做的好處在于當(dāng)用戶程序需要改寫中斷服務(wù)程序時,可以將相應(yīng)的中斷向量指向用戶改寫后的中斷服務(wù)程序,即將中斷向量表中相應(yīng)的表項改寫為中斷服務(wù)程序的地址。

    //取得系統(tǒng)控制塊VTOR寄存器的值

    uint32_t*old_vectors=(uint32_t*)SCB->VTOR;

    //內(nèi)存地址起始地址:0x1FFFF800

    uint32_t*vectors=(uint32_t*)NVIC_RAM_VECTOR_ADDRESS;

    //將48個中斷向量拷貝到內(nèi)存地址中

    for(int i=0;i<NVIC_NUM_VECTORS;i++)

    vectors[i]=old_vectors[i];

    //設(shè)置VTOR寄存器指向新的地址

    SCB->VTOR=(uint32_t)NVIC_RAM_VECTOR_ADDRESS;

    3.2 內(nèi)核初始化

    內(nèi)核初始化過程主要由內(nèi)核初始化函數(shù)osKernel-Initialize、SVC 觸發(fā)封裝函數(shù)__svcKernelInitialize、實際初始化函數(shù)svcRtxKernelInitialize 以及中斷服務(wù)程序SVC_Handler 組成。其調(diào)用順序為osKernelInitialize→__svcKernelInitialize→ 觸 發(fā) SVC 中 斷 SVC_Handler→svcRtxKernelInitialize。

    (1)SVC觸發(fā)封裝函數(shù)

    內(nèi)核初始化函數(shù)osKernelInitialize 功能是判斷當(dāng)前是否處于中斷服務(wù)程序中或已經(jīng)屏蔽了中斷,若處于中斷服務(wù)程序中或已經(jīng)屏蔽了中斷,則返回出錯代碼;否則調(diào)用SVC 觸發(fā)封裝函數(shù)。SVC 觸發(fā)封裝函數(shù)__svcKernelInitialize 是一個宏定義函數(shù),展開后是C 語言與匯編語言混合編程代碼,其功能是為觸發(fā)SVC 中斷服務(wù)程序做前期準(zhǔn)備工作,主要有:①將要執(zhí)行的實際內(nèi)核初始化函數(shù)指針放入R7 寄存器中,即將svcRtxKernelInitialize函數(shù)地址給R7;②使線程棧指針PSP 中的值為觸發(fā)SVC 中斷后的棧頂;③觸發(fā)SVC 中斷;④將調(diào)用R7中函數(shù)得到的返回值存放在PSP棧中。其宏定義為SVC0_0M(KernelInitialize,osStatus_t),展開后如下:

    #define SVC0_0M(f,t) //宏定義

    __attribute__((always_inline)) //強(qiáng)制內(nèi)聯(lián)

    //定義為靜態(tài)內(nèi)聯(lián)函數(shù)

    __STATIC_INLINE t __svc##f(void){

    SVC_ArgN(0); //定義r0作為通用寄存器

    //保存svcRtxKernelInitialize函數(shù)地址到R7中

    SVC_ArgF(svcRtx##f);

    //用于觸發(fā)SVC中斷服務(wù)程序

    SVC_Call0M(SVC_In0,SVC_Out1,SVC_CL1);

    return(t)__r0; } //函數(shù)返回值由r0傳回

    (2)SVC中斷服務(wù)程序

    SVC中斷服務(wù)程序執(zhí)行流程如圖2所示,分為兩部分:前一部分為調(diào)用內(nèi)核初始化實際函數(shù)svcRtxKernel-Initialize 前的流程,主要完成對SVC 調(diào)用號的判斷、讀出準(zhǔn)備調(diào)用函數(shù)的入口地址等工作;后一部分為調(diào)用內(nèi)核初始化實際函數(shù)svcRtxKernelInitialize 函數(shù)(R7 寄存器存放該函數(shù)的地址)后的流程,主要完成恢復(fù)調(diào)用前的堆棧指針、函數(shù)調(diào)用后的返回值入棧、判斷是否進(jìn)行上下文切換、退出SVC中斷等工作。

    圖2 SVC中斷處理程序執(zhí)行流程

    3.3 創(chuàng)建主線程

    內(nèi)核初始化之后,需要創(chuàng)建一個自啟動線程,以便內(nèi)核啟動后執(zhí)行它,由它創(chuàng)建其他用戶線程,這個自啟動線程稱為“主線程(thd_main)”。創(chuàng)建主線程的過程主要由變量定義、創(chuàng)建線程函數(shù)osThreadNew、帶上下文創(chuàng)建線程函數(shù)osThreadContextNew、SVC觸發(fā)封裝函數(shù)__svcThreadNew、實際創(chuàng)建線程函數(shù)svcRtxThreadNew以及中斷服務(wù)程序SVC_Handler構(gòu)成。

    其調(diào)用順序為osThreadNew→osThreadContextNew→__svcThreadNew→觸發(fā)SVC中斷服務(wù)程序SVC_Handler→svcRtxThreadNew。

    (1)創(chuàng)建主線程的準(zhǔn)備工作

    在mbedOS內(nèi)核中,使用線程控制塊TCB指針來表示一個線程。因此,創(chuàng)建主線程前要給TCB 和棧分配空間,并對屬性結(jié)構(gòu)體main_attr進(jìn)行初始化。

    main_attr.stack_mem=main_stack;//棧指針

    main_attr.stack_size=sizeof(main_stack);//棧大小

    main_attr.cb_mem=&main_obj;//控制塊指針

    main_attr.cb_size=sizeof(main_obj);//控制塊大小

    main_attr.priority=osPriorityNormal;//優(yōu)先級為 24

    main_attr.name="main_thread";//名稱

    (2)主線程的創(chuàng)建

    主線程的創(chuàng)建最終是通過觸發(fā)SVC中斷服務(wù)程序調(diào)用svcRtxThreadNew 函數(shù)來完成的,該函數(shù)的主要任務(wù)包括定義臨時變量、判斷參數(shù)及內(nèi)存空間的合法性、初始化主線程TCB和線程棧、調(diào)用線程提交服務(wù)程序、設(shè)置主線程狀態(tài)并放入就緒隊列中等方面,其執(zhí)行流程如圖3所示。

    圖3 主線程創(chuàng)建執(zhí)行流程

    3.4 內(nèi)核啟動

    在主線程創(chuàng)建成功后,mbedOS 會把主線程加入到就緒隊列中等待調(diào)用,接著將進(jìn)行內(nèi)核的啟動,為操作系統(tǒng)的運行做最后的準(zhǔn)備工作。啟動內(nèi)核主要由內(nèi)核啟動函數(shù)osKernelStart、SVC觸發(fā)封裝函數(shù)__svcKernelStart、實際內(nèi)核啟動函數(shù)svcRtxKernelStart 及中斷服務(wù)程序SVC_Handler 組成。其調(diào)用順序為osKernelStart→__svcKernelStart→觸發(fā)SVC中斷服務(wù)程序SVC_Handler→svcRtxKernelStart。

    (1)內(nèi)核啟動的實際執(zhí)行函數(shù)

    最終實現(xiàn)內(nèi)核啟動的是svcRtxKernelStart 函數(shù),其主要任務(wù)包括為線程的調(diào)度做好所有必要的準(zhǔn)備、創(chuàng)建必要的功能線程、設(shè)置時間嘀嗒、使能定時器中斷、線程調(diào)度、切換棧指針、修改內(nèi)核狀態(tài)等方面,其執(zhí)行流程如圖4所示。

    圖4 內(nèi)核啟動執(zhí)行流程

    (2)運行到主線程

    在mbedOS 啟動過程中,通過調(diào)用svcRtxKernel-Start函數(shù)來啟動內(nèi)核。在內(nèi)核啟動期間,先后建立了主線程main_thread(優(yōu)先級為24)、空閑線程osRtxInfo.thread.idle(優(yōu)先級為1)和定時器線程osRtxInfo.timer.thread(優(yōu)先級為40),這三個線程的狀態(tài)都為就緒態(tài),都被放到就緒隊列中,并按優(yōu)先級高低排列就緒,即定時器線程、主線程和空閑線程。當(dāng)svcRtxKernelStart 函數(shù)執(zhí)行完成后返回到SVC 中斷時,會在SVC 中斷中進(jìn)行上下文切換,此時由于有一個優(yōu)先級最高的線程(即定時器線程)處于激活態(tài),它的線程控制塊指針被放在了osRtxInfo.thread.run.next 中,當(dāng)前線程與下一線程是不同的(即osRtxInfo.thread.run.curr≠osRtxInfo.thread.run.next),這時就會進(jìn)行上下文切換,將定時器線程切換為當(dāng)前線程,當(dāng)從SVC 中斷返回時就會轉(zhuǎn)到定時器線程中執(zhí)行。在定時器線程osRtxInfo.timer.thread 啟動后,先創(chuàng)建一個消息隊列,再從消息隊列取消息,由于此時消息隊列是空的,定時器線程被阻塞。之后mbedOS會進(jìn)行線程調(diào)度,從就緒隊列中選擇優(yōu)先級最高的線程(此時為主線程main_thread),將其狀態(tài)設(shè)置為激活態(tài),準(zhǔn)備運行。至此,CPU的控制權(quán)轉(zhuǎn)交給主線程,接著將由主線程執(zhí)行函數(shù)app_init(定義在08_mbedOsPrgapp_init.cpp 文件中)負(fù)責(zé)創(chuàng)建用戶線程。圖5 展示了從定時器線程切換到主線程運行這一過程中的函數(shù)調(diào)用關(guān)系,從中可以看出最終轉(zhuǎn)到app_init函數(shù)執(zhí)行。

    4 存儲器使用情況分析

    在mbedOS 啟動過程中,涉及到中斷向量表、程序代碼、常量、變量、堆、棧等空間分配問題,下面先給出KL36 微控制器結(jié)構(gòu),然后分析mbedOS 啟動過程中Flash和RAM空間的使用情況。

    圖5 從定時器線程切換到主線程運行的函數(shù)調(diào)用關(guān)系

    4.1 KL36微控制器結(jié)構(gòu)

    KL36 微控制器包括ARM Cortex-M0+內(nèi)核、存儲器模塊、外設(shè)模塊及相關(guān)總線等,存儲器模塊與32位的高性能系統(tǒng)總線相連,外設(shè)模塊與32位外設(shè)總線相連,還提供擴(kuò)展總線連接其他外圍設(shè)備,其結(jié)構(gòu)如圖6所示。

    圖6 KL36微控制器結(jié)構(gòu)

    4.2 Flash使用情況分析

    KL36 片內(nèi) Flash 大 小 為 64 KB,地址范圍為0x00000000~0x0000FFFF,一般用來存放中斷向量、程序代碼、常數(shù)等。mbedOS啟動后Flash中各個區(qū)的地址范圍、大小及作用如表1 所示(表中數(shù)據(jù)采用十六進(jìn)制表示,下同)。

    4.3 RAM使用情況分析

    (1)mbedOS啟動后RAM使用情況分析

    KL36片內(nèi)RAM為靜態(tài)隨機(jī)存儲器SRAM,大小為8 KB,地址范圍為0x1FFFF800~0x200017FF,一般用來存儲全局變量、靜態(tài)變量、臨時變量(堆??臻g)等。該芯片??臻g的使用方向是從大地址向小地址方向進(jìn)行的。因此,??臻g的棧頂設(shè)置在RAM 地址的最大值+1處。而堆空間的使用方向是從小地址向大地址方向進(jìn)行的,這樣可以減少重疊錯誤。mbedOS啟動后RAM中各個段的地址范圍、大小及作用如表2所示。

    (2)各線程RAM分配情況分析

    在mbedOS 的啟動過程中,先后建立了主線程main_thread、空閑線程osRtxInfo.thread.idle、定時器線程osRtxInfo.timer.thread,并啟動定時器SysTick 中斷。在切換到主線程函數(shù)app_init 執(zhí)行之前,這三個線程的RAM 分配情況如表3 所示,在鏈表中的關(guān)系如圖7 所示。表中的成員名來源于線程控制塊結(jié)構(gòu)體和線程屬性結(jié)構(gòu)體,sp的值等于stack_mem+stack_size-64(這個64 Byte 的固定區(qū)域是用于在線程進(jìn)行上下文切換時,保存線程的上下文,即R0~R12、R14、R15、xPSR等16個寄存器),0x1FFFF8E0地址表示就緒隊列頭指針。

    當(dāng)定時器線程啟動之后就被阻塞,轉(zhuǎn)由主線程控制CPU 的使用權(quán),在主線程函數(shù)app_init 中分別建立紅燈線程thd_redlight、藍(lán)燈線程thd_bluelight 和綠燈線程thd_greenlight三個用戶線程,當(dāng)這三個用戶線程啟動完后,主線程進(jìn)入阻塞狀態(tài)。此時,系統(tǒng)中有四個線程,分別是空閑線程、紅燈線程、藍(lán)燈線程和綠燈線程,這四個線程的RAM分配如表4所示,在鏈表中的關(guān)系如圖8所示。

    表1 Flash中的各區(qū)地址范圍、大小及作用

    表2 RAM中的各段地址范圍、大小及作用

    表3 執(zhí)行app_init之前系統(tǒng)線程的RAM分配情況表

    圖7 系統(tǒng)線程之間的關(guān)系

    表4 執(zhí)行app_init之后線程的RAM分配情況表

    圖8 用戶線程之間的關(guān)系

    5 結(jié)束語

    mbedOS 的啟動過程是一個極其復(fù)雜的過程,涉及到操作系統(tǒng)運行時所需的??臻g、堆空間、線程控制塊等資源的初始化,系統(tǒng)時鐘的設(shè)置,就緒隊列、延時隊列和等待隊列等的管理,以及對線程的調(diào)度,涉及到函數(shù)調(diào)用關(guān)系也極為復(fù)雜。本文通過對SD-mbedOS工程框架啟動流程的分析,簡要地給出了芯片上電啟動過程,通過源碼、宏定義函數(shù)、SVC中斷、流程圖等方式來著重剖析mbedOS 的啟動過程,最后分析了mbedOS 的存儲器使用情況。通過剖析,有助于讀者快速理解mbedOS的啟動過程、調(diào)度機(jī)制和整體架構(gòu),為簡化啟動流程、優(yōu)化執(zhí)行過程、提升啟動速度等進(jìn)一步研究工作提供研究基礎(chǔ),也為mbedOS在不同微控制器上的移植提供了技術(shù)基礎(chǔ)。本文涉及到的工程可到蘇州大學(xué)嵌入式學(xué)習(xí)社區(qū)網(wǎng)站(http://sumcu.suda.edu.cn)的“教學(xué)培訓(xùn)-教學(xué)資料-mbedOS”位置,下載“SD_mbedOS_Start(KL36)”查看。

    猜你喜歡
    服務(wù)程序主線內(nèi)核
    萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
    基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
    強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
    基于C#的進(jìn)程守護(hù)程序的設(shè)計
    視聽(2020年3期)2020-06-11 14:28:18
    人物報道的多維思考、主線聚焦與故事呈現(xiàn)
    活力(2019年17期)2019-11-26 00:42:32
    更加突出主線 落實四個到位 推動主題教育取得實實在在成效
    基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
    Linux內(nèi)核mmap保護(hù)機(jī)制研究
    數(shù)字主線
    水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
    听说在线观看完整版免费高清| 国产免费又黄又爽又色| 少妇熟女aⅴ在线视频| 在线天堂最新版资源| 日本午夜av视频| 国产成人福利小说| 51国产日韩欧美| 高清在线视频一区二区三区 | www.色视频.com| 精品免费久久久久久久清纯| 欧美3d第一页| 伊人久久精品亚洲午夜| 色噜噜av男人的天堂激情| 中文字幕熟女人妻在线| 久久精品久久久久久久性| 午夜视频国产福利| 自拍偷自拍亚洲精品老妇| 有码 亚洲区| 亚洲最大成人手机在线| 亚洲人成网站高清观看| 熟女电影av网| 亚洲国产欧美在线一区| 人妻少妇偷人精品九色| 国产精品电影一区二区三区| 日韩av不卡免费在线播放| 亚洲精品乱久久久久久| 1024手机看黄色片| 国产欧美日韩精品一区二区| 国产三级中文精品| 中国国产av一级| 国产黄色视频一区二区在线观看 | 18禁在线播放成人免费| 亚洲精品日韩在线中文字幕| 国产高清国产精品国产三级 | 国产亚洲5aaaaa淫片| 国产精品三级大全| 51国产日韩欧美| a级一级毛片免费在线观看| 夜夜看夜夜爽夜夜摸| 色综合亚洲欧美另类图片| 日韩av在线大香蕉| 91精品国产九色| 国产伦在线观看视频一区| 亚洲精品亚洲一区二区| 成人漫画全彩无遮挡| 久久精品国产亚洲网站| 欧美+日韩+精品| 免费看a级黄色片| 久久久精品94久久精品| 久久久国产成人精品二区| 91狼人影院| 自拍偷自拍亚洲精品老妇| 成人漫画全彩无遮挡| 久久久久性生活片| 亚洲在久久综合| 久久久亚洲精品成人影院| 九色成人免费人妻av| 中文乱码字字幕精品一区二区三区 | 久久草成人影院| 国产午夜精品论理片| 日产精品乱码卡一卡2卡三| 久久久精品94久久精品| 国产精品伦人一区二区| 白带黄色成豆腐渣| 色吧在线观看| 亚洲国产精品成人久久小说| 亚洲精华国产精华液的使用体验| 亚洲国产精品sss在线观看| 日本免费a在线| 成人鲁丝片一二三区免费| 国产午夜精品论理片| 中文欧美无线码| 偷拍熟女少妇极品色| 久久精品国产亚洲网站| 欧美不卡视频在线免费观看| 高清日韩中文字幕在线| 最近手机中文字幕大全| 国产欧美日韩精品一区二区| 美女大奶头视频| 女人十人毛片免费观看3o分钟| 精品久久久久久成人av| 国产老妇女一区| 丰满人妻一区二区三区视频av| 国语对白做爰xxxⅹ性视频网站| 国产色爽女视频免费观看| 插阴视频在线观看视频| 免费一级毛片在线播放高清视频| 久久99蜜桃精品久久| 国产黄片视频在线免费观看| 午夜久久久久精精品| 国产极品精品免费视频能看的| 亚洲av成人av| 国产精品国产三级国产专区5o | 欧美xxxx黑人xx丫x性爽| 亚洲精品一区蜜桃| 国产精品综合久久久久久久免费| 少妇裸体淫交视频免费看高清| 久久久国产成人精品二区| 亚洲国产精品合色在线| 精品午夜福利在线看| 国产老妇伦熟女老妇高清| 亚洲丝袜综合中文字幕| 汤姆久久久久久久影院中文字幕 | 成人无遮挡网站| 最近最新中文字幕大全电影3| 欧美三级亚洲精品| 日韩强制内射视频| 久久久国产成人精品二区| 国内精品一区二区在线观看| 久久久久久伊人网av| 大香蕉97超碰在线| 在线播放无遮挡| 亚洲自拍偷在线| 亚洲av熟女| 别揉我奶头 嗯啊视频| 欧美区成人在线视频| 国产成年人精品一区二区| 熟女人妻精品中文字幕| 亚洲国产精品合色在线| 国产成人精品婷婷| 99热全是精品| 国产高清不卡午夜福利| 综合色av麻豆| 免费黄网站久久成人精品| 色网站视频免费| 丰满人妻一区二区三区视频av| 国产片特级美女逼逼视频| 小蜜桃在线观看免费完整版高清| 在线观看一区二区三区| 亚洲欧美日韩高清专用| 97超碰精品成人国产| www日本黄色视频网| 嫩草影院入口| 麻豆一二三区av精品| 国产午夜精品久久久久久一区二区三区| 日日摸夜夜添夜夜爱| 国产在线一区二区三区精 | 好男人视频免费观看在线| 男女那种视频在线观看| 自拍偷自拍亚洲精品老妇| 欧美激情在线99| 尤物成人国产欧美一区二区三区| 日韩精品青青久久久久久| 午夜亚洲福利在线播放| 久久久久久久亚洲中文字幕| 久久国产乱子免费精品| 99在线视频只有这里精品首页| 看片在线看免费视频| av播播在线观看一区| 91久久精品国产一区二区成人| 国产亚洲av片在线观看秒播厂 | 少妇人妻一区二区三区视频| 禁无遮挡网站| 欧美激情国产日韩精品一区| 亚洲精品乱久久久久久| 久久草成人影院| 99视频精品全部免费 在线| 久久久久久久午夜电影| 99久久人妻综合| 中文天堂在线官网| 亚洲国产精品成人综合色| 国产亚洲av片在线观看秒播厂 | 欧美bdsm另类| 欧美xxxx黑人xx丫x性爽| 一级毛片aaaaaa免费看小| 久久99蜜桃精品久久| 亚洲美女视频黄频| 人妻系列 视频| 网址你懂的国产日韩在线| 亚洲av成人av| 国产久久久一区二区三区| 亚洲中文字幕一区二区三区有码在线看| a级毛片免费高清观看在线播放| 99久国产av精品| 九九在线视频观看精品| 国产视频首页在线观看| 亚洲人成网站在线播| 日本黄大片高清| 亚洲av电影在线观看一区二区三区 | 欧美一区二区国产精品久久精品| 欧美成人免费av一区二区三区| 熟女电影av网| 国产黄片视频在线免费观看| 麻豆一二三区av精品| 久久精品国产自在天天线| 少妇猛男粗大的猛烈进出视频 | 麻豆乱淫一区二区| 你懂的网址亚洲精品在线观看 | 国产成人freesex在线| 国产成人免费观看mmmm| 国产视频内射| 精品国产一区二区三区久久久樱花 | 欧美色视频一区免费| 国产伦在线观看视频一区| 七月丁香在线播放| 欧美成人免费av一区二区三区| 亚洲第一区二区三区不卡| 中文字幕熟女人妻在线| 国产免费又黄又爽又色| 99久久精品热视频| 国产一级毛片在线| 午夜福利高清视频| 午夜老司机福利剧场| 麻豆一二三区av精品| 亚洲欧洲国产日韩| 日本黄色片子视频| ponron亚洲| 欧美zozozo另类| 夜夜爽夜夜爽视频| 日本wwww免费看| 久久精品夜色国产| 国产免费福利视频在线观看| 国产精品久久久久久av不卡| 高清视频免费观看一区二区 | 亚洲四区av| 特级一级黄色大片| 国产精品三级大全| 日本一本二区三区精品| 日本午夜av视频| av女优亚洲男人天堂| 日韩国内少妇激情av| 又粗又硬又长又爽又黄的视频| 免费看日本二区| 亚洲第一区二区三区不卡| 国产黄色小视频在线观看| 国产色爽女视频免费观看| 日韩欧美精品v在线| 2021少妇久久久久久久久久久| 中文资源天堂在线| 亚洲国产欧美人成| 国产色爽女视频免费观看| 深夜a级毛片| 1024手机看黄色片| 99视频精品全部免费 在线| 深爱激情五月婷婷| 成人美女网站在线观看视频| 国内揄拍国产精品人妻在线| 国产亚洲一区二区精品| 又粗又爽又猛毛片免费看| 一个人观看的视频www高清免费观看| 秋霞伦理黄片| 97超视频在线观看视频| 久久精品国产亚洲av天美| 91午夜精品亚洲一区二区三区| videossex国产| 亚洲欧美成人精品一区二区| 又粗又硬又长又爽又黄的视频| 久久久久久久国产电影| av播播在线观看一区| 国产老妇伦熟女老妇高清| 久久久久久久久久久免费av| 午夜亚洲福利在线播放| 亚洲欧美成人精品一区二区| 国产国拍精品亚洲av在线观看| 女的被弄到高潮叫床怎么办| 国产av在哪里看| 亚洲av免费高清在线观看| 国产毛片a区久久久久| 亚洲国产欧美人成| 大又大粗又爽又黄少妇毛片口| 热99在线观看视频| 国产精品伦人一区二区| 2021天堂中文幕一二区在线观| 日本一二三区视频观看| 欧美日韩综合久久久久久| 深爱激情五月婷婷| 97超碰精品成人国产| av又黄又爽大尺度在线免费看 | 波多野结衣高清无吗| av国产免费在线观看| 在现免费观看毛片| 插逼视频在线观看| av在线播放精品| 成人午夜精彩视频在线观看| 国产精品一区二区三区四区久久| 精品人妻一区二区三区麻豆| 国产不卡一卡二| 免费在线观看成人毛片| 寂寞人妻少妇视频99o| 久久韩国三级中文字幕| 久久久久国产网址| 午夜亚洲福利在线播放| 麻豆一二三区av精品| 日韩欧美三级三区| 国产综合懂色| 国产精品一及| 国产在视频线在精品| 免费观看a级毛片全部| 午夜激情福利司机影院| 成人毛片a级毛片在线播放| 亚洲五月天丁香| 亚洲,欧美,日韩| 九色成人免费人妻av| 中文字幕人妻熟人妻熟丝袜美| 国产 一区精品| 欧美xxxx性猛交bbbb| 国产精品久久久久久久电影| 亚洲国产最新在线播放| 国产白丝娇喘喷水9色精品| 偷拍熟女少妇极品色| 精品久久久久久久人妻蜜臀av| 97超视频在线观看视频| 久久久a久久爽久久v久久| 精品国产三级普通话版| 如何舔出高潮| 五月伊人婷婷丁香| 国产精品久久久久久久久免| 国产午夜精品久久久久久一区二区三区| 水蜜桃什么品种好| 一区二区三区高清视频在线| 国产精品久久久久久精品电影小说 | 欧美一区二区亚洲| 国产午夜精品一二区理论片| 男女国产视频网站| 欧美变态另类bdsm刘玥| 久久久久久国产a免费观看| 久久久a久久爽久久v久久| 婷婷六月久久综合丁香| 免费黄网站久久成人精品| 美女大奶头视频| 精品久久久久久电影网 | 亚州av有码| 日本三级黄在线观看| 亚洲成人中文字幕在线播放| 又爽又黄无遮挡网站| 2022亚洲国产成人精品| 青春草国产在线视频| 22中文网久久字幕| 人妻少妇偷人精品九色| 日韩人妻高清精品专区| 亚洲人与动物交配视频| 亚洲av中文av极速乱| 精品人妻熟女av久视频| 久久热精品热| 国产精品一区www在线观看| 国内精品美女久久久久久| 18禁裸乳无遮挡免费网站照片| 久久久久久久久久久免费av| 18禁在线无遮挡免费观看视频| 亚洲欧美日韩东京热| 亚洲av电影在线观看一区二区三区 | 亚洲欧美中文字幕日韩二区| 午夜福利网站1000一区二区三区| 国产精品久久久久久精品电影小说 | 久久99热这里只频精品6学生 | 日本猛色少妇xxxxx猛交久久| 成人美女网站在线观看视频| 久久人人爽人人爽人人片va| 久久精品熟女亚洲av麻豆精品 | 久久久精品欧美日韩精品| 国产淫语在线视频| 床上黄色一级片| 国产探花在线观看一区二区| 国产一区二区亚洲精品在线观看| 免费一级毛片在线播放高清视频| 久久久久久大精品| 亚洲精华国产精华液的使用体验| 深爱激情五月婷婷| 国产成人freesex在线| 一个人免费在线观看电影| 免费av观看视频| 国产精品三级大全| 国产又色又爽无遮挡免| 激情 狠狠 欧美| 欧美变态另类bdsm刘玥| 欧美性猛交╳xxx乱大交人| 91精品一卡2卡3卡4卡| 亚洲最大成人av| 赤兔流量卡办理| 色综合站精品国产| 国产又色又爽无遮挡免| 久久综合国产亚洲精品| 不卡视频在线观看欧美| 卡戴珊不雅视频在线播放| 欧美不卡视频在线免费观看| av国产久精品久网站免费入址| 老司机影院毛片| 亚洲国产最新在线播放| 国产一级毛片七仙女欲春2| 在现免费观看毛片| 中文字幕av成人在线电影| 欧美xxxx性猛交bbbb| 亚洲精品自拍成人| 女人被狂操c到高潮| 亚洲自拍偷在线| 免费看日本二区| 美女大奶头视频| 特大巨黑吊av在线直播| 精品国产三级普通话版| 国产亚洲av片在线观看秒播厂 | 国产高清国产精品国产三级 | 亚洲高清免费不卡视频| 国产熟女欧美一区二区| 一本一本综合久久| 日韩人妻高清精品专区| 日本黄色片子视频| 久久精品久久久久久噜噜老黄 | 中文精品一卡2卡3卡4更新| 国产成人a区在线观看| 亚洲国产欧美在线一区| 赤兔流量卡办理| 激情 狠狠 欧美| 国产伦在线观看视频一区| 日本爱情动作片www.在线观看| 国产成人freesex在线| 欧美激情在线99| 亚洲色图av天堂| 性插视频无遮挡在线免费观看| 国产白丝娇喘喷水9色精品| 一区二区三区免费毛片| 身体一侧抽搐| 最近2019中文字幕mv第一页| 亚洲精品,欧美精品| 麻豆av噜噜一区二区三区| 中文欧美无线码| 亚洲欧美精品综合久久99| 看非洲黑人一级黄片| 国产精品永久免费网站| av又黄又爽大尺度在线免费看 | 日日撸夜夜添| 精品久久久噜噜| 男女边吃奶边做爰视频| 国产亚洲精品av在线| 久久综合国产亚洲精品| 国产白丝娇喘喷水9色精品| 能在线免费看毛片的网站| 国产极品精品免费视频能看的| 国产人妻一区二区三区在| 男女啪啪激烈高潮av片| 国产一级毛片在线| 免费av毛片视频| 日本一本二区三区精品| 男女国产视频网站| 久久鲁丝午夜福利片| 免费搜索国产男女视频| 永久网站在线| 午夜激情福利司机影院| 精品久久久久久久久亚洲| 蜜桃久久精品国产亚洲av| 免费av毛片视频| 国产色婷婷99| 18禁在线播放成人免费| 亚洲av二区三区四区| 一区二区三区乱码不卡18| 日本黄大片高清| 三级毛片av免费| 精品人妻视频免费看| 国产91av在线免费观看| 亚洲精品色激情综合| 久久精品熟女亚洲av麻豆精品 | 好男人视频免费观看在线| 国产午夜福利久久久久久| 国产精品久久久久久精品电影小说 | 国语对白做爰xxxⅹ性视频网站| 身体一侧抽搐| 韩国高清视频一区二区三区| 久久这里只有精品中国| 99热精品在线国产| 18禁在线播放成人免费| 夫妻性生交免费视频一级片| 成人av在线播放网站| 亚洲精品久久久久久婷婷小说 | 日本五十路高清| 嘟嘟电影网在线观看| 亚洲av不卡在线观看| 成人三级黄色视频| 日韩欧美国产在线观看| 久久久久久久午夜电影| www.av在线官网国产| 久久久久九九精品影院| 男人舔奶头视频| 国产v大片淫在线免费观看| 亚洲综合色惰| 精品久久久久久久人妻蜜臀av| 搡老妇女老女人老熟妇| 精品不卡国产一区二区三区| 亚洲欧美一区二区三区国产| 久久99精品国语久久久| 久久久久久久久久久丰满| 少妇的逼好多水| 久久久久久久久久成人| av国产久精品久网站免费入址| 纵有疾风起免费观看全集完整版 | 国产精品久久电影中文字幕| 国产男人的电影天堂91| 中国美白少妇内射xxxbb| 亚洲aⅴ乱码一区二区在线播放| 久久精品91蜜桃| 精品无人区乱码1区二区| 国产不卡一卡二| 一级爰片在线观看| 国产精品精品国产色婷婷| 亚洲经典国产精华液单| 国产片特级美女逼逼视频| 欧美日韩在线观看h| 国产在视频线在精品| 青青草视频在线视频观看| 老司机影院毛片| 能在线免费观看的黄片| 国产一区二区在线观看日韩| 国产色婷婷99| 精品免费久久久久久久清纯| 天堂中文最新版在线下载 | 国产视频首页在线观看| 国产黄片美女视频| 亚洲欧美一区二区三区国产| 最新中文字幕久久久久| 日韩视频在线欧美| 超碰av人人做人人爽久久| 色综合色国产| 欧美色视频一区免费| 中文欧美无线码| 乱码一卡2卡4卡精品| 97在线视频观看| 国产精品国产高清国产av| 男人和女人高潮做爰伦理| 只有这里有精品99| 国产乱人偷精品视频| 成人特级av手机在线观看| 不卡视频在线观看欧美| 国产在视频线精品| 久久99蜜桃精品久久| 老师上课跳d突然被开到最大视频| 久久久久久大精品| 老司机影院毛片| 午夜激情欧美在线| 久久亚洲精品不卡| 精品久久久久久久人妻蜜臀av| 色播亚洲综合网| 三级国产精品欧美在线观看| 99久国产av精品| 欧美精品国产亚洲| 不卡视频在线观看欧美| 欧美色视频一区免费| 精华霜和精华液先用哪个| 天堂网av新在线| 亚洲av一区综合| av.在线天堂| 青春草国产在线视频| 99久久中文字幕三级久久日本| 欧美日本视频| 能在线免费看毛片的网站| 蜜臀久久99精品久久宅男| 久久精品国产鲁丝片午夜精品| 综合色av麻豆| 人体艺术视频欧美日本| 国产69精品久久久久777片| 国产精品一及| 亚洲,欧美,日韩| 日本欧美国产在线视频| 97人妻精品一区二区三区麻豆| 亚洲人成网站高清观看| 最近中文字幕高清免费大全6| h日本视频在线播放| 国产精华一区二区三区| 欧美一区二区精品小视频在线| 亚洲人与动物交配视频| 成人毛片a级毛片在线播放| 国产精品熟女久久久久浪| 九九在线视频观看精品| 日本欧美国产在线视频| 国产极品精品免费视频能看的| 乱系列少妇在线播放| 日韩一本色道免费dvd| 丰满少妇做爰视频| 夜夜看夜夜爽夜夜摸| av女优亚洲男人天堂| 午夜福利在线观看免费完整高清在| 日日摸夜夜添夜夜爱| 波野结衣二区三区在线| 亚洲综合精品二区| 天堂中文最新版在线下载 | 人人妻人人澡人人爽人人夜夜 | 美女xxoo啪啪120秒动态图| 国产精品99久久久久久久久| 69人妻影院| 欧美最新免费一区二区三区| 国产精品熟女久久久久浪| 老司机影院毛片| 99国产精品一区二区蜜桃av| 久久鲁丝午夜福利片| 欧美xxxx黑人xx丫x性爽| 少妇熟女aⅴ在线视频| av在线天堂中文字幕| 伊人久久精品亚洲午夜| 国产精品久久视频播放| 1000部很黄的大片| 日本黄色片子视频| 热99在线观看视频| 亚洲av成人精品一区久久| a级毛片免费高清观看在线播放| 欧美最新免费一区二区三区| 久久精品久久久久久久性| 长腿黑丝高跟| 黄色日韩在线| 国产精品国产三级国产专区5o | 久久久久久久久久成人| 国产真实乱freesex| 亚洲国产精品专区欧美| 国产午夜精品论理片| 亚洲国产色片| 亚洲av成人精品一二三区| 久久久久久久久中文| 插阴视频在线观看视频| 亚洲精品成人久久久久久| 赤兔流量卡办理| 毛片女人毛片| 国产一区二区在线观看日韩| 97超碰精品成人国产| 久久久色成人| 亚洲怡红院男人天堂| 久久久久久久久久成人| 精品人妻熟女av久视频| 我的女老师完整版在线观看| 亚洲国产精品合色在线|