1. C可執行代碼結構
(1)代碼段.text:存放CPU執行的機器指令,通常.text是可共享且只讀的。
(2)數據段.data:.rodata(常量數據)、.rwdata(已初始化全局變量、靜態變量)。
(3)未初始化數據段.bss:未初始化的全局變量、靜態變量。
(4)棧.stack:存放函數參數、局部變量及任務切換時的上下文。
(5)堆.heap:用於動態內存分配。
2. 任務結構
在uC/OS-II中,任務是事件運行和管理的基本單元。一個uC/OS-II任務至少包含程序代碼、棧和TCB,還可選擇性使用相當於堆的動態內存空間。程序運行時,uC/OS-II中的任務相當於可執行代碼(可單獨運行的單元)。
uC/OS-II任務的各部分如何管理???
3. 任務棧
任務棧數據類型:typedef unsigned short OS_STK
任務棧增長方向:#define OS_STK_GROWTH 0/1
任務棧基本功能:???
4. 任務控制塊
(1) TCB描述
主要用來存儲任務的當前屬性。(問:任務第一次被調度時,該如何運行?)
(2) TCB主要成員
任務棧空間位置:OSTCBStkPtr、OSTCBStkBottom、OSTCBStkSize;
任務通信與同步:OSTCBEventPtr、OSTCBMsg;
任務事件組標誌:OSTCBFlagNode、OSTCBFlagsRdy;
任務等待/阻塞:OSTCBDly、OSTCBPendTO;
任務當前狀態:OSTCBStat;
任務優先級:OSTCBPrio;
(3)TCB全局變量
OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];
OS_EXT OS_TCB OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
OS_EXT OS_TCB *OSTCBFreeList;
OS_EXT OS_TCB *OSTCBList;
OS_EXT OS_TCB *OSTCBHighRdy;
OS_EXT OS_TCB *OSTCBCur;
5. 任務狀態切換
6. 任務管理函數
OS_TASK.C:11個函數
OSTaskCreate();
OSTaskCreateExt();
OSTaskDel();
OSTaskDelReq();
OSTaskChangePrio();
OSTaskSuspend();
OSTaskResume();
OSTaskNameGet();
OSTaskNameSet();
OSTaskStkChk();
OS_TaskStkClr();
OSTaskQuery();