日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

freertos内核 任务定义与切换 原理分析

發(fā)布時(shí)間:2025/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 freertos内核 任务定义与切换 原理分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

freertos內(nèi)核 任務(wù)定義與切換 原理分析

    • 主程序
    • 任務(wù)控制塊
    • 任務(wù)創(chuàng)建函數(shù)
    • 任務(wù)棧初始化
    • 就緒列表
    • 調(diào)度器
    • 總結(jié)任務(wù)切換

主程序

這個(gè)程序目的就是,使用freertos讓兩個(gè)任務(wù)不斷切換。看兩個(gè)任務(wù)中變量的變化情況(波形)。

下面這個(gè)圖是任務(wù)函數(shù)里面delay(100)的結(jié)果。

下面這個(gè)圖是任務(wù)函數(shù)里面delay(2)的結(jié)果.

多任務(wù)系統(tǒng),CPU好像在同時(shí)做兩件事,也就是說(shuō),最好預(yù)期就是,兩變量的波形應(yīng)該是完全相同的。

這個(gè)實(shí)驗(yàn),delay減少了,他們兩變量波形中間間距仍然沒(méi)有減少,說(shuō)明這個(gè)實(shí)驗(yàn)只是一個(gè)入門(mén),遠(yuǎn)沒(méi)達(dá)到RTOS的效能。

這個(gè)實(shí)驗(yàn)特點(diǎn),就是具有任務(wù)主動(dòng)切換能力,這是如何實(shí)現(xiàn)的呢,值得研究。

下面兩個(gè)圖,直觀顯示了程序的主動(dòng)切換。觀察CurrentTCB這個(gè)參數(shù),可以發(fā)現(xiàn)它是一直變動(dòng)的。

它究竟為什么變動(dòng)呢,采用逐步debug的方式,可找到,是因?yàn)檎{(diào)用了一個(gè)SwitchContext函數(shù)。

那么先看一下main里面都有啥:

從下面可知,這里面有任務(wù)棧、任務(wù)控制塊、有任務(wù)函數(shù)、還得創(chuàng)建任務(wù)。有就緒列表、有調(diào)度器。

任務(wù)棧:

#define TASK1_STACK_SIZE 20 StackType_t Task1Stack[TASK1_STACK_SIZE]; #define TASK2_STACK_SIZE 20 StackType_t Task2Stack[TASK2_STACK_SIZE];

任務(wù)函數(shù)(任務(wù)入口):

void Task1_Entry( void *p_arg ) {for( ;; ){flag1 = 1;delay( 100 ); flag1 = 0;delay( 100 );/* 任務(wù)切換,這里是手動(dòng)切換 */taskYIELD();} } void Task2_Entry( void *p_arg ) {for( ;; ){flag2 = 1;delay( 100 ); flag2 = 0;delay( 100 );/* 任務(wù)切換,這里是手動(dòng)切換 */taskYIELD();} }

任務(wù)控制塊:

TCB_t Task1TCB; TCB_t Task2TCB;

就緒列表初始化:

prvInitialiseTaskLists();

創(chuàng)建任務(wù):

typedef void * TaskHandle_t; TaskHandle_t Task1_Handle; Task1_Handle = xTaskCreateStatic( (TaskFunction_t)Task1_Entry, /* 任務(wù)入口 */(char *)"Task1", /* 任務(wù)名稱,字符串形式 */(uint32_t)TASK1_STACK_SIZE , /* 任務(wù)棧大小,單位為字 */(void *) NULL, /* 任務(wù)形參 */(StackType_t *)Task1Stack, /* 任務(wù)棧起始地址 */(TCB_t *)&Task1TCB ); /* 任務(wù)控制塊 */

任務(wù)添加到就緒列表:

vListInsertEnd( &( pxReadyTasksLists[1] ), &( ((TCB_t *)(&Task1TCB))->xStateListItem ) );

啟動(dòng)調(diào)度器:

vTaskStartScheduler();

任務(wù)控制塊

多任務(wù)系統(tǒng),任務(wù)執(zhí)行由系統(tǒng)調(diào)度。任務(wù)的信息很多,于是就用任務(wù)控制塊表示任務(wù),這樣方便系統(tǒng)調(diào)度。

任務(wù)控制塊類型,包含了任務(wù)的所有信息,比如棧頂指針pxTopOfStack、任務(wù)節(jié)點(diǎn)xStateListItem、任務(wù)棧起始地址pxStack、任務(wù)名稱pcTaskName。

typedef struct tskTaskControlBlock {volatile StackType_t *pxTopOfStack; /* 棧頂 */ListItem_t xStateListItem; /* 任務(wù)節(jié)點(diǎn) */StackType_t *pxStack; /* 任務(wù)棧起始地址 *//* 任務(wù)名稱,字符串形式 */char pcTaskName[ configMAX_TASK_NAME_LEN ]; } tskTCB; typedef tskTCB TCB_t;

任務(wù)創(chuàng)建函數(shù)

main里面調(diào)用xTaskCreateStatic創(chuàng)建了任務(wù),觀察可知這個(gè)函數(shù)其實(shí)改變的是Task1TCB任務(wù)控制塊,這個(gè)任務(wù)控制塊誕生之初,就沒(méi)有進(jìn)行過(guò)初始化。調(diào)用任務(wù)創(chuàng)建函數(shù)目的就是初始化任務(wù)控制塊。

Task1_Handle = xTaskCreateStatic( (TaskFunction_t)Task1_Entry, /* 任務(wù)入口 */(char *)"Task1", /* 任務(wù)名稱,字符串形式 */(uint32_t)TASK1_STACK_SIZE , /* 任務(wù)棧大小,單位為字 */(void *) NULL, /* 任務(wù)形參 */(StackType_t *)Task1Stack, /* 任務(wù)棧起始地址 */(TCB_t *)&Task1TCB ); /* 任務(wù)控制塊 */

直觀表述這個(gè)函數(shù)內(nèi)部:

任務(wù)控制塊里面的任務(wù)節(jié)點(diǎn):下面代碼是初始化過(guò)程,其實(shí)就是進(jìn)行鏈表的普通節(jié)點(diǎn)初始化。

/* 初始化TCB中的xStateListItem節(jié)點(diǎn) */vListInitialiseItem( &( pxNewTCB->xStateListItem ) );/* 設(shè)置xStateListItem節(jié)點(diǎn)的擁有者 */listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB );

這個(gè)任務(wù)入口體現(xiàn)在哪呢,其實(shí)是體現(xiàn)在任務(wù)棧里面。在main.c里面初始化任務(wù)棧,僅僅開(kāi)辟了一段內(nèi)存空間,里面放什么東西都沒(méi)有具體說(shuō)明。調(diào)用任務(wù)創(chuàng)建函數(shù)之后,其實(shí)也一并初始化了任務(wù)棧(往里面放東西),任務(wù)入口就放到這個(gè)棧里了。任務(wù)棧也初始化完的時(shí)候,任務(wù)控制塊才算圓滿的初始化完了。

所以任務(wù)創(chuàng)建函數(shù)里面還得調(diào)用任務(wù)棧初始化函數(shù)。

任務(wù)棧初始化

初始化任務(wù)棧的函數(shù)代碼在下面:

StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) {/* 異常發(fā)生時(shí),自動(dòng)加載到CPU寄存器的內(nèi)容 */pxTopOfStack--;*pxTopOfStack = portINITIAL_XPSR; /* xPSR的bit24必須置1 */pxTopOfStack--;*pxTopOfStack = ( ( StackType_t ) pxCode ) & portSTART_ADDRESS_MASK; /* PC,即任務(wù)入口函數(shù) */pxTopOfStack--;*pxTopOfStack = ( StackType_t ) prvTaskExitError; /* LR,函數(shù)返回地址 */pxTopOfStack -= 5; /* R12, R3, R2 and R1 默認(rèn)初始化為0 */*pxTopOfStack = ( StackType_t ) pvParameters; /* R0,任務(wù)形參 *//* 異常發(fā)生時(shí),手動(dòng)加載到CPU寄存器的內(nèi)容 */ pxTopOfStack -= 8; /* R11, R10, R9, R8, R7, R6, R5 and R4默認(rèn)初始化為0 *//* 返回棧頂指針,此時(shí)pxTopOfStack指向空閑棧 */return pxTopOfStack; } static void prvTaskExitError( void ) {/* 函數(shù)停止在這里 */for(;;); }

棧頂指針就是pxTopOfStack。pxStack是一個(gè)指針指向任務(wù)棧起始地址,ulStackDepth是任務(wù)棧大小。下面是獲取棧頂指針的代碼。棧是后進(jìn)先出,先進(jìn)去的后出。其實(shí)也就是,先進(jìn)棧的被壓到最底下去了(下標(biāo)最靠后)。所以,如果棧里面什么都沒(méi)有,棧頂?shù)奈恢玫迷谧詈竺?也就是地址最高的哪個(gè)位置)。

/* 獲取棧頂?shù)刂?*/ pxTopOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 );

下面兩個(gè)圖表述的都是一個(gè)意思,只不過(guò)右邊的可能好懂點(diǎn)(先進(jìn)棧的被壓到最底下去了)。

初始化任務(wù)棧的函數(shù)運(yùn)行完,棧就發(fā)生了變化,里面有內(nèi)容了,如下圖所示。可以看到任務(wù)入口地址存進(jìn)去了,任務(wù)形參也存進(jìn)去了。

#define portINITIAL_XPSR ( 0x01000000 )

至此,通過(guò)任務(wù)創(chuàng)建函數(shù),已經(jīng)圓滿的初始好了任務(wù)控制塊,同時(shí)填充了任務(wù)棧,任務(wù)棧聯(lián)系了任務(wù)入口地址(任務(wù)的函數(shù)實(shí)體)。任務(wù)控制塊成員變量里面有棧頂指針,聯(lián)系了任務(wù)棧。那么,任務(wù)的棧、任務(wù)的函數(shù)實(shí)體、任務(wù)的控制塊通過(guò)任務(wù)創(chuàng)建函數(shù)就聯(lián)系起來(lái)了。

這里面插一句:任務(wù)棧一個(gè)元素占四個(gè)字節(jié)!上面那個(gè)圖,如果r0地址是0x40,那么pxTopOfStack地址就是0x20(因?yàn)?x40-0x20=32),32÷4=8,也就是說(shuō)八個(gè)元素。

#define portSTACK_TYPE uint32_t typedef portSTACK_TYPE StackType_t; StackType_t Task1Stack[TASK1_STACK_SIZE];uint32_t u:代表 unsigned 即無(wú)符號(hào),即定義的變量不能為負(fù)數(shù); int:代表類型為 int 整形; 32:代表四個(gè)字節(jié),即為 int 類型; _t:代表用 typedef 定義的; 整體代表:用 typedef 定義的無(wú)符號(hào) int 型宏定義; 位(bit):每一位只有兩種狀態(tài)01。計(jì)算機(jī)能表示的最小數(shù)據(jù)單位。 字節(jié)(Byte)8位二進(jìn)制數(shù)為一個(gè)字節(jié)。計(jì)算機(jī)基本存儲(chǔ)單元內(nèi)容用字節(jié)表示。

就緒列表

下面是main里面就緒列表的定義、初始化,添加任務(wù)到就緒列表。

首先緒列表的定義,簡(jiǎn)而言之,就緒列表是一個(gè)List_t類型的數(shù)組(其實(shí)數(shù)組中每個(gè)元素就相當(dāng)于根節(jié)點(diǎn)),數(shù)組下標(biāo)對(duì)應(yīng)任務(wù)的優(yōu)先級(jí)。

#define configMAX_PRIORITIES /* 任務(wù)就緒列表 */ List_t pxReadyTasksLists[ configMAX_PRIORITIES ]; /* 初始化與任務(wù)相關(guān)的列表,如就緒列表 */ prvInitialiseTaskLists(); /* 將任務(wù)添加到就緒列表 */ vListInsertEnd( &( pxReadyTasksLists[1] ), &( ((TCB_t *)(&Task1TCB))->xStateListItem ) ); /* 將任務(wù)添加到就緒列表 */ vListInsertEnd( &( pxReadyTasksLists[2] ), &( ((TCB_t *)(&Task2TCB))->xStateListItem ) );

就緒列表初始化函數(shù)如下,簡(jiǎn)而言之,就是對(duì)List_t類型的數(shù)組里面每個(gè)元素進(jìn)行初始化(根節(jié)點(diǎn)初始化)。

/* 初始化任務(wù)相關(guān)的列表 */ void prvInitialiseTaskLists( void ) {UBaseType_t uxPriority;for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ){vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) );} }

添加任務(wù)到就緒列表的函數(shù)是vListInsertEnd,這個(gè)在之前雙向循環(huán)鏈表說(shuō)過(guò),其實(shí)就是把普通節(jié)點(diǎn)插到根節(jié)點(diǎn)后。

就緒列表在不同任務(wù)之間建立一種聯(lián)系,圖示如下。

調(diào)度器

啟動(dòng)調(diào)度器,是用了一個(gè)SVC中斷。

從下面代碼可以看出,pxCurrentTCB指向的是Task1TCB(任務(wù)控制塊)的地址。

typedef struct tskTaskControlBlock {volatile StackType_t *pxTopOfStack; /* 棧頂 */ListItem_t xStateListItem; /* 任務(wù)節(jié)點(diǎn) */StackType_t *pxStack; /* 任務(wù)棧起始地址 *//* 任務(wù)名稱,字符串形式 */char pcTaskName[ configMAX_TASK_NAME_LEN ]; } tskTCB; typedef tskTCB TCB_t;//void vTaskStartScheduler( void )函數(shù)里 pxCurrentTCB = &Task1TCB;

下面這個(gè)svc的中斷函數(shù),里面第一步就是把任務(wù)棧的棧頂指針給r0寄存器。

可以認(rèn)為:r0=pxTopOfStack(任務(wù)棧的棧頂指針的地址)。

//__asm void vPortSVCHandler( void )函數(shù)里 ldr r3, =pxCurrentTCB //加載pxCurrentTCB的地址到r3 ldr r1, [r3] //把r3指向的內(nèi)容給r1,內(nèi)容就是Task1TCB的地址 ldr r0, [r1] //把r1指向的內(nèi)容給r0,內(nèi)容就是Task1TCB的地址里面的第一個(gè)內(nèi)容,也就是pxTopOfStack

接下來(lái):以r0(任務(wù)棧的棧頂指針的地址)為基地址,將任務(wù)棧里面向上增長(zhǎng)的8字節(jié)內(nèi)容加載到CPU寄存器r4-r11。

ldmia r0!, {r4-r11}

然后將r0存到psp里。

msr psp, r0

下面這個(gè)代碼,目的是改EXC_RETURN值為0xFFFFFFD,這樣的話中斷返回就進(jìn)入線程模式,使用線程堆棧(sp=psp)。

orr r14, #0xd

看下面這個(gè)圖,異常返回時(shí),出棧用的是PSP指針。PSP指針把任務(wù)棧里面剩余的內(nèi)容(沒(méi)有讀到寄存器里的內(nèi)容)全部給弄出去(自動(dòng)將棧中的剩余內(nèi)容加載到cpu寄存器)。那么任務(wù)函數(shù)的地址就給到了PC,程序就跳到任務(wù)函數(shù)的地方繼續(xù)運(yùn)行。

圖1如下:注意,動(dòng)的是psp,pxTopOfStack是不動(dòng)的。

下面是實(shí)驗(yàn)證明上面關(guān)于psp指針運(yùn)動(dòng)描述的正確性:

r0一開(kāi)始存的就是pxTopOfStack的值(任務(wù)棧的棧頂指針的地址)

接下來(lái)把運(yùn)動(dòng)過(guò)的r0給psp,此時(shí)的psp位置就在圖1psp2那個(gè)地方。

下圖這個(gè)psp地址仍然是0x40。

程序運(yùn)行完bx r14,就跑到任務(wù)函數(shù)里面了,此時(shí)的psp=0x60,位置就在圖1的psp3。

現(xiàn)在程序跑到任務(wù)函數(shù)里面去了,任務(wù)函數(shù)里面調(diào)了taskYIELD()函數(shù),目的就是觸發(fā)PendSV中斷(優(yōu)先級(jí)最低,沒(méi)有其他中斷運(yùn)行時(shí)才響應(yīng))。下面這個(gè)圖是進(jìn)到PendSV中斷服務(wù)函數(shù)之前的寄存器組狀態(tài)。

下面這個(gè)圖是進(jìn)到PendSV中斷服務(wù)函數(shù)時(shí)的寄存器組狀態(tài)。可以觀察psp,從0x60變成了0x40。

現(xiàn)在psp的位置就可以知道了,如下圖所示。這是因?yàn)?#xff0c;進(jìn)到xPortPendSVHandler函數(shù)之后,上個(gè)任務(wù)運(yùn)行的環(huán)境將會(huì)自動(dòng)存儲(chǔ)到任務(wù)的棧中,同時(shí)psp自動(dòng)更新。

下面這個(gè)代碼,把psp的值存到r0里面。

//__asm void xPortPendSVHandler( void )函數(shù) mrs r0, psp //void vTaskStartScheduler( void )函數(shù)里 pxCurrentTCB = &Task1TCB;/*pxCurrentTCB有一個(gè)地址,這個(gè)地址里面的內(nèi)容是當(dāng)前任務(wù)的地址*//*當(dāng)前任務(wù)地址的第一個(gè)內(nèi)容就是當(dāng)前任務(wù)的棧頂指針*///__asm void xPortPendSVHandler( void )函數(shù)里 ldr r3, =pxCurrentTCB /* 加載pxCurrentTCB的地址到r3 */ ldr r2, [r3] /* 把r3指向的內(nèi)容給r2,內(nèi)容就是Task1TCB(當(dāng)前任務(wù))的地址*//*[r2]是當(dāng)前任務(wù)棧的棧頂指針*/ stmdb r0!, {r4-r11} /* 將CPU寄存器r4~r11的值存儲(chǔ)到r0指向的地址 */ str r0, [r2] /* 把r0的地址給當(dāng)前任務(wù)棧的棧頂指針 */

經(jīng)過(guò)上面這個(gè)代碼,現(xiàn)在r0的位置如下。psp在上面這個(gè)過(guò)程是沒(méi)變化的,變的只有r0。

對(duì)照著下面這個(gè)圖,更清晰點(diǎn)。r2存的是當(dāng)前任務(wù)的地址。r0存的是棧頂指針的地址。

下面對(duì)r3進(jìn)行說(shuō)明:r3=0x2000000C,這個(gè)地址里面存的第一個(gè)內(nèi)容是當(dāng)前任務(wù)塊的地址0x20000068如下圖所示。

下面對(duì)當(dāng)前任務(wù)塊的地址進(jìn)行說(shuō)明:當(dāng)前任務(wù)塊的地址0x20000068里面存的第一個(gè)內(nèi)容就是棧頂指針的地址。

下面對(duì)棧頂指針的地址進(jìn)行說(shuō)明:棧頂指針地址里面內(nèi)容剛好就是當(dāng)前任務(wù)的任務(wù)棧。

可以對(duì)比下圖,觀察當(dāng)前任務(wù)棧里面的內(nèi)容,與此同時(shí)內(nèi)容也對(duì)應(yīng)了地址,地址就可以通過(guò)上圖推出,比如,0x20000060地址里面存的就是0x10000000。

下面這個(gè)代碼:目的是將r3和r14臨時(shí)壓入主棧(MSP指向的棧),因?yàn)榻酉聛?lái)需要調(diào)用任務(wù)切換函數(shù),調(diào)用函數(shù)時(shí),返回地址自動(dòng)保存到r14里面。r3的內(nèi)容是當(dāng)前任務(wù)塊的地址(ldr r3, =pxCurrentTCB),調(diào)用函數(shù)后,pxCurrentTCB會(huì)被更新。

stmdb sp!, {r3, r14}

執(zhí)行代碼之前,MSP指向0x20000058這個(gè)地址。

執(zhí)行代碼之后,MSP指向的地址少了8個(gè)字節(jié),與此同時(shí)r3和r14存到了MSP指向的地址里面。

msp指向的棧里面的具體信息其實(shí)可以反推出來(lái),如下綠字:

下面這個(gè)代碼:basepri是中斷屏蔽寄存器,下面這個(gè)設(shè)置,優(yōu)先級(jí)大于等于11的中斷都將被屏蔽。相當(dāng)于關(guān)中斷進(jìn)入臨界段。

mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY msr basepri, r0 /* #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* 高四位有效,即等于0xb0,或者是11 */ 191轉(zhuǎn)成二進(jìn)制就是11000000,高四位就是1100 */

下面這個(gè)代碼:調(diào)用了函數(shù)vTaskSwitchContext,這個(gè)函數(shù)目的是選擇優(yōu)先級(jí)最高的任務(wù),然后更新pxCurrentTCB。目前這里面使用的是手動(dòng)切換。

bl vTaskSwitchContext void vTaskSwitchContext( void ) { /* 兩個(gè)任務(wù)輪流切換 */if( pxCurrentTCB == &Task1TCB ){pxCurrentTCB = &Task2TCB;}else{pxCurrentTCB = &Task1TCB;} }

現(xiàn)在說(shuō)明一下調(diào)用這個(gè)函數(shù)產(chǎn)生什么后果:

從下圖可知,此時(shí)r3=0x2000000C,這個(gè)地址里面的的內(nèi)容就是當(dāng)前任務(wù)塊的地址。

進(jìn)行到下面這一步,當(dāng)前任務(wù)塊的地址變了,與此同時(shí),0x2000000C地址里面的的內(nèi)容也變了。也就是說(shuō),走出調(diào)用函數(shù)之后,通過(guò)r3就能找到變化后新的任務(wù)地址了。

那么此時(shí)豁然開(kāi)朗,為什么調(diào)用函數(shù)前要把r3入棧呢,看下圖正中間上方的匯編代碼,這個(gè)c語(yǔ)言背后的匯編代碼是調(diào)用寄存器r0、r1存一些中間變量,為了防止運(yùn)行函數(shù)時(shí)往r3寄存器里面存中間變量,才把r3入棧保護(hù)起來(lái)。想一下,如果往r3寄存器里面存中間變量,那么0x2000000C地址就不存到r3寄存器里了,那也無(wú)法通過(guò)r3找到變化后新的任務(wù)地址了。

下面這個(gè)代碼:優(yōu)先級(jí)高于0的中斷被屏蔽,相當(dāng)于是開(kāi)中斷退出臨界段。

mov r0, #0 /* 退出臨界段 */ msr basepri, r0

下面這個(gè)代碼恢復(fù)r3和r14

ldmia sp!, {r3, r14} /* 恢復(fù)r3和r14 */

如下圖,r3和r14被恢復(fù),而且MSP從0x20000550變成了0x20000558。

這里面有個(gè)細(xì)節(jié),MSP變動(dòng)之后,MSP指向的棧前面的數(shù)(存的r3和r14)卻被留了下來(lái)。這讓人不禁思考出棧究竟是什么意思,這里不就只是動(dòng)了MSP指針嗎。

此時(shí)觀察psp地址里面的內(nèi)容,可發(fā)現(xiàn),還是之前的那個(gè)任務(wù)棧。看了出棧和c語(yǔ)言里面實(shí)體的出(c語(yǔ)言里面出棧后,出去的內(nèi)容就不在棧里面了)還不太一樣,這個(gè)出棧,動(dòng)的是指針,內(nèi)容還在棧里面。

下面這個(gè)代碼,進(jìn)行完,r0里面存的是當(dāng)前任務(wù)棧的棧頂指針的地址。

ldr r1, [r3] ldr r0, [r1] /* 當(dāng)前激活的任務(wù)TCB第一項(xiàng)保存了任務(wù)堆棧的棧頂,現(xiàn)在棧頂值存入R0*/

下面是當(dāng)前的任務(wù)棧里面的內(nèi)容。

ldmia r0!, {r4-r11} /* 出棧 */

這個(gè)時(shí)候r0位置變到了0x200000c0。

然后下面把r0給了psp。記得吧,之前psp指向的可是0x20000040,也就是上一個(gè)任務(wù)的任務(wù)棧,這里面切到了另一個(gè)任務(wù)的任務(wù)棧里面了。也就是psp指向0x200000c0。

msr psp, r0

下面這個(gè)代碼運(yùn)行完效果如下圖。

bx r14

仔細(xì)觀察,異常退出時(shí),會(huì)以psp作為基地址,將任務(wù)棧里面剩下的內(nèi)容自動(dòng)加載到CPU寄存器。然后PC指針就拿到了任務(wù)棧里面的任務(wù)函數(shù)地址,然后就跳到任務(wù)函數(shù)里了。至此,切換完成。

最后,觀察一下psp:由下面兩張圖,就明白了,psp出棧是什么意思。

下面是返回Thread Mode后(進(jìn)入到了任務(wù)函數(shù)里面)psp的指向。

下圖是沒(méi)有返回到Thread Mode時(shí)psp的指向。

總結(jié)任務(wù)切換

總結(jié)一下核心思路:

1.首先是這張圖,在任務(wù)函數(shù)里面,處于Thread Mode狀態(tài)(為什么呢,因?yàn)閎x r14 指令,里面r14的值設(shè)置的是0xFFFFFFFD),然后通過(guò)任務(wù)函數(shù)里面的taskYIELD()函數(shù),進(jìn)入Handler Mode狀態(tài),里面進(jìn)行了任務(wù)切換操作,就是說(shuō),psp指向的任務(wù)棧切換了(所以一會(huì)pc指向的任務(wù)函數(shù)也改了),然后結(jié)束異常的時(shí)候,psp出棧,pc現(xiàn)在指向的是切換后的任務(wù)函數(shù)地址,于是就又跳到另一個(gè)任務(wù)函數(shù)里。

2.要明白切到任務(wù)函數(shù)里面的原理

之前創(chuàng)建任務(wù)時(shí),已經(jīng)把任務(wù)函數(shù)保存在了任務(wù)棧內(nèi)。

出棧的話,psp指向的棧里面剩下的東西,會(huì)加載到寄存器里面,如下圖所示:那么任務(wù)函數(shù)地址就給到pc指針了,那么異常返回之后,程序就跳到任務(wù)函數(shù)的地方繼續(xù)運(yùn)行,那么就切到任務(wù)函數(shù)里了。

總結(jié)

以上是生活随笔為你收集整理的freertos内核 任务定义与切换 原理分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日韩大片免费观看 | 在线成人免费av | 丁香综合网 | 日本久久中文字幕 | 亚洲精品一区二区精华 | 国产黄色片一级 | 欧美人交a欧美精品 | 国产小视频在线免费观看 | 中文字幕国产一区二区 | 精品一区二区在线看 | 国产精品一区二区白浆 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 操操操日日日干干干 | 91探花国产综合在线精品 | 精品在线免费视频 | 日韩欧美高清在线观看 | 十八岁以下禁止观看的1000个网站 | 国产一级精品绿帽视频 | 亚洲国产欧洲综合997久久, | 国产 日韩 欧美 在线 | 91污污视频在线观看 | 美女视频黄免费的久久 | 色婷婷丁香| 在线看av的网址 | 中中文字幕av在线 | 日日婷婷夜日日天干 | 91久久爱热色涩涩 | 久久久免费精品 | 国产精品一区免费看8c0m | www国产精品com | 日韩亚洲国产中文字幕 | 久久国产精品久久久久 | 国产精品正在播放 | 在线中文字幕一区二区 | 麻豆精品传媒视频 | 一区二区三区动漫 | 亚洲成人欧美 | 天天综合久久综合 | 在线观看免费版高清版 | 500部大龄熟乱视频 欧美日本三级 | 日本不卡视频 | 亚洲国产精久久久久久久 | 欧美激情综合五月色丁香 | 国产综合婷婷 | 欧美在线视频日韩 | 免费看成人片 | 国产精品99久久久久人中文网介绍 | 亚洲免费在线观看视频 | 精品久久一 | 欧美analxxxx| 成人片在线播放 | 国产一级电影在线 | 久久国产精品久久久久 | 国产在线精品二区 | 亚洲毛片一区二区三区 | 亚洲黄色免费在线看 | 国产精品嫩草影院9 | 国产精品成人自拍 | 国产日韩在线视频 | 在线不卡视频 | 婷婷丁香在线观看 | 97超碰网| 国产久视频 | 成人啊 v | 中文av字幕在线观看 | 深夜男人影院 | 91免费国产在线观看 | 麻豆一区在线观看 | 日韩欧美91 | 在线播放第一页 | 日韩在线电影一区 | 日韩精品一区二区三区水蜜桃 | 天堂在线视频中文网 | 久久夜靖品 | 国产一级电影网 | 久久精品欧美一区二区三区麻豆 | 成人国产精品久久久久久亚洲 | 午夜影院一级片 | av综合在线观看 | 国产一级精品视频 | 狠狠色丁香婷婷 | 伊人久久精品久久亚洲一区 | 天天操天天射天天插 | 久久视频精品在线观看 | av电影免费在线播放 | 91在线网址| 亚洲黄色影院 | 91少妇精拍在线播放 | 在线 高清 中文字幕 | 免费视频一区二区 | 日韩3区 | 免费在线观看黄网站 | 五月综合激情婷婷 | 国产精品成人一区二区三区吃奶 | 香蕉网在线观看 | 日本黄网站 | 国产精品嫩草在线 | 中文字幕黄网 | 色99之美女主播在线视频 | 日韩高清在线看 | av免费观看高清 | 亚洲视频 中文字幕 | 亚洲精品资源 | 欧美精品中文在线免费观看 | 成人欧美在线 | av在线播放不卡 | 福利久久 | 激情婷婷久久 | 天天草av | 狠狠狠狠狠狠干 | 国产精品第一页在线观看 | 亚洲天堂免费视频 | 婷婷久久网站 | 91在线观看高清 | 亚洲一区日韩精品 | 亚洲爱视频 | 国产精品久免费的黄网站 | 天天爽网站 | av官网在线 | 2019精品手机国产品在线 | 亚洲国产精品999 | 中文字幕人成一区 | 国产免费高清视频 | 午夜骚影 | 在线看片中文字幕 | 婷婷干五月 | 亚洲视频 在线观看 | 日韩av免费观看网站 | 美女网站在线看 | 亚州av成人 | 综合久久综合久久 | 黄av在线 | 黄色的视频 | 天天拍夜夜拍 | 欧美国产高清 | 色福利网站 | 久久一区二区免费视频 | 黄色影院在线播放 | 黄色毛片视频免费观看中文 | 色婷婷久久一区二区 | 人人玩人人添人人澡97 | 国产99久久久国产精品成人免费 | 99产精品成人啪免费网站 | 韩国av免费在线观看 | 国产在线视频一区二区 | 超碰在线人人 | 香蕉久草 | 视频精品一区二区三区 | 一级特黄aaa大片在线观看 | 91成人精品国产刺激国语对白 | 黄色av电影 | 日韩一二三在线 | 天天草av| 又黄又刺激视频 | 国产在线观看地址 | 中文字幕一区二区三区四区 | av大片免费在线观看 | 国产综合精品一区二区三区 | 精品一区二区免费视频 | 在线亚洲成人 | 久久久综合 | 婷婷在线看| 九九免费精品 | 日韩城人在线 | 在线视频国产区 | 97色免费视频 | 国产精品99久久久精品免费观看 | 国产又粗又猛又黄又爽 | 91桃色在线播放 | 色婷婷综合久久久久 | 在线视频麻豆 | 人人干人人搞 | 久草99| 特级毛片在线 | 91免费在线视频 | 精品国产一区二区三区男人吃奶 | 亚洲精品在线视频播放 | 日韩久久精品一区二区 | 丁香久久综合 | 国产一级片视频 | 毛片网站在线观看 | 国产一区二区高清 | 亚洲精品综合一二三区在线观看 | 亚洲一本视频 | 三级视频日韩 | 婷婷干五月 | 久久国产视频网 | 碰超在线观看 | 欧美日韩免费一区 | 欧美亚洲国产一卡 | 97天天干| 一级欧美日韩 | 97碰碰精品嫩模在线播放 | 国产精品1区 | 黄色软件视频网站 | 久亚洲精品 | 国产午夜一区二区 | 亚洲综合爱 | 亚洲欧美视频在线播放 | 国产永久免费高清在线观看视频 | 香蕉视频亚洲 | 手机av看片| 久久国产精品久久精品 | 欧美福利在线播放 | 中文字幕在线国产 | 亚洲成人黄色网址 | 国产短视频在线播放 | 日韩一区二区三区在线观看 | 天天操天天爽天天干 | 亚洲小视频在线 | 中文字幕在线乱 | 日韩欧美国产免费播放 | 精品视频免费久久久看 | 天天射天天干 | 天天插天天 | 欧美在线你懂的 | 久草电影免费在线观看 | 中文字幕制服丝袜av久久 | 国内精品视频久久 | 午夜精品成人一区二区三区 | 9久久精品| 久久99热精品 | 精品国产欧美一区二区三区不卡 | 亚洲成人欧美 | 国产资源在线播放 | 九九交易行官网 | 成人污视频在线观看 | 色婷婷国产 | 精品国产精品国产偷麻豆 | 久久美女电影 | 久久综合电影 | 亚洲成人国产 | 字幕网av| 国产精品日韩在线 | www日韩在线 | www.狠狠操.com | 久久久久亚洲精品国产 | 欧美一区在线看 | 欧美热久久 | 波多野结衣在线播放一区 | 日韩高清在线一区 | 天操夜夜操 | 久草视频在线免费看 | av在线8| 综合网婷婷| 日韩高清二区 | 国产无套精品久久久久久 | 色七七亚洲影院 | 欧美精品黑人性xxxx | 中文永久字幕 | 久久久久国产精品一区二区 | 色爽网站| 日韩福利在线观看 | 色综合婷婷 | 女人高潮特级毛片 | 美女视频黄的免费的 | 丰满少妇对白在线偷拍 | 色中色亚洲 | 欧美黑吊大战白妞欧美 | 91成人观看 | 国产中文字幕91 | 有码中文字幕在线观看 | 操操综合网 | 色婷婷a| 99久久精品网| 99久久99| 午夜免费福利视频 | 九九在线视频免费观看 | 精品国产乱码一区二区三区在线 | 国产精品激情偷乱一区二区∴ | 综合国产在线 | 玖玖色在线观看 | 2019天天干夜夜操 | 伊人五月天.com | va视频在线观看 | 国产精品video | 999成人免费视频 | 国产第一福利网 | 狠狠干.com | 91精品国产麻豆 | 最近更新好看的中文字幕 | 日韩精品一区电影 | 中文字幕在线播放视频 | 国产日韩精品一区二区三区在线 | 午夜视频在线观看一区二区三区 | 亚洲精品中文字幕视频 | 中文字幕日本特黄aa毛片 | 国产电影黄色av | 国产剧情一区二区 | 亚洲黄a| 午夜精品久久久99热福利 | 国产精品国产三级国产aⅴ无密码 | 国产高清在线a视频大全 | 超碰97网站 | 91精品国产一区 | 国产成人在线观看 | 欧美了一区在线观看 | 在线视频欧美日韩 | 亚洲成免费 | 国产中文a| 在线视频 91 | 在线观看福利网站 | 国产破处精品 | 国产一区二区三区网站 | 波多野结衣视频一区 | 国产1区2| 国产裸体无遮挡 | 2019精品手机国产品在线 | 婷婷在线免费观看 | 久久久久中文字幕 | www.黄色在线 | 国产视频在线播放 | 欧美日韩国产网站 | 婷婷去俺也去六月色 | 视频在线一区二区三区 | 九九精品视频在线看 | 国产999精品久久久久久麻豆 | 国产免费资源 | 91人人爽久久涩噜噜噜 | 亚一亚二国产专区 | www.99在线观看 | 开心综合网 | 精品久久99 | 免费三级影片 | 91精品成人久久 | 国产高清精品在线 | 日韩精品一区二区在线视频 | 91在线观看视频 | 国产精品综合在线观看 | 国产精品一区二区在线观看免费 | 日韩美女一级片 | 狠狠色伊人亚洲综合网站色 | 91在线成人 | 麻豆va一区二区三区久久浪 | 日韩三级视频在线观看 | 国产 一区二区三区 在线 | 亚洲免费精彩视频 | www免费看| 亚洲成人av片在线观看 | 又爽又黄又无遮挡网站动态图 | 国产在线精品一区 | 草久中文字幕 | 久久精品网站免费观看 | 亚洲精品久久久久久久蜜桃 | 国产日产精品一区二区三区四区的观看方式 | 高清国产午夜精品久久久久久 | 91免费看黄 | 色七七亚洲影院 | 久久韩国免费视频 | 日韩视频一区二区三区在线播放免费观看 | 手机av电影在线观看 | 亚洲精选视频在线 | 欧美视频18| 91九色网站| 天天爽人人爽夜夜爽 | 亚洲国产精品久久久久 | 91精品国产91久久久久福利 | 久久免费a | 五月情婷婷 | 日韩中文字幕在线看 | 中文字幕日韩有码 | 日韩免费b| 日韩电影在线视频 | 天天干,天天射,天天操,天天摸 | 免费看特级毛片 | 国产a级片免费观看 | 狠狠的操你 | 91视频在线免费观看 | 免费合欢视频成人app | 中文字幕人成乱码在线观看 | 天天射网| 91免费观看视频网站 | 欧美精品乱码99久久影院 | 九九在线精品视频 | 亚洲成av人片在线观看无 | 男女靠逼app| 亚洲一区精品二人人爽久久 | 免费av片在线 | 夜色资源站wwwcom | 97在线看 | 免费观看国产成人 | 超碰在线97观看 | 波多野结衣一区 | 亚洲美女视频在线观看 | 一区二区三区精品在线视频 | 香蕉在线影院 | 久热久草在线 | 亚洲国产精品一区二区尤物区 | 国产高清在线免费 | 91精品国产91久久久久 | 久久久高清免费视频 | 久久久久久久久久久精 | 国产精品 国内视频 | 综合色综合 | 免费合欢视频成人app | 日韩免费一区二区 | 91亚洲永久精品 | 欧美在线视频精品 | 亚洲三级网 | 亚洲午夜精品久久久久久久久久久久 | 香蕉网站在线观看 | 久久久国产精品一区二区中文 | 久久久久国产精品一区二区 | 色999精品 | 1024手机基地在线观看 | 久久好看免费视频 | 欧美日韩高清一区 | 在线观看国产 | 伊人五月天婷婷 | av在线电影免费观看 | 国产精品久久久 | 欧美日韩国产在线 | 又黄又刺激视频 | 日韩高清一 | 日韩女同一区二区三区在线观看 | 五月精品 | 久久久久久久久福利 | 亚洲一级黄色av | 在线免费高清视频 | 亚洲精品在线免费播放 | 国产资源中文字幕 | 国产精品99久久久久久宅男 | 91麻豆精品国产自产在线 | 91在线播 | 91免费高清 | 亚洲精品久久久蜜桃直播 | 91免费视频网站在线观看 | 国产精品美女久久 | 成人午夜精品久久久久久久3d | 中文字幕av一区二区三区四区 | 成人教育av| 国内视频 | 91麻豆精品国产自产在线游戏 | 久久久99精品免费观看乱色 | 日韩中文字幕免费在线观看 | 午夜99| 亚洲高清av在线 | 国产精品美女久久久久久久 | 国产中文字幕在线免费观看 | 日韩免费不卡视频 | 色综合www| 免费能看的av| 91精品视频观看 | av日韩国产 | 亚洲精品美女免费 | 黄色免费观看 | 天天色天天操综合网 | 久操中文字幕在线观看 | 国产色婷婷在线 | 国产999久久久 | 美女免费视频观看网站 | 国产偷v国产偷∨精品视频 在线草 | 日日碰狠狠添天天爽超碰97久久 | 日本三级久久 | 国产在线观看免费观看 | 久久99九九99精品 | 国产精品免费一区二区三区在线观看 | 国产免费观看视频 | 激情综合网五月激情 | 中文国产字幕 | 国产黄色看片 | 国产精品av免费 | 99色国产 | 婷婷五月在线视频 | 婷婷黄色片 | 亚洲国产精品va在线看 | 免费成人在线网站 | 亚洲成人国产精品 | 国产999精品久久久久久麻豆 | 一级黄色片毛片 | 777奇米四色 | 午夜精品电影 | 欧美日韩免费观看一区二区三区 | 中文字幕最新精品 | 国产亚洲人 | 欧美国产日韩在线观看 | 天天色草| 国产精品午夜久久久久久99热 | 久久久久国产精品视频 | 亚洲日本va在线观看 | 综合久久精品 | 91高清在线看 | 亚洲精品在线观看视频 | 国产视频精品视频 | 99国产一区 | 国产精品日韩在线播放 | 成人免费一区二区三区在线观看 | 国产欧美高清 | 色综合久久五月天 | 久久都是精品 | 久久激情视频 久久 | 人人草人人草 | 欧美国产三区 | 成人a视频片观看免费 | 中文字幕久久精品亚洲乱码 | 九九热在线观看 | 激情五月视频 | 在线免费黄色片 | 在线影视 一区 二区 三区 | 免费的国产精品 | 国产福利一区二区在线 | 丝袜美腿亚洲综合 | 国产精品国产毛片 | 中文在线a∨在线 | 人人爽爽人人 | 在线色吧 | 精品中文字幕在线观看 | 天堂在线一区 | 99亚洲天堂 | 69久久夜色精品国产69 | 亚州av一区 | 婷婷去俺也去六月色 | 欧美最猛性xxxx | 久久精品香蕉 | 日韩免费三级 | av综合在线观看 | 婷婷去俺也去六月色 | 一二三区视频在线 | 午夜av在线免费 | 天天搞天天干 | 国产精品成人一区二区三区吃奶 | 2021国产精品视频 | 精品国产电影一区二区 | 在线国产片 | 福利视频一二区 | 久久精品国产久精国产 | 国产在线精品福利 | 手机看片1042 | 国产探花 | 九七人人干 | 亚洲免费在线播放视频 | 欧美日韩三区二区 | 综合中文字幕 | 亚洲六月丁香色婷婷综合久久 | 久热只有精品 | 日韩精品一区二区三区高清免费 | 91免费视频黄 | av在线免费网 | 久久久久北条麻妃免费看 | 天天色 天天 | 97**国产露脸精品国产 | 午夜免费福利片 | 国产精品美女久久久久久久久 | 一区二区欧美在线观看 | 色瓜 | 国产精品99爱 | 色在线亚洲| 国产精品一二三 | 日韩专区在线播放 | 91热精品视频 | 欧美在线观看视频一区二区 | 免费精品在线观看 | 99re8这里有精品热视频免费 | av观看免费在线 | av中文字幕亚洲 | 91在线视频在线 | 最近日本韩国中文字幕 | 亚洲三级网| 操操综合 | 国产精品免费人成网站 | 九九久久久久99精品 | 特级a老妇做爰全过程 | 亚洲精品久久久久中文字幕二区 | 成人av播放 | 99久久er热在这里只有精品15 | av解说在线观看 | 精品国产一区二区三区久久久蜜臀 | 国产黄色理论片 | 99精品观看| 日韩小视频 | 丁香5月婷婷久久 | 在线视频中文字幕一区 | 97超碰色偷偷 | 欧美另类重口 | 天天色天天上天天操 | 91精品一区二区三区久久久久久 | 欧美日韩不卡一区二区 | 四虎影视www | 奇米网网址 | 国产精品久久久久久久婷婷 | 亚洲视频 视频在线 | 91成人精品 | 在线观看国产区 | 97香蕉超级碰碰久久免费软件 | 日韩视频中文字幕 | 色99导航 | 99精品视频免费 | 久久免费在线观看 | 免费91在线观看 | 91久久一区二区 | 一区电影 | 国产资源免费在线观看 | 日韩av免费观看网站 | 国产婷婷精品av在线 | 免费高清男女打扑克视频 | 四虎在线永久免费观看 | 久久国产手机看片 | 日韩欧美在线视频一区二区 | 日韩亚洲在线观看 | 久久精品9 | 国产精品久久久久影院日本 | 色综久久| 国产精品成人在线 | av免费网站观看 | 免费视频一级片 | 天天干,夜夜爽 | 最近中文国产在线视频 | 精品一区91 | 国产成人精品午夜在线播放 | 国产一级视频免费看 | 夜夜爱av | 精品视频区| 免费黄色av电影 | 911香蕉 | 四虎影视www | 91网页版免费观看 | 美女国内精品自产拍在线播放 | 欧美经典久久 | 欧美性色综合网站 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 免费精品视频在线观看 | 西西4444www大胆艺术 | 欧美精品久久 | 视频在线日韩 | 色综合久久88色综合天天免费 | 精品国产一区在线观看 | 久久国产一区二区 | 久久久久久视频 | 超碰国产在线观看 | 青春草视频在线播放 | 久久久免费 | 欧美国产三区 | 永久免费的啪啪网站免费观看浪潮 | 精品爱爱 | 美女露久久 | 国产精品人成电影在线观看 | 久久优 | 亚州精品天堂中文字幕 | 女人18精品一区二区三区 | 亚洲一区二区三区毛片 | 日韩欧美在线播放 | 中文字幕在线观看2018 | 色噜噜噜噜| 国产九九热视频 | 中文字幕 在线 一 二 | 国产精品乱码高清在线看 | 日韩乱色精品一区二区 | 国产r级在线观看 | 看国产黄色片 | 久久8精品| 少妇精69xxtheporn | 精品国产1区 | 五月天色中色 | 91大片网站| 国产最顶级的黄色片在线免费观看 | 黄色网免费 | 欧美日韩超碰 | 日本中文字幕久久 | 国产在线播放一区 | 伊香蕉大综综综合久久啪 | 午夜视频免费 | 色在线高清 | 九色视频网站 | 久草在线视频免费资源观看 | 在线观看91久久久久久 | 天天操夜夜叫 | 婷婷久久丁香 | 国产精品久久久久久久久久久杏吧 | 2018精品视频| 91精品国产电影 | 亚洲天天综合 | 在线免费看黄网站 | 亚洲成人一区 | 国产精品私人影院 | 久久久久一区二区三区 | 久热国产视频 | 狠狠色噜噜狠狠 | 中文字幕一区二区三区四区在线视频 | www.午夜视频 | 国内久久精品视频 | 在线 影视 一区 | 操久| 精品福利在线视频 | 国内免费的中文字幕 | 久久综合久久伊人 | 99午夜| 六月婷婷久香在线视频 | 成人黄性视频 | 久热免费在线观看 | 日本婷婷色 | 日韩av快播电影网 | 国产在线观看中文字幕 | 中文字幕 婷婷 | 97精品国产91久久久久久 | 亚洲精品理论 | 国产你懂的在线 | 成年一级片 | 亚洲精品综合在线 | 黄色av电影在线观看 | 在线观看国产永久免费视频 | 99热999| 九七人人干 | 欧美日韩精品在线免费观看 | 日韩伦理一区二区三区av在线 | 黄色成人91 | 久久成人在线视频 | 日韩av片在线 | 毛片视频网址 | 天天草天天 | 一区二区三区动漫 | 黄色精品久久 | 人人超在线公开视频 | 欧美激情va永久在线播放 | 欧美一级乱黄 | 丁香久久综合 | 日韩影视精品 | 婷婷综合视频 | 看污网站 | 亚洲精品综合一区二区 | 久久精品亚洲国产 | 久久最新| 婷婷网址| 99久久精品国产一区 | 欧美一区二区在线看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 亚洲视频精品在线 | 欧美专区国产专区 | 视频国产区 | 国产高清在线看 | 日韩av影片在线观看 | 亚洲资源视频 | 亚洲专区 国产精品 | 日韩成人精品一区二区 | 中文字幕色综合网 | 婷婷色网址 | 色综合久久88色综合天天免费 | 久久狠狠婷婷 | 青青河边草观看完整版高清 | 西西444www大胆高清图片 | 久久综合综合久久综合 | 国产手机在线观看视频 | 亚洲精品在线视频 | 成人在线观看影院 | 99re视频在线观看 | 国色综合 | 免费看三级网站 | 免费看一级特黄a大片 | 嫩嫩影院理论片 | 亚洲视频h| 色多多污污| 国产精品不卡 | 激情久久久久久久久久久久久久久久 | 亚洲男男gⅴgay双龙 | 亚洲乱码精品久久久 | 国产一区在线观看视频 | 国产 视频 高清 免费 | 亚洲成人国产精品 | 二区三区毛片 | 成人av电影在线 | 69视频国产 | av中文字幕亚洲 | 成人久久久精品国产乱码一区二区 | 韩国三级av在线 | 久久综合9988久久爱 | 国内精品在线观看视频 | 69精品在线| 欧美 亚洲 另类 激情 另类 | 狠狠色丁香久久综合网 | 日韩性色 | 日韩性色 | 欧美久草视频 | 国产一区二区在线免费播放 | 国产精品久久 | 日韩高清在线观看 | 国模视频一区二区三区 | 天天操天天射天天舔 | 91成人精品在线 | 久99久中文字幕在线 | 免费午夜在线视频 | 亚洲精品免费在线播放 | 中文字幕在线观看第三页 | 激情伊人五月天久久综合 | 色综合久久久 | 亚洲精品tv久久久久久久久久 | 黄色一级大片在线免费看产 | 久久久国产精品一区二区中文 | 国产精品美女久久 | 国产精品中文字幕在线播放 | 国产精品一区二区三区在线看 | 欧美91成人网 | 特级毛片爽www免费版 | 日本久久精 | 精品久久精品 | 啪啪资源 | 黄色精品网站 | 久久精品国产免费看久久精品 | 黄色毛片在线观看 | 亚洲另类视频在线 | 久久久久久久久久久久久久免费看 | 黄免费在线观看 | 中文字幕日韩伦理 | 成年人在线免费看视频 | 91麻豆精品国产91 | 亚洲国产欧洲综合997久久, | 国产成人99久久亚洲综合精品 | 亚洲免费色 | 精品国产成人av在线免 | av免费在线观看网站 | 亚洲精品一区中文字幕乱码 | 欧美夫妻性生活电影 | 日韩剧| 香蕉精品视频在线观看 | 亚洲三级av | 看黄色91 | 国产精品久久久久国产精品日日 | 国产成人61精品免费看片 | 久久国产精品久久精品 | 久久综合操 | 69国产盗摄一区二区三区五区 | 天天操综合网站 | 又色又爽又黄 | 777视频在线观看 | 日韩欧美一区二区在线播放 | 黄色特级毛片 | 亚洲国产精品99久久久久久久久 | 久久av不卡 | 91九色国产蝌蚪 | 国产91对白在线播 | 国产乱老熟视频网88av | 亚洲色影爱久久精品 | 国产精品久久久久久久久久久久久 | 91福利影院在线观看 | 国产精品久久久久久69 | 日韩欧美精品在线观看视频 | 五月婷婷视频 | 最近中文字幕大全中文字幕免费 | 国产精品入口麻豆 | 亚洲高清视频一区二区三区 | 婷婷中文字幕综合 | 蜜桃av人人夜夜澡人人爽 | 黄色免费网站下载 | 欧美一级性生活视频 | 色婷婷骚婷婷 | 丁香九月激情综合 | 色婷丁香 | 国产一二区在线观看 | 亚在线播放中文视频 | 麻豆免费在线播放 | 一本一道波多野毛片中文在线 | 国产流白浆高潮在线观看 | 97天天综合网 | 91看片在线免费观看 | 精品久久久精品 | 在线国产日韩 | 天天夜操 | av一级久久 | 在线之家免费在线观看电影 | 国产精品一二三 | 国产午夜精品一区二区三区欧美 | 蜜臀一区二区三区精品免费视频 | 午夜精品久久久久久久久久久久久久 | 韩国三级在线一区 | 91污在线观看 | 中文在线a在线 | 国产精品18久久久久久久网站 | 国产日韩中文字幕 | 久久久影院官网 | 亚洲精品国产精品国自产在线 | 天堂在线免费视频 | 国产成人久久77777精品 | 国产99久久久精品视频 | 国产小视频网站 | 五月综合激情婷婷 | 天堂在线v | 99久久日韩精品视频免费在线观看 | 免费色婷婷 | 色婷婷激情网 | 成人资源在线播放 | 日韩一级理论片 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产成人久久久77777 | 激情婷婷亚洲 | 91正在播放 | 又湿又紧又大又爽a视频国产 | aaa日本高清在线播放免费观看 | 4438全国亚洲精品观看视频 | 免费观看成人网 | 欧美日韩久久一区 | 精选久久 | 久久国产热 | 99av在线视频 | 日韩在线| 18av在线视频 | 国产精品免费视频久久久 | 国产91丝袜在线播放动漫 | 一区二区精品在线观看 | 欧美一级电影片 | 激情综合五月天 | 色综合久久久久久久久五月 | 色婷婷激情电影 | 天天天天综合 | 午夜精品一区二区三区在线播放 | 免费国产在线精品 | 亚洲精品人人 | 夜夜躁狠狠躁日日躁 | 久久久精品小视频 | 91精品国产欧美一区二区成人 | 日日日爽爽爽 | 国产一区免费在线观看 | 国产三级久久久 | 正在播放一区二区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产精品入口久久 | 九九有精品 | 日韩精品一区电影 | 午夜成人免费电影 | 免费黄色av. | 91精品一区二区三区久久久久久 | 国产无套精品久久久久久 | 久久成人综合 | 色综合 久久精品 | 日日爽日日操 | 久久午夜精品影院一区 | 亚洲成人精品在线 | 五月婷婷色播 | 天天干天天操天天入 | 香蕉视频网站在线观看 | 久久视频免费在线 | 在线观看黄网 | 一区二区不卡高清 | 美女免费网站 | 天天激情站 | 亚洲手机天堂 | av在线免费观看网站 | 亚洲狠狠 | 在线日韩视频 | 97涩涩视频 | 天天爽夜夜爽人人爽曰av | 亚洲自拍偷拍色图 | 午夜精品久久久久 | 久久精品视频在线观看免费 | 西西444www大胆高清图片 | 成人理论在线观看 | 日韩草比 | 国产一区福利在线 | 99精品视频在线 | 在线av资源 | 国产视频一区在线免费观看 | 亚洲日日射| 国内精品亚洲 | 亚洲天堂网视频在线观看 | 久久久久伦理电影 | 婷婷综合五月天 | 国产分类视频 | 天天操天天谢 | 伊在线视频| 久久精品中文字幕一区二区三区 | 国产高清av免费在线观看 | 黄网在线免费观看 | 又黄又网站 | 日韩中文字幕一区 | 中文字幕在线看视频国产中文版 | 偷拍福利视频一区二区三区 | 久久人人爽视频 | 日韩系列| 婷婷国产一区二区三区 | 久久你懂的 | 天天久久综合 | 成人黄色在线观看视频 | 久草免费在线观看 | 色天天久久 | 热久久国产 | 亚洲国产精品成人综合 | 免费视频国产 | 天堂在线一区二区 | 叶爱av在线| 东方av在| 波多野结衣一区二区三区中文字幕 | 久久综合免费 | 国产美女被啪进深处喷白浆视频 | 久久免费视频2 | 欧美色一色 | 日韩一区二区三免费高清在线观看 | 精品主播网红福利资源观看 | 在线www色| 亚洲欧洲国产视频 | 亚洲视频在线免费观看 | www久久九| 精品国产理论 | 精品少妇一区二区三区在线 | 日本中文字幕电影在线免费观看 | 久久久久久网站 | 亚洲精品在线免费 | 国产午夜三级一区二区三桃花影视 | 看国产黄色片 | 亚洲成人网在线 | 夜夜爽夜夜操 | 永久免费精品视频网站 |