九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ucos 任務(wù)的基本概念

http://blog.csdn.net/suiyuan19840208/article/details/15337949

2013

1:ucos任務(wù)的組成
 A:任務(wù)處理函數(shù)
 B: 任務(wù)堆棧
 C:任務(wù)控制塊
 其可以使用下面的圖來表示任務(wù)的構(gòu)成,


PC的值總是帶藥執(zhí)行的指令的地址,反映了一個程序的運行進度。
具有私有空間的任務(wù)叫進程,沒有私有空間的任務(wù)叫:線程,ucos中的所有任務(wù)都是線程。
ucos中使用任務(wù)鏈表來記錄系統(tǒng)的創(chuàng)建的任務(wù),其結(jié)構(gòu)如下:

2:ucos中線程的結(jié)構(gòu)
main是一個程序的入口,而ucos中的任務(wù)什么時間運行,合適中斷是由ucos中的任務(wù)調(diào)度程序來完成。ucos應(yīng)用程序的通用結(jié)構(gòu)如下:

其中OSTaskCreate()用來創(chuàng)建ucos中的線程,OSStart()用來啟動線程,現(xiàn)在啟動之后,線程的調(diào)度由操作系統(tǒng)來完成。
3:ucos中的優(yōu)先級
在系統(tǒng)當有多個并發(fā)任務(wù)需要同時運行的時候,操作系統(tǒng)必須從并發(fā)的多個任務(wù)中選取一個運行,在ucos中,使用優(yōu)先級的方式,即對通過OSTaskCreate()創(chuàng)建的每一個task分配一個唯一的優(yōu)先級來標識任務(wù)的重要程度?,F(xiàn)在ucso中支持256的任務(wù),ucos中任務(wù)的優(yōu)先級用一個數(shù)據(jù)來標識,數(shù)字越小表示任務(wù)的優(yōu)先級越高。系統(tǒng)通過
#define OS_LOWEST_PRIO           31    /* Defines the lowest priority that can be assigned ...    */定義最小優(yōu)先級。
#define OS_MAX_TASKS             20    /* Max. number of tasks in your application, MUST be >= 2  */定義了系統(tǒng)最多任務(wù)的個數(shù)。
4:ucos任務(wù)堆棧
所謂堆棧就是在寄存器中按照數(shù)據(jù)的“后進先出”的原則組織的連續(xù)存儲空間。用來在任務(wù)進行切換或者中斷的時候保存CPU寄存器中的內(nèi)容。ucso中每一個任務(wù)的任務(wù)控制塊中都有一個指向其任務(wù)堆棧的指針。
ucso中定義了宏變量
typedef unsigned int   OS_STK;                   /* Each stack entry is 32-bit wide                    */
比如一個任務(wù)為自己定義的堆棧大小為:static OS_STK   TcpServerStack[TCPMULTISERVER_STK_SIZE];
此處定義的任務(wù)堆棧數(shù)據(jù)將傳入OSTaskCreate()函數(shù)中,需要注意不同的CPU有不同棧增長方式。

增長方式的不同任務(wù)函數(shù)的創(chuàng)建的時候也不同。
在任務(wù)創(chuàng)建函數(shù)OSTaskCreate()中的OSTaskStkInit()函數(shù)來初始化任務(wù)的堆棧,此函數(shù)將任務(wù)處理函數(shù)的指針放入到PC寄存器。
OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt)
{
    OS_STK *stk;
    (void)opt;                                   /* 'opt' is not used, prevent warning                 */
    stk       = ptos;                            /* Load stack pointer                                 */

                                                 /* Registers stacked as if auto-saved on exception    */
    *(stk)    = (INT32U)0x01000000L;             /* xPSR                                               */
    *(--stk)  = (INT32U)task;                    /* Entry Point PC                                       */
    *(--stk)  = (INT32U)0xFFFFFFFEL;             /* R14 (LR) (init value will cause fault if ever used)*/
    *(--stk)  = (INT32U)0x12121212L;             /* R12                                                */
    *(--stk)  = (INT32U)0x03030303L;             /* R3                                                 */
    *(--stk)  = (INT32U)0x02020202L;             /* R2                                                 */
    *(--stk)  = (INT32U)0x01010101L;             /* R1                                                 */
    *(--stk)  = (INT32U)p_arg;                   /* R0 : argument                                      */

                                                 /* Remaining registers saved on process stack         */
    *(--stk)  = (INT32U)0x11111111L;             /* R11                                                */
    *(--stk)  = (INT32U)0x10101010L;             /* R10                                                */
    *(--stk)  = (INT32U)0x09090909L;             /* R9                                                 */
    *(--stk)  = (INT32U)0x08080808L;             /* R8                                                 */
    *(--stk)  = (INT32U)0x07070707L;             /* R7                                                 */
    *(--stk)  = (INT32U)0x06060606L;             /* R6                                                 */
    *(--stk)  = (INT32U)0x05050505L;             /* R5                                                 */
    *(--stk)  = (INT32U)0x04040404L;             /* R4                                                 */
    return (stk);
}
函數(shù)體體與下面的寄存器對應(yīng)。

0
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
uCOS-II 任務(wù)控制塊
Qsys與uCOS學習筆記3:Hello uC/OS
UCOSIII任務(wù)管理I
uCOS II的移植步驟
移植時的一些概念
STM32F103綜合3
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服