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

    實(shí)時(shí)操作系統(tǒng)RT?Thread啟動流程剖析

    2022-06-14 06:33陳瑞雪王宜懷王庭琛
    現(xiàn)代電子技術(shù) 2022年12期
    關(guān)鍵詞:鏈表空閑主線

    陳瑞雪,王宜懷,王庭琛

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

    RT-Thread(Real-Time Thread)是一款嵌入式實(shí)時(shí)操作系統(tǒng)(Real-Time Operating System,RTOS),具有組件完整豐富、簡易開發(fā)、超低功耗等特點(diǎn),2006年由中國開源社區(qū)主導(dǎo)開發(fā),因其具有淺顯易懂且方便移植的特點(diǎn)而被廣泛應(yīng)用在農(nóng)業(yè)、車載、醫(yī)療等領(lǐng)域。但基于RTOS進(jìn)行RT-Thread嵌入式開發(fā)需要對其啟動過程有深刻的認(rèn)識,涉及到時(shí)間嘀嗒處理、堆空間初始化以及線程創(chuàng)建、調(diào)度機(jī)制等方面的設(shè)置。截至目前,有關(guān)操作系統(tǒng)的啟動研究集中在mbedOS操作系統(tǒng)、Windows操作系統(tǒng)以及MINIX3操作系統(tǒng)的啟動過程等方面,缺乏對RT-Thread的啟動剖析研究。因此,本文將利用Cortex-M4F內(nèi)核的STM32微控制器,基于STM32CubeIDE 1.0.2開發(fā)環(huán)境和SD-RT-Thread工程框架分析RT-Thread的啟動流程,對從芯片上電啟動運(yùn)行到entry函數(shù),最終轉(zhuǎn)入RT-Thread啟動的全過程進(jìn)行剖析,并與一些關(guān)鍵的代碼及注釋、流程圖、PendSV中斷服務(wù)程序相結(jié)合分析其實(shí)現(xiàn)原理。充分理解RTThread的啟動流程,不僅可以幫助讀者從微觀層面來理解RTOS的啟動過程,也有助于開發(fā)人員設(shè)計(jì)出相應(yīng)速度快、穩(wěn)定性強(qiáng)的嵌入式系統(tǒng)。

    1 RT?Thread工程框架啟動流程

    SD-RT-Thread工程框架的啟動過程由芯片上電啟動和RT-Thread操作系統(tǒng)啟動兩部分組成,如圖1所示。進(jìn)入應(yīng)用程序的入口點(diǎn)函數(shù)entry時(shí),調(diào)用啟動函數(shù)rtthread_startup(),系統(tǒng)控制權(quán)將轉(zhuǎn)移給RT-Thread,由它完成一系列前期準(zhǔn)備工作后實(shí)現(xiàn)線程調(diào)度。

    圖1 RT?Thread工程框架啟動流程

    芯片上電啟動始于調(diào)用啟動文件startup_stm32l431rctx.s,這個(gè)文件包含了中斷向量表及系統(tǒng)啟動代碼。在中斷向量表中,每個(gè)中斷向量號對應(yīng)一個(gè)中斷源,中斷向量號與中斷源是一一對應(yīng)的關(guān)系,按照中斷向量號的固定地址存放中斷服務(wù)程序入口地址(每個(gè)占用4 B)。本文采用的MCU其中段向量表的位置在存儲區(qū)0x0800 0000~0x0800 0190的這段地址范圍。

    最后,跳轉(zhuǎn)entry函數(shù),調(diào)用rtthread_startup()函數(shù)啟動操作系統(tǒng),并啟動初始線程來調(diào)用main函數(shù)。在main函數(shù)的內(nèi)部調(diào)用自啟動任務(wù)函數(shù)app_init來初始化外設(shè)模塊、初始化有關(guān)變量、使能中斷模塊等,創(chuàng)建并啟動其他用戶線程。

    2 RT?Thread啟動流程解析

    芯片上電后開始啟動,執(zhí)行到entry函數(shù)時(shí),實(shí)際調(diào)用總啟動函數(shù)rtthread_startup開始RT-Thread操作系統(tǒng)的啟動,其具體調(diào)用關(guān)系和執(zhí)行流程如圖2所示,主要完成內(nèi)核資源初始化、主線程和空閑線程的初始化以及調(diào)度器的啟動等工作。

    圖2 RT?Thread啟動過程總流程

    2.1 內(nèi)核資源初始化

    2.1.1 板級硬件資源初始化

    板級硬件初始化主要完成系統(tǒng)時(shí)鐘SysTick初始化和堆初始化。

    1)SysTick初始化

    SysTick是RT-Thread整個(gè)系統(tǒng)的時(shí)鐘基準(zhǔn),系統(tǒng)通過每次“嘀嗒”進(jìn)入中斷服務(wù)程序?qū)θ蝿?wù)狀態(tài)進(jìn)行管理。在進(jìn)行板級硬件初始化時(shí),首先調(diào)用_SysTick_Config()函數(shù)初始化系統(tǒng)時(shí)鐘基準(zhǔn)SysTick,該函數(shù)將SystemCoreClock/RT_TICK_PER_SECOND作為參數(shù)傳入。SystemCoreClock系統(tǒng)時(shí)鐘頻率為48 MHz,RT_TICK_PER_SECOND是宏定義設(shè)置的嘀嗒頻率,默認(rèn)為1 000 Hz,因此系統(tǒng)SysTick調(diào)度的頻率被設(shè)置為1 1 000 Hz=1 ms一次。

    //系統(tǒng)時(shí)間嘀嗒初始化

    _SysTick_Config SystemCoreClock/RT_TICK_PER_SECOND;

    2)堆初始化

    堆是用于存放臨時(shí)變量的區(qū)域,一般由程序員動態(tài)分配,最終也由程序員釋放。在內(nèi)存中,堆區(qū)的位置介于靜態(tài)區(qū)和棧區(qū)之間,使用時(shí)按照RAM區(qū)地址由低到高的順序申請。與其他操作系統(tǒng)不同之處在于,RTThread中系統(tǒng)使用的堆空間是自定義的一個(gè)靜態(tài)數(shù)組rt_heap,在內(nèi)存中屬于bss區(qū),大小由RT_HEAP_SIZE決定,目前將其宏定義為1 024,也可以根據(jù)工程需求修改(不能超過內(nèi)部靜態(tài)RAM區(qū)大?。?。RT-Thread啟動時(shí)會 通 過rt_heap_begin_get()、rt_heap_end_get()獲 取rt_heap的起始地址及結(jié)束地址,并將這兩個(gè)地址作為參數(shù)傳入rt_system_heap_init()函數(shù)對堆內(nèi)存進(jìn)行初始化。

    2.1.2 定時(shí)器初始化

    其他操作系統(tǒng)如mbed OS中,當(dāng)線程需要延時(shí)時(shí),系統(tǒng)會獲取當(dāng)前正在運(yùn)行的線程,阻塞該線程并將阻塞的線程根據(jù)延時(shí)時(shí)長插入到等待隊(duì)列或延時(shí)隊(duì)列中,最后獲取當(dāng)前優(yōu)先級最高的就緒態(tài)線程并切換就緒態(tài)線程為運(yùn)行態(tài)。RT-Thread內(nèi)部沒有設(shè)置等待隊(duì)列或延時(shí)隊(duì)列,而是通過定義一個(gè)雙向鏈表類型的全局系統(tǒng)定時(shí)器來類比延時(shí)隊(duì)列。在每個(gè)線程中內(nèi)置一個(gè)定時(shí)器,在線程需要延時(shí)時(shí),系統(tǒng)先掛起該線程并啟動內(nèi)置的定時(shí)器,將定時(shí)器按照線程延時(shí)時(shí)間長短插入到升序排列的rt_timer_list鏈表中。

    在初始化系統(tǒng)定時(shí)器列表時(shí),rt_timer_list里面的成員是一個(gè)雙向鏈表的根節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)均有指向下一個(gè)節(jié)點(diǎn)的指針next和指向前一個(gè)節(jié)點(diǎn)的指針prev,初始化時(shí)將這兩個(gè)指針都指向該節(jié)點(diǎn)。初始化好的系統(tǒng)定時(shí)器列表如圖3所示。

    圖3 初始化好的系統(tǒng)定時(shí)器列表

    2.1.3 調(diào)度器初始化

    RT-Thread中的調(diào)度器用于切換線程,即找到就緒列表中最高優(yōu)先級的線程并執(zhí)行。調(diào)度器初始化主要完成初始化整個(gè)線程就緒列表(rt_thread_priority_table)為空、初始化當(dāng)前線程的優(yōu)先級(rt_current_priority)為空閑線程的優(yōu)先級(31)、初始化當(dāng)前線程控制塊指針(rt_current_thread)為空和初始化線程就緒優(yōu)先級組(rt_thread_ready_priority_group)為0等內(nèi)容。

    rt_thread_priority_table是一個(gè)一維數(shù)組,大小默認(rèn)為32。

    rt_list_t rt_thread_priority_table[32];

    在該數(shù)組中,每個(gè)下標(biāo)表示與之相同的優(yōu)先級,比如位0表示優(yōu)先級0。當(dāng)線程就緒時(shí),根據(jù)優(yōu)先級插入到相同下標(biāo)的鏈表中。有三個(gè)線程就緒時(shí)的鏈表掛載情況如圖4所示。

    圖4 就緒列表的掛載情況

    初始時(shí),并未有任何就緒線程,故將就緒列表初始化為空??盏木€程就緒列表如圖5所示,每個(gè)索引初始化成對應(yīng)優(yōu)先級的雙鏈表根節(jié)點(diǎn)。

    圖5 空的線程就緒列表

    可以將線程就緒優(yōu)先級組rt_thread_priority_group看作是一個(gè)32位的整型數(shù),與rt_thread_priority_table相似,每一個(gè)位對應(yīng)一個(gè)優(yōu)先級,如圖6所示。若某線程準(zhǔn)備好,其優(yōu)先級為P(0≤P≤31),則 將rt_thread_priority_group的位置為1,再根據(jù)這一位在線程優(yōu)先級表的對應(yīng)位置插入線程,如此便可以快速地找到線程在線程優(yōu)先級表中插入和移除的位置。

    圖6 線程就緒優(yōu)先級組的位號與線程優(yōu)先級對應(yīng)的關(guān)系

    2.2 創(chuàng)建主線程和空閑線程

    定時(shí)器和調(diào)度器初始化完成之后,系統(tǒng)創(chuàng)建主線程和空閑線程,然后將它們加入就緒列表,便于調(diào)度器啟動后可以立即運(yùn)行主線程來執(zhí)行用戶程序,并確保CPU在無任務(wù)時(shí)通過空閑線程保持運(yùn)轉(zhuǎn)。

    2.2.1 創(chuàng)建主線程

    RT-Thread啟動時(shí),需要先創(chuàng)建一個(gè)主線程為其分配運(yùn)行所需的資源,設(shè)置入口函數(shù)、線程棧、優(yōu)先級和時(shí)間片等。在調(diào)度器啟動后,在入口函數(shù)中調(diào)用main()函數(shù)創(chuàng)建用戶線程,流程如圖7所示。當(dāng)所有用戶線程都成功創(chuàng)建后,終止主線程。

    圖7 主線程和用戶線程創(chuàng)建關(guān)系

    主線程的創(chuàng)建主要由函數(shù)rt_application_init()完成,整個(gè)過程由創(chuàng)建線程和啟動線程兩部分組成。函數(shù)調(diào)用關(guān)系如圖8所示。

    圖8 創(chuàng)建主線程的函數(shù)調(diào)用關(guān)系

    1)創(chuàng)建主線程

    受嵌入式環(huán)境下的低資源條件限制,主線程在執(zhí)行完必要的任務(wù)后可以回收其資源,因此系統(tǒng)調(diào)用rt_thread_create()函數(shù)來創(chuàng)建主線程。該函數(shù)創(chuàng)建線程采用動態(tài)分配內(nèi)存的方式,即該線程控制塊(TCB)和線程棧的內(nèi)存都從堆內(nèi)存中申請分配,若堆內(nèi)存不足,內(nèi)存分配失敗,則整個(gè)線程創(chuàng)建失敗。創(chuàng)建成功后若線程不再運(yùn)行也可主動刪除線程來釋放對應(yīng)的內(nèi)存資源。

    創(chuàng)建主線程的過程由內(nèi)核對象分配rt_object_allocate()、內(nèi)核內(nèi)存分配RT_KERNEL_MALLOC()、線程實(shí)際初始化_rt_thread_init等函數(shù)構(gòu)成。rt_object_allocate()從堆空間中動態(tài)申請分配TCB并進(jìn)行初始化;RT_KERNEL_MALLOC()從堆空間中動態(tài)申請空間用于線程棧;_rt_thread_init()中初始化TCB各項(xiàng)屬性,包括線程的入口函數(shù)和參數(shù)、線程棧的地址、大小和sp指針以及線程內(nèi)置定時(shí)器等。

    2)啟動主線程

    線程創(chuàng)建并初始化結(jié)束后,此時(shí)啟動主線程并不意味著真正啟動運(yùn)行主線程,而是為了調(diào)度器的調(diào)度運(yùn)行進(jìn)行相應(yīng)的初始化,完成的主要工作有:設(shè)置線程當(dāng)前優(yōu)先級及掩碼值;將線程插入就緒列表;判斷是否進(jìn)行一次調(diào)度。由于此時(shí)還處于RT-Thread啟動過程中,調(diào)度器還未啟動,所以當(dāng)前線程不進(jìn)行調(diào)度。

    2.2.2 創(chuàng)建空閑線程

    空閑線程的創(chuàng)建由函數(shù)rt_thread_idle_init()完成,與創(chuàng)建主線程相似的是都先創(chuàng)建并初始化線程,然后調(diào)用相同的rt_thread_startup()函數(shù)啟動線程,不同之處在于創(chuàng)建線程的方式。創(chuàng)建空閑線程采用的是創(chuàng)建靜態(tài)線程對象的方式,實(shí)際調(diào)用的函數(shù)是rt_thread_init()。該方式適用于創(chuàng)建長期的線程對象,其TCB和線程棧的空間在編譯之前就已經(jīng)確定,申請后不可釋放。這是由于空閑線程的主要任務(wù)是在內(nèi)核無用戶線程時(shí)被內(nèi)核執(zhí)行,使CPU保持運(yùn)行狀態(tài),同時(shí)對終止的無效線程進(jìn)行資源回收的工作,它始終存在于系統(tǒng)內(nèi)。

    2.3 啟動調(diào)度器

    主線程和空閑線程創(chuàng)建完成后,啟動調(diào)度器切換線程,主要實(shí)現(xiàn)的功能有:首先找到系統(tǒng)當(dāng)前就緒列表中最高優(yōu)先級的線程,然后通過rt_hw_context_switch_to()函數(shù)實(shí)現(xiàn)第一次的線程切換。此時(shí),線程就緒隊(duì)列中有主線程(優(yōu)先級為10)和空閑線程(優(yōu)先級為31),因此從線程就緒隊(duì)列中選擇主線程開始運(yùn)行。

    2.3.1 第一次線程切換函數(shù)

    第一次線程切換函數(shù)rt_hw_context_switch_to()采用匯編編程,其功能是為觸發(fā)PendSV進(jìn)行第一次線程切換做前期準(zhǔn)備工作,內(nèi)部用到的一些變量定義如下所示,其功能流程如圖9所示。

    圖9 rt_hw_context_switch_to()函數(shù)執(zhí)行流程

    該函數(shù)執(zhí)行結(jié)束后,PendSV中斷立即被觸發(fā),執(zhí)行中斷處理程序,PendSV_Handler進(jìn)行線程的真正切換。

    2.3.2 PendSV中斷服務(wù)程序

    PendSV中斷服務(wù)程序主要分為上文保存和下文切換兩部分,該函數(shù)執(zhí)行流程如圖10所示。首先獲取中斷標(biāo)志位并清零,然后判斷rt_interrupt_from_thread的值是否為0。如果是則表示系統(tǒng)進(jìn)行第一次線程切換,不用做上文保存的工作,直接執(zhí)行下文切換;如果不為0則需要先保存上文,然后再切換到下文。下文切換要做的工作主要有:加載下一個(gè)即將運(yùn)行的線程棧的內(nèi)容到CPU寄存器,更改PC指針和PSP指針,從而實(shí)現(xiàn)程序的跳轉(zhuǎn)。

    圖10 PendSV_Handler中斷處理程序執(zhí)行流程

    3 存儲器使用情況分析

    3.1 FLASH使用情況分析

    FLASH區(qū)一般用于存放中斷向量表、程序代碼和常數(shù)等。本文選用STM32L431芯片,片內(nèi)FLASH地址范圍為0x0800_0000~0x0803_FFFF,共256 KB。其中前256 B為中斷向量表,共有98個(gè)中斷向量。RT-Thread啟動后FLASH中各區(qū)的分配情況如表1所示。

    表1 FLASH中的各區(qū)分配情況

    3.2 RAM使用情況分析

    3.2.1 RT-Thread啟動后RAM使用情況分析

    靜態(tài)隨機(jī)存儲器SRAM是RAM的一種,一般用來存儲靜態(tài)變量、臨時(shí)變量、全局變量等。在STM32L431芯片中,SRAM的大小為64 KB,地址范圍為0x2000_0000~0x2001_0000。該芯片棧空間是按照地址從高向低的方向生長的,而堆空間的生長方向與之相反,以此減少??臻g和堆空間的重疊錯(cuò)誤。RT-Thread啟動后RAM中各個(gè)段分配情況如表2所示。特別要注意的是,heap段是根據(jù)定義的靜態(tài)數(shù)組rt_heap來決定的,因此在編譯后rt_heap也屬于bss段;同時(shí)stack段未有相關(guān)的初始操作,默認(rèn)從RAM地址的最大值+1當(dāng)作棧頂向下使用。

    表2 RAM中的各段分配情況

    3.2.2 各線程RAM分配情況分析

    RT-Thread啟動時(shí),系統(tǒng)先后建立了主線程main、空閑線程idle,這兩個(gè)線程的RAM分配情況如表3所示。表中的成員名在線程控制塊結(jié)構(gòu)體中定義,數(shù)據(jù)采用十六進(jìn)制表示,可以通過對程序進(jìn)行單步調(diào)試獲得,這些數(shù)據(jù)會因每次程序的運(yùn)行而有所變化;sp的值等于stack_addr+stack_size-68(棧幀大小為68,其中前64 B為固定區(qū)域,用于保存線程上下文,即在線程切換上下文時(shí)保存R0~R12、R14、R15、xPSR等16個(gè)寄存器的值,還有4 B為未使用到的FPU標(biāo)志位flag)。

    表3 系統(tǒng)線程的RAM分配情況

    在主線程函數(shù)app_init中建立3個(gè)用戶線程:綠燈線程thd_greenlight、紅燈線程thd_redlight和藍(lán)燈線程thd_bluelight。主線程在這三個(gè)用戶線程啟動完后進(jìn)入終止?fàn)顟B(tài),所以此時(shí)系統(tǒng)中實(shí)際存在的是空閑線程、綠燈線程、紅燈線程和藍(lán)燈線程這四個(gè)線程,它們對應(yīng)的RAM分配如表4所示。

    表4 主線程終止后線程的RAM分配情況

    RT-Thread啟動后,空閑線程、綠燈線程、紅燈線程和藍(lán)燈線程這四個(gè)線程之間的指向關(guān)系如圖11所示。在RT-Thread中就緒列表的每個(gè)優(yōu)先級對應(yīng)一條雙向鏈表,即31優(yōu)先級的空閑線程處于一個(gè)鏈表,10優(yōu)先級的紅燈線程、藍(lán)燈線程和綠燈線程處于一個(gè)鏈表。此處以10優(yōu)先級對應(yīng)的鏈表為例,可在最先啟動的紅燈線程中輸出就緒列表中10優(yōu)先級的鏈表狀況,輸出結(jié)果為:

    圖11 就緒列表中用戶線程之間的關(guān)系

    其中0x2000_1368地址為就緒列表中10優(yōu)先級對應(yīng)的雙鏈表根節(jié)點(diǎn),即0x2000_18C0、0x2000_1B40、0x2000_1640分別對應(yīng)著綠燈線程、紅燈線程和藍(lán)燈線程。由于線程是通過自身控制塊的tlist節(jié)點(diǎn)成員接入就緒列表中,故與TCB地址有著0x14的偏移,以紅燈線程為例,即0x2000_1B40=0x2000_1B2C+0x14。

    4 結(jié) 語

    本文通過對SD-RT-Thread工程框架的啟動流程進(jìn)行分析,簡要地給出芯片上電啟動過程,結(jié)合相關(guān)源碼及注釋、流程圖、表格等重點(diǎn)分析RT-Thread的啟動過程;詳細(xì)分析從板級資源到調(diào)度器的初始化過程、主線程和空閑線程的創(chuàng)建過程以及調(diào)度器的啟動過程;最后分析STM32L431的存儲器使用情況,并深入研究在RTThread啟動后RAM的使用情況以及各線程的分配情況。通過剖析,讀者可以快速理解RT-Thread的啟動過程,了解內(nèi)部工作機(jī)制,同時(shí)也可為RT-Thread在更多的領(lǐng)域應(yīng)用起到推動作用。

    猜你喜歡
    鏈表空閑主線
    恩賜
    人物報(bào)道的多維思考、主線聚焦與故事呈現(xiàn)
    “鳥”字謎
    更加突出主線 落實(shí)四個(gè)到位 推動主題教育取得實(shí)實(shí)在在成效
    基于二進(jìn)制鏈表的粗糙集屬性約簡
    跟麥咭學(xué)編程
    基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗(yàn)證機(jī)制
    彪悍的“寵”生,不需要解釋
    數(shù)字主線
    WLAN和LTE交通規(guī)則
    国产黄色视频一区二区在线观看| 亚洲国产日韩一区二区| 免费黄色在线免费观看| 亚洲av电影在线观看一区二区三区| 欧美最新免费一区二区三区| 十八禁网站网址无遮挡| 亚洲图色成人| 国产成人av激情在线播放| 国产男女内射视频| 电影成人av| 大陆偷拍与自拍| 美女xxoo啪啪120秒动态图| 午夜福利在线免费观看网站| 丝袜喷水一区| 欧美亚洲日本最大视频资源| 日韩欧美精品免费久久| 搡女人真爽免费视频火全软件| 国产激情久久老熟女| 婷婷成人精品国产| 国产女主播在线喷水免费视频网站| 亚洲av综合色区一区| 综合色丁香网| 久久久精品国产亚洲av高清涩受| 亚洲精品自拍成人| 你懂的网址亚洲精品在线观看| 看免费成人av毛片| 九草在线视频观看| 男女午夜视频在线观看| 久久精品夜色国产| 观看美女的网站| 国产精品秋霞免费鲁丝片| 亚洲精品aⅴ在线观看| 国产高清不卡午夜福利| 亚洲四区av| 最近中文字幕高清免费大全6| 欧美精品国产亚洲| 亚洲伊人久久精品综合| 欧美日韩精品成人综合77777| 一级,二级,三级黄色视频| av.在线天堂| 老司机影院毛片| 国产无遮挡羞羞视频在线观看| 大片电影免费在线观看免费| 黑丝袜美女国产一区| 天天影视国产精品| 少妇熟女欧美另类| 又粗又硬又长又爽又黄的视频| 成人国产麻豆网| 在线看a的网站| 成人免费观看视频高清| 国产一区二区三区综合在线观看| 国产不卡av网站在线观看| 美女午夜性视频免费| tube8黄色片| 国产精品久久久av美女十八| 国产日韩欧美亚洲二区| 亚洲国产欧美网| 亚洲熟女精品中文字幕| 免费人妻精品一区二区三区视频| 国产成人精品福利久久| 精品亚洲成国产av| 亚洲五月色婷婷综合| 天天躁日日躁夜夜躁夜夜| 中国国产av一级| 日韩大片免费观看网站| 一区二区三区精品91| 人体艺术视频欧美日本| 国产伦理片在线播放av一区| 国产日韩欧美在线精品| 女的被弄到高潮叫床怎么办| 狂野欧美激情性bbbbbb| 亚洲av免费高清在线观看| videossex国产| 毛片一级片免费看久久久久| 大码成人一级视频| 成人国语在线视频| 母亲3免费完整高清在线观看 | 亚洲三区欧美一区| 色婷婷久久久亚洲欧美| 热99国产精品久久久久久7| 国产在视频线精品| 国产 精品1| 久久综合国产亚洲精品| 高清av免费在线| 成人国产av品久久久| 免费人妻精品一区二区三区视频| 大香蕉久久网| 80岁老熟妇乱子伦牲交| h视频一区二区三区| 久久久精品免费免费高清| 亚洲欧美色中文字幕在线| 97在线人人人人妻| 伊人久久国产一区二区| 亚洲精品一区蜜桃| 一区二区日韩欧美中文字幕| 曰老女人黄片| 成人18禁高潮啪啪吃奶动态图| 国产97色在线日韩免费| 亚洲av欧美aⅴ国产| 赤兔流量卡办理| 青春草国产在线视频| 在线观看www视频免费| 丝袜美足系列| 久久精品国产综合久久久| 亚洲婷婷狠狠爱综合网| 国产成人a∨麻豆精品| 精品少妇内射三级| av国产精品久久久久影院| 黄色怎么调成土黄色| 又粗又硬又长又爽又黄的视频| 日本猛色少妇xxxxx猛交久久| 免费高清在线观看视频在线观看| 黄频高清免费视频| 成年女人在线观看亚洲视频| 久久久久久人妻| 国产精品国产三级国产专区5o| 在现免费观看毛片| 国产精品久久久久久av不卡| 久久青草综合色| 久久影院123| 中国国产av一级| 亚洲av国产av综合av卡| 久久久国产精品麻豆| 亚洲精品久久成人aⅴ小说| av在线app专区| 在线亚洲精品国产二区图片欧美| 日韩一区二区三区影片| 一边摸一边做爽爽视频免费| 亚洲欧美日韩另类电影网站| 少妇 在线观看| 妹子高潮喷水视频| 男人舔女人的私密视频| 如何舔出高潮| 美女国产高潮福利片在线看| 2021少妇久久久久久久久久久| 久久 成人 亚洲| 国产免费一区二区三区四区乱码| 嫩草影院入口| 免费观看性生交大片5| 国产成人免费无遮挡视频| 亚洲成人手机| 亚洲欧美清纯卡通| 国产片特级美女逼逼视频| 秋霞在线观看毛片| 飞空精品影院首页| 久久精品国产a三级三级三级| 久热这里只有精品99| 欧美亚洲日本最大视频资源| 我要看黄色一级片免费的| 人人妻人人添人人爽欧美一区卜| 成人国语在线视频| 在线观看免费日韩欧美大片| 性高湖久久久久久久久免费观看| 大陆偷拍与自拍| 久久久久久久久久人人人人人人| 欧美日韩综合久久久久久| 成人毛片a级毛片在线播放| 亚洲一区二区三区欧美精品| 国产熟女午夜一区二区三区| 欧美bdsm另类| 可以免费在线观看a视频的电影网站 | 亚洲av综合色区一区| 热99国产精品久久久久久7| 免费观看性生交大片5| 久久99热这里只频精品6学生| xxxhd国产人妻xxx| 在线观看美女被高潮喷水网站| 久久影院123| 青青草视频在线视频观看| 我的亚洲天堂| 中文字幕av电影在线播放| av国产久精品久网站免费入址| 欧美人与性动交α欧美软件| 国产精品久久久久久精品电影小说| 国产成人欧美| 99re6热这里在线精品视频| 最近最新中文字幕大全免费视频 | www.熟女人妻精品国产| 黑人猛操日本美女一级片| 国产片内射在线| 久久久久人妻精品一区果冻| 免费观看性生交大片5| 99久国产av精品国产电影| 国产精品国产三级国产专区5o| 天天影视国产精品| 伦精品一区二区三区| 国产午夜精品一二区理论片| 亚洲欧美成人精品一区二区| 日韩,欧美,国产一区二区三区| 老汉色av国产亚洲站长工具| 久久精品国产亚洲av高清一级| 久久99一区二区三区| 亚洲精品自拍成人| 美女国产视频在线观看| 制服人妻中文乱码| 久久国产亚洲av麻豆专区| 亚洲欧美清纯卡通| 啦啦啦啦在线视频资源| 国产亚洲av片在线观看秒播厂| 18禁国产床啪视频网站| 亚洲欧美精品自产自拍| www.av在线官网国产| 人成视频在线观看免费观看| 国产白丝娇喘喷水9色精品| 国产成人精品在线电影| 精品人妻熟女毛片av久久网站| 成人午夜精彩视频在线观看| 国产毛片在线视频| 热99久久久久精品小说推荐| 不卡视频在线观看欧美| 叶爱在线成人免费视频播放| 在线观看免费日韩欧美大片| 七月丁香在线播放| 久久综合国产亚洲精品| 日韩免费高清中文字幕av| 一边摸一边做爽爽视频免费| 国产亚洲精品第一综合不卡| 在线观看免费视频网站a站| 日本-黄色视频高清免费观看| 久久精品国产自在天天线| 九九爱精品视频在线观看| 丝瓜视频免费看黄片| 亚洲国产看品久久| 尾随美女入室| 久久国产精品大桥未久av| 纵有疾风起免费观看全集完整版| 在线观看免费日韩欧美大片| 日本wwww免费看| 午夜久久久在线观看| 青青草视频在线视频观看| 亚洲国产最新在线播放| 九色亚洲精品在线播放| 国产在线一区二区三区精| 伦精品一区二区三区| 精品国产乱码久久久久久男人| 国产精品无大码| 国产成人精品婷婷| 色播在线永久视频| 99热全是精品| 人妻 亚洲 视频| 久久精品人人爽人人爽视色| 亚洲人成电影观看| 各种免费的搞黄视频| 免费观看性生交大片5| 一级a爱视频在线免费观看| 韩国精品一区二区三区| 久久久欧美国产精品| 肉色欧美久久久久久久蜜桃| 欧美日韩一级在线毛片| 国产亚洲最大av| 亚洲欧美一区二区三区久久| 亚洲精品成人av观看孕妇| 巨乳人妻的诱惑在线观看| 国产精品.久久久| 久久精品亚洲av国产电影网| 日韩中文字幕视频在线看片| 国产人伦9x9x在线观看 | 女人被躁到高潮嗷嗷叫费观| 久久久a久久爽久久v久久| 亚洲国产精品999| 国产高清不卡午夜福利| 亚洲av中文av极速乱| 免费在线观看黄色视频的| 夫妻午夜视频| 午夜老司机福利剧场| 熟妇人妻不卡中文字幕| 欧美变态另类bdsm刘玥| 精品国产乱码久久久久久男人| 观看av在线不卡| 熟女少妇亚洲综合色aaa.| 丰满少妇做爰视频| 97在线人人人人妻| 伦理电影大哥的女人| 男女啪啪激烈高潮av片| 精品一区在线观看国产| 亚洲精品第二区| 欧美人与善性xxx| 午夜福利在线观看免费完整高清在| 男女边摸边吃奶| 亚洲欧美成人综合另类久久久| 一级毛片 在线播放| 久久热在线av| 五月天丁香电影| 如何舔出高潮| 两个人免费观看高清视频| 亚洲精品视频女| 亚洲精品久久午夜乱码| 亚洲国产成人一精品久久久| 国产淫语在线视频| 看十八女毛片水多多多| 1024视频免费在线观看| 国产成人91sexporn| 在线观看美女被高潮喷水网站| 日韩免费高清中文字幕av| 亚洲精品第二区| 欧美精品高潮呻吟av久久| 国产一区二区激情短视频 | 性高湖久久久久久久久免费观看| 精品人妻偷拍中文字幕| 国产精品秋霞免费鲁丝片| 国产精品女同一区二区软件| 午夜激情av网站| 91成人精品电影| 国产成人精品福利久久| 欧美亚洲 丝袜 人妻 在线| 各种免费的搞黄视频| 精品少妇内射三级| 超碰97精品在线观看| 成人午夜精彩视频在线观看| 国产熟女欧美一区二区| 亚洲激情五月婷婷啪啪| 国产精品人妻久久久影院| 亚洲成人手机| 久热久热在线精品观看| 国产又色又爽无遮挡免| 亚洲av日韩在线播放| 搡女人真爽免费视频火全软件| 观看美女的网站| 免费黄色在线免费观看| 亚洲三级黄色毛片| 成人亚洲欧美一区二区av| 久久精品国产自在天天线| 黄色怎么调成土黄色| av女优亚洲男人天堂| 新久久久久国产一级毛片| 岛国毛片在线播放| 国产黄频视频在线观看| 制服人妻中文乱码| a级毛片黄视频| 老女人水多毛片| 波野结衣二区三区在线| av福利片在线| 2018国产大陆天天弄谢| 91精品伊人久久大香线蕉| 一区二区三区激情视频| 考比视频在线观看| 婷婷色综合www| 老熟女久久久| 女性生殖器流出的白浆| 91aial.com中文字幕在线观看| 伦理电影免费视频| 欧美日韩av久久| 国产精品久久久av美女十八| 久久国产精品大桥未久av| 超色免费av| 免费av中文字幕在线| 9热在线视频观看99| 精品国产一区二区三区四区第35| 精品国产乱码久久久久久男人| 一本—道久久a久久精品蜜桃钙片| 午夜日韩欧美国产| 欧美成人午夜免费资源| 日本黄色日本黄色录像| 久久99蜜桃精品久久| 91久久精品国产一区二区三区| 9热在线视频观看99| 男人添女人高潮全过程视频| 寂寞人妻少妇视频99o| 七月丁香在线播放| 亚洲国产最新在线播放| 老女人水多毛片| 你懂的网址亚洲精品在线观看| 国产成人免费观看mmmm| 咕卡用的链子| 久久久a久久爽久久v久久| 99精国产麻豆久久婷婷| 亚洲av男天堂| videossex国产| 亚洲av在线观看美女高潮| 久久女婷五月综合色啪小说| 免费播放大片免费观看视频在线观看| 久久韩国三级中文字幕| 亚洲美女搞黄在线观看| 欧美最新免费一区二区三区| 亚洲欧洲国产日韩| 王馨瑶露胸无遮挡在线观看| 国产乱人偷精品视频| 色网站视频免费| 日韩大片免费观看网站| 亚洲四区av| 成年动漫av网址| 男女啪啪激烈高潮av片| 久久ye,这里只有精品| 日韩中文字幕欧美一区二区 | 亚洲精品乱久久久久久| 欧美国产精品va在线观看不卡| 亚洲视频免费观看视频| 黄片无遮挡物在线观看| 久久青草综合色| 九九爱精品视频在线观看| 老司机影院毛片| 亚洲精品乱久久久久久| 国产 精品1| 久久毛片免费看一区二区三区| 亚洲av国产av综合av卡| 9色porny在线观看| 青春草国产在线视频| 99re6热这里在线精品视频| 久久久久精品久久久久真实原创| 91精品国产国语对白视频| 女人高潮潮喷娇喘18禁视频| 欧美日韩综合久久久久久| av又黄又爽大尺度在线免费看| 国产片特级美女逼逼视频| 亚洲精华国产精华液的使用体验| 在线观看免费日韩欧美大片| 午夜免费鲁丝| 九九爱精品视频在线观看| 一级毛片黄色毛片免费观看视频| 欧美精品国产亚洲| 日韩制服丝袜自拍偷拍| 亚洲av欧美aⅴ国产| www.熟女人妻精品国产| 亚洲精品在线美女| 久久久久久久久久久免费av| 日韩大片免费观看网站| 美女国产高潮福利片在线看| 亚洲视频免费观看视频| 亚洲欧洲国产日韩| 我要看黄色一级片免费的| 久久精品aⅴ一区二区三区四区 | 自拍欧美九色日韩亚洲蝌蚪91| 下体分泌物呈黄色| 欧美日本中文国产一区发布| 久久这里只有精品19| 亚洲四区av| 国产不卡av网站在线观看| 久久99蜜桃精品久久| 国产成人a∨麻豆精品| tube8黄色片| 最新的欧美精品一区二区| av在线播放精品| 天天影视国产精品| 只有这里有精品99| 亚洲欧美一区二区三区久久| 国产淫语在线视频| 免费人妻精品一区二区三区视频| 国产成人a∨麻豆精品| 免费少妇av软件| 欧美日韩成人在线一区二区| 国产免费视频播放在线视频| 免费少妇av软件| 两性夫妻黄色片| 性色avwww在线观看| 午夜免费观看性视频| 制服诱惑二区| 一本大道久久a久久精品| 精品人妻在线不人妻| 看非洲黑人一级黄片| 99久久精品国产国产毛片| 18禁国产床啪视频网站| 极品人妻少妇av视频| 欧美精品亚洲一区二区| 不卡视频在线观看欧美| 18禁裸乳无遮挡动漫免费视频| 亚洲三区欧美一区| 99国产综合亚洲精品| 丰满乱子伦码专区| 亚洲国产欧美日韩在线播放| 免费观看在线日韩| 国产激情久久老熟女| 日韩 亚洲 欧美在线| 日韩熟女老妇一区二区性免费视频| 精品午夜福利在线看| 久久久久久免费高清国产稀缺| 国产av精品麻豆| av一本久久久久| 亚洲伊人色综图| 这个男人来自地球电影免费观看 | 精品久久蜜臀av无| 日韩中文字幕欧美一区二区 | 我的亚洲天堂| 在线观看一区二区三区激情| 国产一区二区三区av在线| 人妻人人澡人人爽人人| 宅男免费午夜| 亚洲综合色惰| 天堂俺去俺来也www色官网| 叶爱在线成人免费视频播放| 亚洲精品久久午夜乱码| 亚洲第一av免费看| 日韩伦理黄色片| 水蜜桃什么品种好| 五月开心婷婷网| 国产亚洲午夜精品一区二区久久| 中文字幕亚洲精品专区| 男女啪啪激烈高潮av片| av国产久精品久网站免费入址| 亚洲在久久综合| 精品久久蜜臀av无| 成人二区视频| 人成视频在线观看免费观看| 卡戴珊不雅视频在线播放| 少妇被粗大的猛进出69影院| 日韩一卡2卡3卡4卡2021年| 国产精品国产三级国产专区5o| 国产有黄有色有爽视频| 久久99热这里只频精品6学生| 亚洲三级黄色毛片| 少妇人妻 视频| 人妻系列 视频| 亚洲第一区二区三区不卡| 日本爱情动作片www.在线观看| 成年动漫av网址| 五月伊人婷婷丁香| 一级a爱视频在线免费观看| 99精国产麻豆久久婷婷| 天美传媒精品一区二区| 人妻 亚洲 视频| 大片电影免费在线观看免费| 欧美精品高潮呻吟av久久| 国产极品粉嫩免费观看在线| 少妇熟女欧美另类| 国产成人精品久久久久久| 男男h啪啪无遮挡| 精品一品国产午夜福利视频| 国产麻豆69| 在线观看www视频免费| 国产成人精品无人区| 卡戴珊不雅视频在线播放| 精品人妻在线不人妻| 国产97色在线日韩免费| 国产成人欧美| 亚洲av国产av综合av卡| 又黄又粗又硬又大视频| 在线精品无人区一区二区三| 夫妻午夜视频| 波多野结衣av一区二区av| 久久精品久久久久久噜噜老黄| 人妻系列 视频| 永久免费av网站大全| 日韩欧美精品免费久久| 久久鲁丝午夜福利片| 久久久久人妻精品一区果冻| 日韩视频在线欧美| 国产成人91sexporn| av在线老鸭窝| 午夜激情久久久久久久| 欧美97在线视频| 男女边吃奶边做爰视频| 天天影视国产精品| 国产成人91sexporn| 老汉色∧v一级毛片| 精品福利永久在线观看| 在线 av 中文字幕| 大话2 男鬼变身卡| 国产老妇伦熟女老妇高清| 一级片免费观看大全| 亚洲一区中文字幕在线| 亚洲一码二码三码区别大吗| 国产 精品1| 精品人妻偷拍中文字幕| 性色avwww在线观看| 国产欧美亚洲国产| 亚洲欧美一区二区三区久久| 成人亚洲欧美一区二区av| 丰满少妇做爰视频| 黄频高清免费视频| 最近的中文字幕免费完整| 天堂中文最新版在线下载| 国产成人aa在线观看| 一区二区三区精品91| 香蕉精品网在线| av福利片在线| 天天躁狠狠躁夜夜躁狠狠躁| 男女边吃奶边做爰视频| 成年女人在线观看亚洲视频| 成人影院久久| www.av在线官网国产| 一级毛片我不卡| 满18在线观看网站| 久久久久国产精品人妻一区二区| 亚洲一区二区三区欧美精品| 久久久久国产精品人妻一区二区| 中文天堂在线官网| 少妇熟女欧美另类| 日韩一本色道免费dvd| 久久人人爽人人片av| 久久免费观看电影| 少妇人妻精品综合一区二区| 亚洲一区二区三区欧美精品| 亚洲欧美一区二区三区国产| 亚洲欧美一区二区三区黑人 | 国产精品麻豆人妻色哟哟久久| 国产 一区精品| 久热久热在线精品观看| 免费人妻精品一区二区三区视频| 水蜜桃什么品种好| 亚洲精品aⅴ在线观看| 午夜激情av网站| 精品福利永久在线观看| 美女国产高潮福利片在线看| 边亲边吃奶的免费视频| 亚洲精品成人av观看孕妇| 成人黄色视频免费在线看| 国产在线一区二区三区精| 十分钟在线观看高清视频www| 高清在线视频一区二区三区| 国产一区二区在线观看av| 国产日韩欧美亚洲二区| av又黄又爽大尺度在线免费看| 久久婷婷青草| 在线观看国产h片| 免费大片黄手机在线观看| 男男h啪啪无遮挡| 黄频高清免费视频| 久久久久网色| 国产黄频视频在线观看| 久久久久久免费高清国产稀缺| 少妇被粗大猛烈的视频| 久久久久久久国产电影| 国产精品秋霞免费鲁丝片| 日本91视频免费播放| 午夜激情久久久久久久| 久久毛片免费看一区二区三区|