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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于M D K RTX的COrtex―M3多任務(wù)應(yīng)用設(shè)計(jì)

          基于M D K RTX的COrtex―M3多任務(wù)應(yīng)用設(shè)計(jì)

          作者: 時(shí)間:2009-01-19 來(lái)源:網(wǎng)絡(luò) 收藏

          一般情況下,切換由時(shí)間片控制,但有時(shí)需要用事件控制切換。RL―事件主要有超時(shí)(Timeout)、間隔(Interval)和信號(hào)(Signal)三種。
          Timeout:掛起運(yùn)行指定數(shù)量的時(shí)鐘周期,調(diào)用OS_DLY_WAIT函數(shù)的任務(wù)將被掛起,直到延時(shí)結(jié)束才返回到Ready狀態(tài),并可被再次執(zhí)行。延時(shí)時(shí)間由SysTick衡量,可以設(shè)置從1至OxFFFE的任何值。
          Interval:時(shí)間間隔,任務(wù)在該時(shí)間間隔中不運(yùn)行,該時(shí)問(wèn)間隔與任務(wù)執(zhí)行時(shí)間獨(dú)立。
          Signal:用于任務(wù)間通信,可以用系統(tǒng)函數(shù)進(jìn)行置位或復(fù)位。如果一個(gè)任務(wù)調(diào)用了wait函數(shù)等待Signal未置位,則該任務(wù)被掛起直到Signal置位,才返回READY狀態(tài),可再被執(zhí)行。
          RL―中主要的系統(tǒng)函數(shù)說(shuō)明如表2所列。

          RL―為每個(gè)任務(wù)都分配了一個(gè)單獨(dú)的堆棧區(qū),各個(gè)任務(wù)所用堆棧位置是動(dòng)態(tài)的,用task_id記錄各堆棧棧底位置。有多個(gè)嵌套子程序調(diào)用或使用大量的動(dòng)態(tài)變量時(shí),自由空間會(huì)被用完。使能棧檢查(Stack Checking),系統(tǒng)會(huì)執(zhí)行OS_STK_0VERFLOW()堆棧錯(cuò)誤函數(shù)進(jìn)行堆棧出錯(cuò)處理。RL―RTX堆棧管理如圖2所示。

          RL―RTX選擇Cortex上定時(shí)器1產(chǎn)生周期性中斷,相鄰中斷之間的時(shí)間就是時(shí)間片的長(zhǎng)度。在其中斷服務(wù)程序中進(jìn)行任務(wù)調(diào)度,并判斷執(zhí)行了延遲函數(shù)的任務(wù)的延時(shí)時(shí)間是否到。這種周期性的中斷形成了RL―RTX的時(shí)鐘節(jié)拍。采用Cortex―的處理器ST2F103VB的CPU時(shí)鐘頻率為72 MHz,VPBDIV分頻值為4,輸出的時(shí)鐘頻率為18 MHz。系統(tǒng)推薦的時(shí)間片為1~lOO ms。
          使用RL―RTX,包含以下幾個(gè)步驟:
          第1步,由于RL―RTX集成在MDK開(kāi)發(fā)套件中,在使用MDK創(chuàng)建工程后,需要在工程中添加RTX內(nèi)核選項(xiàng)。選擇Project→Options for Target,在Operating下拉框中選擇RTX內(nèi)核,使得在編譯時(shí)把RL―RTX所需的庫(kù)編譯進(jìn)去。
          第2步,在嵌入式程序的開(kāi)發(fā)中使用RL―RTX內(nèi)核,須對(duì)其進(jìn)行配置。復(fù)制\Keil\ARM\Startup目錄下RTX_Config.c文件到工程文件夾并添加到工程中。該文件中,部分配置參數(shù)說(shuō)明如表3所列。

          Cortex―平臺(tái)的超溫報(bào)警器,可以3個(gè)任務(wù)并發(fā),分別進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)顯示。3個(gè)任務(wù)較小,系統(tǒng)安排的任務(wù)棧足夠使用,棧的容量以32位無(wú)符號(hào)整型定義,容量為64字。選擇硬件平臺(tái)片上定時(shí)器1。
          DSl8820具有300 ms的更新速率,在采集數(shù)據(jù)過(guò)程中,通過(guò)多次采集取平均值,數(shù)據(jù)采集任務(wù)執(zhí)行的時(shí)間為30 ms,數(shù)據(jù)處理任務(wù)執(zhí)行時(shí)間為40 ms,數(shù)據(jù)顯示任務(wù)執(zhí)行時(shí)間為20 ms。根據(jù)公式,對(duì)響應(yīng)時(shí)間的要求:t(響應(yīng)時(shí)間)=N(進(jìn)程數(shù)目)×q(時(shí)間片)??傮w響應(yīng)時(shí)間為90 ms,進(jìn)程數(shù)目為3,因此時(shí)間片設(shè)置為30 ms合適。在任務(wù)OS_IDLE_DEMON()中添加休眠代碼,空閑時(shí)系統(tǒng)休眠,降低功耗。
          第3步,復(fù)制\Keil\ARM\Startup下Retarget.c文件到工程文件夾中,并添加到工程中。

          修改文件,使其包含如下內(nèi)容:



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