應用程式中函式的呼叫關係
#include「includes.h」
#define task_stk_size 512 //
定義堆疊長度
(1024位元組)
os_stk taskstk[task_stk_size]; //
定義乙個陣列來作為任務堆疊
檔案中的
osinit()函式
2全域性變數的說明
uc/os-ii
初始化了
5個空的資料結構緩衝區,每個緩衝區都是單向鍊錶,允許
uc/os-ii
從緩衝區中迅速取得或釋放乙個緩衝區中的元素。
圖3五個空的資料結構緩衝區
圖4os_task.c
中的ostaskcreate ()函式
任務堆疊初始化就是對棧頂指標和暫存器進行初始化,
ostaskstkinit
()函式的定義在
os_cpu_c.c
檔案中。
os_tcbinit( )
就是對結構體
typedef struct os_tcb
os_tcb;
進行初始化。
圖5os_task.c
中的ostaskcreateext()函式
任務的排程函式
os_sched
()如下:
voidos_sched (void)
}os_exit_critical();}在
os_cpu.h
中找到:
#defineos_task_sw()asmintucos
但沒找到具體**。
os_task_sw()
的主要工作:
把被中止任務的斷點指標儲存到任務堆疊中;
把cpu
通用暫存器的內容儲存到任務堆疊中;
把被中止任務的任務堆疊指標儲存到該任務的任務控制塊的
ostcbstkptr
中;獲得待執行任務的任務控制塊;
使cpu
通過任務控制塊獲得待執行任務的任務堆疊指標;
把待執行任務堆疊中通用暫存器的內容恢復到
cpu的通用暫存器中;
使cpu
獲得待執行任務的斷點指標(該指標是待執行任務在上一次被排程器中止執行時保留在任務堆疊中的)。
圖6os_core.c
檔案中的
osstart()函式
在os_core.c
檔案中有
osstart ()
的定義。
voidosstart (void)
} os_cpu_a.asm
中找到了
osstarthighrdy()
的彙編**,求解釋?
uC OS II的應用程式的基本結構以及注意事項
應用uc os ii,自然要為它開發應用程式,下面論述基於uc os ii的應用程式的基本結構以及注意事項。void task void pdata 以上就是基本結構,至於為什麼要寫成無限迴圈的形式呢?那是因為系統會為每乙個任務保留乙個堆疊空間,由系統在任務切換的時候換恢復上下文,並執行一條reti...
在UC OS II上開發應用程式的起步資訊
1 可以直接使用 ucos lib.a uc os ii 在ads 上的函式庫 來進行各種函式操作,比如 lcd printf hello world n 等,詳情見桌面 基於 ucos 作業系統的 api函式 chm 2 發現在 uc os 核心中有 taskchangeprio 函式,可以改變優...
uCos II原理與ARM應用程式設計(一)
1 將ucos ii移植到arm9開發板上 1 搞清應用程式 user子目錄 ucos ii核心檔案 ucosii目錄 移植檔案 ports子目錄 和bsp ports子目錄 之間的關係。2 移植檔案 ports子目錄檔案 介紹 bsp.c os cpu excepthndlr 使用者編寫的中斷處理...