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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM9和μC/OSII的多頻道數(shù)據(jù)采集系統(tǒng)的智能化設(shè)計(jì)

          基于ARM9和μC/OSII的多頻道數(shù)據(jù)采集系統(tǒng)的智能化設(shè)計(jì)

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


          圖3 各個(gè)頻段內(nèi)部命令

          3.1 任務(wù)優(yōu)先級設(shè)置及采樣任務(wù)優(yōu)先級動(dòng)態(tài)調(diào)度

          μC/OSII操作系統(tǒng)是基于優(yōu)先級的搶占式操作系統(tǒng),所有任務(wù)必須有各自獨(dú)立且唯一的優(yōu)先級[1]。命令掃描和數(shù)據(jù)顯示分別設(shè)置為最高優(yōu)先級和最低優(yōu)先級。掃描函數(shù)的最高優(yōu)先級可以確保隨時(shí)對用戶命令進(jìn)行響應(yīng),而顯示任務(wù)由于其運(yùn)行速速慢,將其設(shè)置為最低優(yōu)先級。只要系統(tǒng)設(shè)計(jì)合理,適當(dāng)避免低優(yōu)先級任務(wù)的饑餓現(xiàn)象,即可實(shí)現(xiàn)將用戶有效信息顯示輸出。

          內(nèi)部優(yōu)先級設(shè)置規(guī)則是,低頻段、中頻段、高頻段3個(gè)頻段的任務(wù)之間優(yōu)先級依次遞減。低頻段的采樣周期明顯比高頻段長,在低頻段數(shù)據(jù)采集的空閑時(shí)間里系統(tǒng)可以順利地將CPU使用權(quán)切換給其他任務(wù),使其他任務(wù)得到CPU使用權(quán)并執(zhí)行。每個(gè)頻段內(nèi)部的各個(gè)任務(wù)的優(yōu)先級從采樣到數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)提交依次遞減。
          為了使得整個(gè)系統(tǒng)實(shí)現(xiàn)優(yōu)先級動(dòng)態(tài)調(diào)度也可以修改其他采樣參數(shù),在軟件設(shè)計(jì)時(shí)將所有頻段采樣任務(wù)的優(yōu)先級、采樣周期以全局變量的形式在進(jìn)入操作系統(tǒng)之前進(jìn)行設(shè)置,并將其定義為volatile格式分配獨(dú)立的變量存儲(chǔ)地址。而后設(shè)立獨(dú)立的掃描任務(wù),來專門完成這些參數(shù)的判斷、修改、存儲(chǔ)和動(dòng)態(tài)更新。這樣便使得系統(tǒng)除了可以按照根據(jù)采樣周期設(shè)計(jì)的初始化優(yōu)先級和初始化參數(shù)運(yùn)行外,還可以依據(jù)用戶自身需要對各個(gè)頻段、各個(gè)通道的采樣任務(wù)優(yōu)先級以及采樣頻率進(jìn)行設(shè)置和修改。修改完并確認(rèn)后,修改任務(wù)會(huì)保存、更新當(dāng)前系統(tǒng)工作參數(shù)并退出操作系統(tǒng),而后重新啟動(dòng)并初始化,整個(gè)采集系統(tǒng)將按照全新的狀態(tài)開始工作。當(dāng)然,在這里用戶優(yōu)先級和采樣周期設(shè)置是受限的,必須符合上文提及的優(yōu)先級規(guī)則及各個(gè)頻段對采樣周期的要求。

          3.2 任務(wù)時(shí)限設(shè)置

          為了對整個(gè)系統(tǒng)的時(shí)間調(diào)度進(jìn)行優(yōu)化,首先說明幾個(gè)內(nèi)部工作時(shí)間。i386體系和Linux2.5內(nèi)核中操作系統(tǒng)節(jié)拍率都設(shè)置為1000 Hz[2]。在這里將μC/OSII操作系統(tǒng)調(diào)度時(shí)間OS_TICKS_PER_SEC也設(shè)置為1000,也就是說操作系統(tǒng)的任務(wù)調(diào)度以ms為單位。內(nèi)核CPU工作頻率設(shè)置為400 MHz,即CPU機(jī)械周期以ns為單位。外設(shè)包括上位機(jī)命令掃描和上位機(jī)、下位機(jī)顯示部分工作都以s為單位。μC/OSII系統(tǒng)中任務(wù)切換、調(diào)度及延時(shí)都以系統(tǒng)節(jié)拍率為單位,而內(nèi)部代碼的運(yùn)行是以機(jī)械周期為單位。內(nèi)部任務(wù)時(shí)限可以以節(jié)拍律為單位,也可以以實(shí)時(shí)時(shí)間為基準(zhǔn),獲得一個(gè)絕對時(shí)間差。

          單個(gè)采樣任務(wù)通道內(nèi)部只有采樣任務(wù)需要時(shí)限設(shè)置。為了達(dá)到智能化,用消息隊(duì)列的等待延時(shí)替代了采樣任務(wù)時(shí)限,而該延時(shí)便是本通道的采樣周期。其他的后續(xù)任務(wù)包括內(nèi)存開辟、數(shù)據(jù)處理、數(shù)據(jù)發(fā)送,都依次等待上一級任務(wù)消息,受上一級任務(wù)鉗制不設(shè)置任務(wù)時(shí)限。顯示任務(wù)時(shí)限按ms設(shè)置為絕對時(shí)間差。

          3.3 針對外設(shè)的時(shí)間優(yōu)化

          針對命令掃描和解析任務(wù),將其設(shè)置為中斷方式,在檢測到有用戶命令輸入時(shí)發(fā)生中斷,在中斷里對用戶命令進(jìn)行解析、分析、提取和處理。在中斷下半部分對命令進(jìn)行廣播式發(fā)布,發(fā)布到各個(gè)采樣任務(wù)函數(shù)使其立即刷新執(zhí)行。因?yàn)橛脩艄ぷ鞣绞礁淖儯钏⑿骂l率并不高而且任務(wù)量不大,所以完全可以利用中斷的快速處理來實(shí)現(xiàn)這種功能。

          圖4 顯示任務(wù)工作原理圖

          在處理完命令掃描和采樣任務(wù)之后,影響整個(gè)系統(tǒng)性能的就剩下上位機(jī)和下位機(jī)顯示部分了。顯示任務(wù)工作原理如圖4所示,利用μC/OSII系統(tǒng)提供的消息隊(duì)列對顯示部分進(jìn)行改善。分別建立兩個(gè)長度為16的消息隊(duì)列和內(nèi)存塊鏈表,數(shù)據(jù)提交任務(wù)從空閑內(nèi)存池中得到可用內(nèi)存塊之后將本任務(wù)要顯示的數(shù)據(jù)存入該內(nèi)存塊,此時(shí)該內(nèi)存就變成了帶有數(shù)據(jù)的待顯示數(shù)據(jù)塊。而后將該內(nèi)存塊的地址以消息的形式注冊在顯示消息隊(duì)列上。消息隊(duì)列的長度設(shè)置為16,雖然這里只有12個(gè)任務(wù)會(huì)發(fā)送消息給消息隊(duì)列,但在實(shí)時(shí)多任務(wù)程序中,各個(gè)任務(wù)的運(yùn)行是隨機(jī)的,消息隊(duì)列在一段時(shí)間內(nèi)得到的消息個(gè)數(shù)是個(gè)不定值,所以留出4個(gè)空位作為裕度。而且設(shè)置初始值為16的計(jì)數(shù)信號量來保護(hù)消息隊(duì)列,數(shù)據(jù)提交任務(wù)在提交數(shù)據(jù)之前先檢測該信號量,如該信號量有效就可以發(fā)送信號,如信號量無效則需等待,直到有可用信號位時(shí)方可將信號發(fā)出。在外部硬件操作端,由外部發(fā)送任務(wù)將消息隊(duì)列中的消息按照固定速率發(fā)送到外部信號線上。

          這樣設(shè)計(jì),消息隊(duì)列就相當(dāng)于一個(gè)緩沖區(qū),使得所有提交任務(wù)都可以向這個(gè)緩沖區(qū)發(fā)送待顯示數(shù)據(jù),有效地避免了多個(gè)任務(wù)爭用一個(gè)外圍設(shè)備而引起的死鎖、競爭冒險(xiǎn)等問題。同時(shí)減少了任務(wù)數(shù)量,減少了任務(wù)切換的次數(shù),充分利用了系統(tǒng)時(shí)間,提高了系統(tǒng)性能。

          3.4 關(guān)鍵區(qū)保護(hù)

          多任務(wù)設(shè)計(jì)中每個(gè)任務(wù)在任何時(shí)刻都可能被其他任務(wù)打斷,必須充分考慮代碼的安全性、可重入性、可靠性、饑餓、互鎖、死鎖等情況。[3]

          為了避免上述情況,任務(wù)間消息發(fā)送和傳遞時(shí)以及在數(shù)據(jù)采樣時(shí)對相應(yīng)函數(shù)體進(jìn)行關(guān)鍵區(qū)保護(hù),在這些函數(shù)運(yùn)行的時(shí)候禁止中斷和任務(wù)調(diào)度,以保證數(shù)據(jù)傳遞和數(shù)據(jù)采樣的絕對正確性和系統(tǒng)運(yùn)行的絕對安全性。

          4 極限頻率測定及總結(jié)

          上位機(jī)超級終端接收到的極限頻率測試結(jié)果如圖5所示。

          圖5 極限頻率測量結(jié)果

          分別測試了高頻段、中頻段和低頻段的極限頻率,結(jié)果在CPU使用率80%~90%的情況下測定。該系統(tǒng)成功實(shí)現(xiàn)了智能化設(shè)計(jì)和優(yōu)先級動(dòng)態(tài)調(diào)度、系統(tǒng)參數(shù)動(dòng)態(tài)設(shè)置等功能,達(dá)到了設(shè)計(jì)指標(biāo)。


          上一頁 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); })();