新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于ARM9和μC/OSII的多頻道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

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

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

本文引用地址:http://2s4d.com/article/194823.htm

  各個(gè)頻段的各個(gè)通道采集任務(wù)均設(shè)置兩個(gè)數(shù)據(jù)緩沖區(qū)。雙數(shù)據(jù)緩沖區(qū)為采樣任務(wù)順利存儲(chǔ)提供了雙重保證,使得采樣工作一旦結(jié)束就有可用緩沖區(qū),就可立即將數(shù)據(jù)存儲(chǔ)而后進(jìn)行下一次采集。也使得后續(xù)的數(shù)據(jù)處理任務(wù)減少數(shù)據(jù)等待時(shí)間,能迅速得到當(dāng)前采樣通道需要處理的數(shù)據(jù),并在最短的時(shí)間內(nèi)處理發(fā)送給下一級(jí)任務(wù)。

  采樣、數(shù)據(jù)顯示、命令掃描都涉及外圍設(shè)備,是整個(gè)系統(tǒng)所有任務(wù)里面運(yùn)行速度最慢的,針對(duì)采樣任務(wù)設(shè)置雙數(shù)據(jù)緩沖區(qū)可以很大幅度地改善由于采樣速度慢而造成的系統(tǒng)速率下降問題,顯示和命令掃描部分的優(yōu)化設(shè)計(jì)將在下文中詳細(xì)說明。

  3 內(nèi)部軟件調(diào)度算法

  系統(tǒng)內(nèi)部各個(gè)頻段命令如圖3所示。命令掃描函數(shù)捕捉到用戶命令后,對(duì)用戶命令進(jìn)行驗(yàn)證、分析、提取,而后將提取結(jié)果以廣播的方式發(fā)送至各個(gè)頻段的命令等待隊(duì)列。該隊(duì)列如得到新的命令,將用戶命令發(fā)送給本隊(duì)列下轄的各個(gè)采樣任務(wù)函數(shù),用戶命令將立即得到執(zhí)行,包括通道切換、變換采樣周期、改變當(dāng)前任務(wù)優(yōu)先級(jí)、顯示特定通道數(shù)據(jù)等。如沒有得到新的命令,等待超時(shí)后采樣任務(wù)按照原有方式繼續(xù)工作。這也是一種智能化設(shè)計(jì),以很簡(jiǎn)單的方式實(shí)現(xiàn)了按照用戶命令隨時(shí)對(duì)任何通道的查看、監(jiān)督、操作、工作狀態(tài)切換、通道切換、由單通道到所有通道并行實(shí)時(shí)采集切換等所有功能的任意切換。

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

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

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

  內(nèi)部?jī)?yōu)先級(jí)設(shè)置規(guī)則是,低頻段、中頻段、高頻段3個(gè)頻段的任務(wù)之間優(yōu)先級(jí)依次遞減。低頻段的采樣周期明顯比高頻段長(zhǎng),在低頻段的空閑時(shí)間里系統(tǒng)可以順利地將CPU使用權(quán)切換給其他任務(wù),使其他任務(wù)得到CPU使用權(quán)并執(zhí)行。每個(gè)頻段內(nèi)部的各個(gè)任務(wù)的優(yōu)先級(jí)從采樣到數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)提交依次遞減。

  為了使得整個(gè)系統(tǒng)實(shí)現(xiàn)優(yōu)先級(jí)動(dòng)態(tài)調(diào)度也可以修改其他采樣參數(shù),在軟件設(shè)計(jì)時(shí)將所有頻段采樣任務(wù)的優(yōu)先級(jí)、采樣周期以全局變量的形式在進(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)先級(jí)和初始化參數(shù)運(yùn)行外,還可以依據(jù)用戶自身需要對(duì)各個(gè)頻段、各個(gè)通道的采樣任務(wù)優(yōu)先級(jí)以及采樣頻率進(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)先級(jí)和采樣周期設(shè)置是受限的,必須符合上文提及的優(yōu)先級(jí)規(guī)則及各個(gè)頻段對(duì)采樣周期的要求。

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

  為了對(duì)整個(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/操作系統(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/系統(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è)絕對(duì)時(shí)間差。

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



評(píng)論


相關(guān)推薦

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

關(guān)閉