嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的移植實例
3.3.2 OSCtxSw()函數(shù)
此函數(shù)用以實現(xiàn)任務(wù)級的切換,實現(xiàn)由低優(yōu)先級任務(wù)向高優(yōu)先級任務(wù)切換。此函數(shù)被任務(wù)調(diào)度函數(shù)OS_Sched()調(diào)用,實現(xiàn)任務(wù)切換,其代碼如下:
3.3.3 OSIntCtxSw()函數(shù)
該函數(shù)的作用是在時鐘中斷服務(wù)例程中發(fā)現(xiàn)有高優(yōu)先級任務(wù)等待的時鐘信號到來時,則在中斷退出后并不返回被中斷任務(wù),而是直接調(diào)度就緒的高優(yōu)先級任務(wù)執(zhí)行,這樣做能夠盡快地讓高優(yōu)先級的任務(wù)得到響應(yīng),保證系統(tǒng)的實時性能。
OSIntCtxSw()函數(shù)中大部分代碼同OSCtxSw()函數(shù)是一樣的,區(qū)別只是,需要保存中斷模式下的堆棧,在切換到用戶模式下運行新任務(wù)。
3.3.4 OSTickISR()函數(shù)
OSTickISR()是μC/OS-Ⅱ的時鐘節(jié)拍函數(shù),主要實現(xiàn)任務(wù)的切換,其代碼如下:
4 測試移植代碼
上述的移植工作是最基本的內(nèi)容,除此之外,還要加上硬件初始化和相應(yīng)的配置文件。
為了驗證μC/OS-Ⅱ移植成功,需要測試移植代碼。首先不加任何應(yīng)用代碼來測試移植好的μC/OS-Ⅱ,也就是說先測試內(nèi)核自身的運行情況是否良好。
內(nèi)核運行良好時,通過以下4個步驟測試移植代碼的運行:
(1)確保C編譯器、匯編編譯器和連接器的正常工作;
(2)驗證OSTaskStkInit()和OSStartHighRdy()函數(shù)的正確運行;
(3)驗證OSCtxSw()函數(shù);
(4)驗證OSIntCtxSw()和OSTickIsr()函數(shù)的正確運行。
若全部能夠正常運行,那就是移植的μC/OS-Ⅱ已經(jīng)能夠正常的工作了,可以添加應(yīng)用任務(wù)了。
5 結(jié)語
嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的使用使得程序的可讀性、可靠性、可擴展性有很大的改善。本文從實際出發(fā),給出源代碼開放嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在微處理器LH79520上的移植方案,移植后的操作系統(tǒng)順利經(jīng)過測試,運行穩(wěn)定,并達到了實時系統(tǒng)的要求。本文引用地址:http://m.butianyuan.cn/article/149287.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論