1 引言
掃頻儀是適用于測(cè)量系統(tǒng)頻率響應(yīng)的儀器,。系統(tǒng)的頻率響應(yīng)包含幅頻響應(yīng)和相頻響應(yīng)2個(gè)方面,。目前,在掃頻儀的實(shí)現(xiàn)中,,硬件平臺(tái)一般基于8位或16位單片機(jī),,軟件實(shí)現(xiàn)大多采用單流程循環(huán)控制方式,這種方法存在以下缺點(diǎn):
(1)除中斷服務(wù)程序以外,,各程序模塊沒(méi)有優(yōu)先級(jí)的區(qū)別,,被主循環(huán)簡(jiǎn)單地輪轉(zhuǎn)調(diào)用,,實(shí)時(shí)性差,響應(yīng)時(shí)間無(wú)法預(yù)料,;
(2)運(yùn)算能力較差,,難以完成較復(fù)雜的控制算法;
(3)硬件平臺(tái)依賴(lài)性強(qiáng),,不利于應(yīng)用軟件的開(kāi)發(fā),、升級(jí)與移植;
(4)針對(duì)較復(fù)雜的控制系統(tǒng),,在缺乏有力的多任務(wù)調(diào)度機(jī)制的情況下,,應(yīng)用軟件不僅實(shí)現(xiàn)難度大,且可靠性難以保證,;
(5)分布式多任務(wù)處理能力差,,網(wǎng)絡(luò)化、智能化支持難以適應(yīng)長(zhǎng)遠(yuǎn)發(fā)展需要,。
嵌入式Linux可以很好地解決上述問(wèn)題,。Linux不僅源代碼免費(fèi)開(kāi)放和擁有世界范圍內(nèi)廣泛的技術(shù)支持,而且具備多硬件平臺(tái)支持,;核心代碼效率高,、代碼量小,;系統(tǒng)穩(wěn)定性和可靠性高,;系統(tǒng)可根據(jù)特定需求進(jìn)行定制與組態(tài),且易于升級(jí)等特點(diǎn),,是真正的多用戶,、多任務(wù)操作系統(tǒng)。
本文在系統(tǒng)分析掃頻儀硬件結(jié)構(gòu)基礎(chǔ)上,,根據(jù)Linux的多任務(wù)并行處理的特點(diǎn),,進(jìn)行掃頻儀的軟件設(shè)計(jì)。
2 系統(tǒng)硬件組成
系統(tǒng)的硬件設(shè)計(jì)方案,,如圖1所示,。
(1)DDS信號(hào)源以高集成度頻率合成器AD9854為核心,S3C2410X通過(guò)向AD9854發(fā)送頻率控制字使其產(chǎn)生多種正弦波,,然后經(jīng)過(guò)7階低通濾波,、信號(hào)放大、幅度控制,、輸出低雜散高穩(wěn)定度的正弦波,。
(2)由于掃頻儀按鍵較多,不能按照傳統(tǒng)的設(shè)計(jì)方式設(shè)計(jì)鍵盤(pán)電路,本文以ZLG7290芯片為基礎(chǔ),,鍵盤(pán)通過(guò)I2C總線連接CPU,這樣節(jié)省CPU的接口資源,。
(3)信號(hào)檢測(cè)調(diào)理電路主要用來(lái)對(duì)參考信號(hào)和被測(cè)信號(hào)進(jìn)行放大和幅度相位檢測(cè),,然后通過(guò)低通濾波送A/D轉(zhuǎn)換。
3 系統(tǒng)軟件設(shè)計(jì)
Linux具有內(nèi)核小,、效率高,、源代碼開(kāi)放、內(nèi)核直接提供網(wǎng)絡(luò)支持等優(yōu)點(diǎn),。但嵌入式系統(tǒng)的硬件資源畢竟有限,,因此不能直接把Linux作為操作系統(tǒng),需要針對(duì)具體的應(yīng)用通過(guò)配置內(nèi)核和嵌入式C庫(kù)對(duì)系統(tǒng)進(jìn)行定制,,使整個(gè)系統(tǒng)能夠存放在容量較小的FLASH中,。Linux的動(dòng)態(tài)模塊加載,使Linux的裁減極為方便,,高度模塊化的部件使得添加和刪除變得非常容易,。基于Linux的上述優(yōu)點(diǎn),,本文實(shí)現(xiàn)平臺(tái)使用的操作系統(tǒng)是對(duì)Linux進(jìn)行定制的arm-linux,。
3.1 軟件總體設(shè)計(jì)
掃頻儀的軟件設(shè)計(jì)主要分為2部分:硬件驅(qū)動(dòng)程序;多任務(wù)應(yīng)用程序,。掃頻儀系統(tǒng)軟件結(jié)構(gòu)圖如圖2所示,,其中最內(nèi)層為操作系統(tǒng)層,中間層為應(yīng)用層,,最外層為硬件驅(qū)動(dòng)層,。當(dāng)操作系統(tǒng)啟動(dòng)后,首先加載硬件驅(qū)動(dòng)層接口程序,,然后系統(tǒng)內(nèi)核按照應(yīng)用層的各個(gè)任務(wù)優(yōu)先級(jí)及其就緒狀態(tài)在任務(wù)間切換運(yùn)行,。
3.2 系統(tǒng)多任務(wù)設(shè)計(jì)
在將一個(gè)軟件系統(tǒng)劃分為并行任務(wù)時(shí),首先要分析數(shù)據(jù)流圖中數(shù)據(jù)的變換,,確定哪些變化可以并行,,哪些變換本質(zhì)上必須順序執(zhí)行。一個(gè)變換可以成為一個(gè)任務(wù),,或者幾個(gè)變換組成一個(gè)任務(wù),。決定系統(tǒng)中任務(wù)劃分的最主要因素是系統(tǒng)中所實(shí)現(xiàn)功能間的異步關(guān)系,即任務(wù)與任務(wù)間是如何相互觸發(fā)和協(xié)調(diào)的,,這可以通過(guò)任務(wù)間的通信來(lái)解決,。按照并發(fā)性以及任務(wù)之間同步等特點(diǎn)和要求,對(duì)掃頻儀系統(tǒng)進(jìn)行任務(wù)劃分,如圖3所示,。
系統(tǒng)監(jiān)測(cè)與保護(hù)任務(wù)保證系統(tǒng)安全可靠,,出現(xiàn)故障可以被自檢出來(lái),同時(shí)能診斷出掃頻儀發(fā)生故障的部位,。
數(shù)據(jù)采集任務(wù) 由于掃頻儀需要不斷從A/D芯片讀取采集到的幅度和相位信號(hào)數(shù)據(jù),,否則會(huì)被后來(lái)的數(shù)據(jù)覆蓋,從而造成掉點(diǎn),,因此開(kāi)辟一個(gè)數(shù)據(jù)采集進(jìn)程專(zhuān)門(mén)處理讀取數(shù)據(jù),。數(shù)據(jù)采集進(jìn)程利用互斥鎖保護(hù)輸入緩沖區(qū),避免競(jìng)爭(zhēng),;利用消息驅(qū)動(dòng)數(shù)據(jù)處理模塊和顯示模塊進(jìn)行相應(yīng)操作,。
數(shù)據(jù)處理任務(wù)首先通過(guò)數(shù)字濾波技術(shù),濾出干擾源,;然后進(jìn)行計(jì)算處理,,判斷掃描頻率點(diǎn)數(shù)是否到達(dá)要求,決定掃頻是否結(jié)束,,將數(shù)據(jù)轉(zhuǎn)換成圖形顯示格式,;最后送顯示模塊顯示。由于數(shù)據(jù)處理模塊計(jì)算量較大,,因此也為其開(kāi)辟一個(gè)單獨(dú)的進(jìn)程來(lái)計(jì)算,,避免影響其他模塊工作。
顯示任務(wù) 圖形界面開(kāi)發(fā)采用的開(kāi)發(fā)工具為MiniGUI,,使用MiniGUI的圖形控件資源,,軟件的界面開(kāi)發(fā)非常方便。顯示模塊主要負(fù)責(zé)將相位和幅度信號(hào)以圖形的方式顯示出來(lái),。由于繪圖是一件相當(dāng)耗費(fèi)資源的工作,,故用一單獨(dú)的進(jìn)程實(shí)現(xiàn)。
USB通訊任務(wù) 對(duì)被測(cè)物體測(cè)試完成后,,進(jìn)行測(cè)試數(shù)據(jù)的拷貝或打印,。
3.3 多任務(wù)通信
在掃頻儀程序中引入消息概念,將進(jìn)程的執(zhí)行條件轉(zhuǎn)換為消息,,由消息對(duì)相應(yīng)的進(jìn)程進(jìn)行激活,,并由進(jìn)程調(diào)度模塊實(shí)現(xiàn)調(diào)度。消息定義為:當(dāng)某進(jìn)程完成時(shí),,進(jìn)程設(shè)置相應(yīng)標(biāo)志,,不同的標(biāo)志代表不同的消息。消息在多進(jìn)程中的作用相當(dāng)于橋梁,,使進(jìn)程間既相互獨(dú)立又有機(jī)關(guān)聯(lián),,進(jìn)程之間不能直接調(diào)用,,需借助消息,由進(jìn)程調(diào)度模塊實(shí)施,。例如:數(shù)據(jù)顯示模塊中有一部分內(nèi)容是將分析計(jì)算的結(jié)果打印到屏幕上,,為了節(jié)省資源開(kāi)銷(xiāo),將其放在主進(jìn)程里,,通過(guò)消息機(jī)制處理,。
中斷服務(wù)程序則是通過(guò)發(fā)送信號(hào)給進(jìn)程調(diào)度模塊,說(shuō)明已經(jīng)發(fā)生中斷,。例如按下掃頻功能鍵,,中斷處理程序產(chǎn)生一個(gè)信號(hào)就退出中斷,,而調(diào)度模塊則依據(jù)接收的信號(hào),,激活數(shù)設(shè)置模塊工作。
4 結(jié) 語(yǔ)
應(yīng)用基于Linux嵌入式多任務(wù)操作系統(tǒng)的掃頻儀,,結(jié)合S3C2410X的32位微處理器,,不僅簡(jiǎn)化軟硬件設(shè)計(jì),能夠方便地測(cè)量被測(cè)網(wǎng)絡(luò)的幅頻曲線和相頻曲線,,更重要的是減少掃頻響應(yīng)時(shí)間,,增加數(shù)據(jù)打印和分析處理功能。利用MiniGUI開(kāi)發(fā)的圖形界面友好,,人機(jī)交互性強(qiáng),。基于Linux多任務(wù)操作系統(tǒng)進(jìn)行程序編寫(xiě),,能減少程序設(shè)計(jì)的工作量和復(fù)雜程度,,大大縮短開(kāi)發(fā)周期。
作者:胡鴻豪,,吳勇翀,,文琳莉,寧小平