久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ucos 任務的基本概念

 心不留意外塵 2016-05-12

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

2013

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

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

2:ucos中線程的結構
main是一個程序的入口,而ucos中的任務什么時間運行,,合適中斷是由ucos中的任務調度程序來完成,。ucos應用程序的通用結構如下:

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

增長方式的不同任務函數(shù)的創(chuàng)建的時候也不同,。
在任務創(chuàng)建函數(shù)OSTaskCreate()中的OSTaskStkInit()函數(shù)來初始化任務的堆棧,,此函數(shù)將任務處理函數(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ù)體體與下面的寄存器對應,。

0

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多