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