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

          新聞中心

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

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

          作者: 時間:2012-09-07 來源:網(wǎng)絡(luò) 收藏
            1 RL—RTX和COrtex—M3概述

            開發(fā)套件源自德國Keil公司,是ARM公司目前最新推出的針對各種嵌入式處理器的軟件開發(fā)工具。RL—IUX是一個實時操作系統(tǒng)(RTOS)內(nèi)核,完全集成在MDK編譯器中。廣泛應(yīng)用于ARM7、ARM9和Cortex-M3設(shè)備中。它可以靈活解決多任務(wù)調(diào)度、維護和時序安排等問題。基于RL—I訂X的程序由標準的C語言編寫,由Real—View編譯器進行編譯。操作系統(tǒng)依附于C語言使聲明函數(shù)更容易,不需要復(fù)雜的堆棧和變量結(jié)構(gòu)配置,大大簡化了復(fù)雜的軟件設(shè)計,縮短了項目開發(fā)周期。

            Cortex—M3是一個32位的核。它是首個基于ARMv7M架構(gòu),主要針對價格敏感但又具備高系統(tǒng)效能需求的嵌入式應(yīng)用設(shè)計,如微控制器、汽車車體系統(tǒng)及網(wǎng)絡(luò)裝置等。它內(nèi)核緊湊,性能更高,采用了Thumb一2指令集架構(gòu),中斷時間更短,標準化內(nèi)存映射,帶有內(nèi)置SysTick的集成式NVIC。SysTick能定期地產(chǎn)生異常請求,作為系統(tǒng)的時基,計時更準確。

            MDK RL—RTX和Cortex—M3都源自ARM公司。ARM公司將其無縫整合在MDK開發(fā)套件中,因此將RL—RTX移植到Cortex—M3上非常適合。RL—RTX作為一個全功能的內(nèi)核,可以結(jié)合實時軟件庫中的其他組件。例如,加入實時庫中RL—Flasht文件系統(tǒng)組件,就可以讀寫標準SD卡和MMC卡上面的文件;加入RL—TCPnet組件,可應(yīng)用于HTTP Web,ServeI’、TFTP Server和SMTP Client等。可擴展性強,應(yīng)用廣泛。

            2 基于COrtex—M3硬件平臺的構(gòu)建

            STM32F103VB是ST公司基于Cortex—M3的處理器。它有1個128 KB Flash,1個20 KB SRAM,4個16位定時器,100個可編程的I/0引腳,具有I2C、SPI、USB、15SART和CAN接口,2路10通道12位A/D轉(zhuǎn)換器,RTC功能模塊,WDT功能和高級電源管理功能。

            系統(tǒng)的數(shù)據(jù)緩存RAM和程序存儲器Flash為芯片自帶,系統(tǒng)外接A/D轉(zhuǎn)換器構(gòu)成控制器?;贑ortex-M3核的最小系統(tǒng)框圖如圖1所示。

            基于該平臺,設(shè)計一個超溫報警器。使用美國半導(dǎo)體Dalias公司的智能溫度傳感器DS18820采樣,LCD顯示溫度數(shù)值,如果短時間內(nèi)溫度超出正常溫度,蜂鳴器發(fā)出100 dB警報且LED燈閃爍示警??梢赃M一步在該平臺上進行擴展,加入GPS和GPRS模塊,當(dāng)溫度超出設(shè)定范圍時,GPS將現(xiàn)場經(jīng)緯度以及時間通過GPRS以短信方式發(fā)送給監(jiān)控中心,GPRS模塊自動撥打有關(guān)人員移動電話或固定電話報警。

            3 MDK RL—RTX的配置與移植

            RL—RTX在任務(wù)管理方面不僅支持搶先式任務(wù)切換,而且支持時間片輪轉(zhuǎn)切換。在基于時間片的輪轉(zhuǎn)任務(wù)機制下,CPIJ的執(zhí)行時間被劃分為若干時間片,由RL—RTX分配一個時間片給每個任務(wù),在該時間片內(nèi)只執(zhí)行這個任務(wù)。當(dāng)時間片到,在下一個時間片中無條件地執(zhí)行另外一個任務(wù)。所有任務(wù)都輪詢一次后,再回頭執(zhí)行第一個任務(wù)。

            RL—RTX最多可以定義256個任務(wù),所有任務(wù)都可以同時激活成為就緒態(tài)。RL—RTX用戶任務(wù)具有表1所列的幾個狀態(tài)。

            一般情況下,任務(wù)切換由時間片控制,但有時需要用事件控制任務(wù)切換。RL—RTX事件主要有超時(Timeout)、間隔(Interval)和信號(Signal)三種。

            Timeout:掛起運行任務(wù)指定數(shù)量的時鐘周期,調(diào)用OS_DLY_WAIT函數(shù)的任務(wù)將被掛起,直到延時結(jié)束才返回到Ready狀態(tài),并可被再次執(zhí)行。延時時間由SysTick衡量,可以設(shè)置從1至OxFFFE的任何值。

            Interval:時間間隔,任務(wù)在該時間間隔中不運行,該時問間隔與任務(wù)執(zhí)行時間獨立。

            Signal:用于任務(wù)間通信,可以用系統(tǒng)函數(shù)進行置位或復(fù)位。如果一個任務(wù)調(diào)用了wait函數(shù)等待Signal未置位,則該任務(wù)被掛起直到Signal置位,才返回READY狀態(tài),可再被執(zhí)行。

            RL—RTX中主要的系統(tǒng)函數(shù)說明如表2所列。

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


          上一頁 1 2 下一頁

          評論


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