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

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

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

linux操作系統文章專題:linux操作系統詳解(linux不再難懂)









評論