嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的移植實例
3.2 修改OS_CPU_C.C文件
3.2.1 任務堆棧初始化
修改OSTaskStkInit()函數(shù),OSTaskStkInit()由任務創(chuàng)建函數(shù)OSTaskCreate()或OSTaskCreateExT()調用,用來初始化任務的堆棧。OS Task StkInit()與調用它的函數(shù)由3個參數(shù)進行傳遞:任務代碼起始地址(task),參數(shù)指針(p_arg),任務堆棧頂?shù)刂?ptos)。

后5個函數(shù)為鉤子函數(shù),如無特殊需求可以不加代碼。
3.2.2 中斷級任務切換函數(shù)
OSIntCtxSw()函數(shù)通過設置一個全局變量OSIntCtxSwFlag標志以表示在中斷服務程序中進行任務切換,并在OSTickISR()中判斷該變量以進行正確的動作。

3.3 修改OS_CPU_A.ASM文件
在此文件中需改寫4個函數(shù):OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()和OSTickISR()。
3.3.1 OSStartHighRdy()函數(shù)
該函數(shù)由OSStart()調用,功能是運行優(yōu)先級最高的就緒任務,其代碼如下:


評論