新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于ARM9和μC/OSII的多頻道數據采集系統設計

        基于ARM9和μC/OSII的多頻道數據采集系統設計

        作者: 時間:2011-07-26 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/194823.htm

          各個頻段的各個通道采集任務均設置兩個數據緩沖區。雙數據緩沖區為采樣任務順利存儲提供了雙重保證,使得采樣工作一旦結束就有可用緩沖區,就可立即將數據存儲而后進行下一次采集。也使得后續的數據處理任務減少數據等待時間,能迅速得到當前采樣通道需要處理的數據,并在最短的時間內處理發送給下一級任務。

          采樣、數據顯示、命令掃描都涉及外圍設備,是整個系統所有任務里面運行速度最慢的,針對采樣任務設置雙數據緩沖區可以很大幅度地改善由于采樣速度慢而造成的系統速率下降問題,顯示和命令掃描部分的優化設計將在下文中詳細說明。

          3 內部軟件調度算法

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

        圖3 各個頻段內部命令

          3.1 任務優先級設置及采樣任務優先級動態調度

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

          內部優先級設置規則是,低頻段、中頻段、高頻段3個頻段的任務之間優先級依次遞減。低頻段的采樣周期明顯比高頻段長,在低頻段的空閑時間里系統可以順利地將CPU使用權切換給其他任務,使其他任務得到CPU使用權并執行。每個頻段內部的各個任務的優先級從采樣到數據存儲、數據處理、數據提交依次遞減。

          為了使得整個系統實現優先級動態調度也可以修改其他采樣參數,在軟件設計時將所有頻段采樣任務的優先級、采樣周期以全局變量的形式在進入操作系統之前進行設置,并將其定義為volatile格式分配獨立的變量存儲地址。而后設立獨立的掃描任務,來專門完成這些參數的判斷、修改、存儲和動態更新。這樣便使得系統除了可以按照根據采樣周期設計的初始化優先級和初始化參數運行外,還可以依據用戶自身需要對各個頻段、各個通道的采樣任務優先級以及采樣頻率進行設置和修改。修改完并確認后,修改任務會保存、更新當前系統工作參數并退出操作系統,而后重新啟動并初始化,整個采集系統將按照全新的狀態開始工作。當然,在這里用戶優先級和采樣周期設置是受限的,必須符合上文提及的優先級規則及各個頻段對采樣周期的要求。

         3.2 任務時限設置

          為了對整個系統的時間調度進行優化,首先說明幾個內部工作時間。i386體系和Linux2.5內核中操作系統節拍率都設置為1000 Hz[2]。在這里將μC/操作系統調度時間OS_TICKS_PER_SEC也設置為1000,也就是說操作系統的任務調度以ms為單位。內核CPU工作頻率設置為400 MHz,即CPU機械周期以ns為單位。外設包括上位機命令掃描和上位機、下位機顯示部分工作都以s為單位。μC/系統中任務切換、調度及延時都以系統節拍率為單位,而內部代碼的運行是以機械周期為單位。內部任務時限可以以節拍律為單位,也可以以實時時間為基準,獲得一個絕對時間差。

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南宁市| 顺昌县| 花莲县| 精河县| 高清| 刚察县| 黄冈市| 洛隆县| 浙江省| 泸水县| 汉中市| 邢台市| 怀化市| 潼南县| 喀什市| 托克逊县| 永吉县| 油尖旺区| 嵩明县| 清新县| 绥棱县| 肇东市| 日喀则市| 鹤峰县| 青铜峡市| 西和县| 岳阳市| 乌什县| 郎溪县| 台北县| 庆安县| 梧州市| 务川| 巢湖市| 思南县| 广河县| 西盟| 肥乡县| 阳泉市| 乡宁县| 泌阳县|