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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μCOSII在基于Cortex-M3核的ARM處理器上的移植

          μCOSII在基于Cortex-M3核的ARM處理器上的移植

          作者: 時(shí)間:2009-03-27 來源:網(wǎng)絡(luò) 收藏

          該例中在調(diào)用OSStart后,操作系統(tǒng)發(fā)現(xiàn)任務(wù)Taskl的優(yōu)先級(jí)最高,于是操作系統(tǒng)就調(diào)度任務(wù)Taskl使其投入運(yùn)行,而任務(wù)Task2暫時(shí)不能獲得的使用權(quán)。任務(wù)Taskl首先點(diǎn)亮一個(gè)LED,然后延時(shí)一段時(shí)間,當(dāng)運(yùn)行到OSTimeDly處時(shí),該任務(wù)被掛起而處于等待狀態(tài),此時(shí)任務(wù)Task2成為優(yōu)先級(jí)最高的就緒態(tài)任務(wù),于是操作系統(tǒng)調(diào)度Task2運(yùn)行。當(dāng)5個(gè)時(shí)鐘節(jié)拍的延時(shí)時(shí)間結(jié)束時(shí),系統(tǒng)時(shí)間節(jié)拍中斷服務(wù)子程序會(huì)重新將任務(wù)Taskl置于就緒狀態(tài),此時(shí)任務(wù)Taskl再一次成為優(yōu)先級(jí)最高的就緒態(tài)任務(wù),于是操作系統(tǒng)保存任務(wù)Task2的狀態(tài),并恢復(fù)任務(wù)Taskl的狀態(tài)使其又一次獲得的使用權(quán)。此后程序執(zhí)行過程將重復(fù)上述步驟??梢钥吹?,在這個(gè)例子中的現(xiàn)象是某個(gè)LED燈不停的閃爍。
          μCOS―II操作系統(tǒng)內(nèi)核是實(shí)時(shí)可剝奪型的,這意味著在任務(wù)執(zhí)行過程中或中斷服務(wù)子程序中,一旦有一個(gè)新的更高優(yōu)先級(jí)的任務(wù)就緒,內(nèi)核將立刻調(diào)度此新任務(wù)運(yùn)行,這說明響應(yīng)任務(wù)的時(shí)間是即刻的、確定的。
          綜上所述,操作系統(tǒng)的應(yīng)用程序開發(fā)過程相對(duì)于以往傳統(tǒng)應(yīng)用程序開發(fā)大為簡(jiǎn)化而且任務(wù)級(jí)響應(yīng)時(shí)間也得到最優(yōu)化。

          本文引用地址:http://www.ex-cimer.com/article/152559.htm


          4 結(jié)束語
          通過將過程中修改的μCOS―II內(nèi)核代碼與上述例子中的應(yīng)用程序代碼在μVision3集成開發(fā)環(huán)境中編輯整合后進(jìn)行編譯、鏈接并且下載到目標(biāo)硬件平臺(tái)進(jìn)行長(zhǎng)時(shí)間觀察,發(fā)現(xiàn)LED不停的閃爍,說明本過程是成功的。

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

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(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); })();