<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的移植實例

          嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的移植實例

          作者: 時間:2012-04-05 來源:網(wǎng)絡(luò) 收藏

          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ù)切換,其代碼如下:
          i.JPG
          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/Ⅱ的時鐘節(jié)拍函數(shù),主要實現(xiàn)任務(wù)的切換,其代碼如下:
          j.JPG
          k.JPG

          4 測試代碼
          上述的工作是最基本的內(nèi)容,除此之外,還要加上硬件初始化和相應(yīng)的配置文件。
          為了驗證μC/成功,需要測試移植代碼。首先不加任何應(yīng)用代碼來測試移植好的μC/Ⅱ,也就是說先測試內(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é)語
          μC/OS-Ⅱ的使用使得程序的可讀性、可靠性、可擴展性有很大的改善。本文從實際出發(fā),給出源代碼開放μC/OS-Ⅱ在微處理器LH79520上的移植方案,移植后的順利經(jīng)過測試,運行穩(wěn)定,并達到了實時系統(tǒng)的要求。

          本文引用地址:http://www.ex-cimer.com/article/149287.htm
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 4 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();