基于DSP/BIOS的數(shù)據(jù)采集系統(tǒng)研制
摘要:針對多模式、高速、大數(shù)量采集及網(wǎng)絡(luò)實(shí)時上傳的要求,設(shè)計(jì)專用數(shù)據(jù)采集系統(tǒng)。硬件上以DM642作為主控CPU,軟件上利用其內(nèi)嵌的DSP/BIOS操作系統(tǒng)調(diào)度網(wǎng)絡(luò)控制任務(wù)、數(shù)據(jù)采集任務(wù)、周期觸發(fā)線程以及硬件中斷,并利用網(wǎng)絡(luò)開發(fā)工具包NDK實(shí)現(xiàn)TCP/IP協(xié)議,完成網(wǎng)絡(luò)控制和通信。構(gòu)建可靠的數(shù)據(jù)傳輸機(jī)制,保證底層高速采集的大數(shù)據(jù)量快速可靠的上傳。最后,用VC開發(fā)上位機(jī)程序,實(shí)現(xiàn)數(shù)據(jù)處理、顯示和故障診斷。實(shí)際應(yīng)用表明該系統(tǒng)運(yùn)行穩(wěn)定,滿足實(shí)時采集的要求。
關(guān)鍵詞:DSP/BIOS;DM642;多線程;NDK;數(shù)據(jù)采集
隨著嵌入式系統(tǒng)復(fù)雜性、實(shí)時性的不斷提高,采用單任務(wù)順序和循環(huán)結(jié)構(gòu)的傳統(tǒng)軟件構(gòu)架已經(jīng)不能滿足要求,基于操作系統(tǒng)的多線程設(shè)計(jì)得到越來越多的應(yīng)用。課題中,為了實(shí)時監(jiān)測某型號導(dǎo)彈的整個測試過程,記錄偶爾出現(xiàn)的故障信息并判斷問題原因,設(shè)計(jì)以數(shù)據(jù)采集系統(tǒng)為核心的在線監(jiān)測設(shè)備。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)軟件結(jié)構(gòu)實(shí)時性差、資源利用率低,很難滿足高速、大數(shù)據(jù)量采集并需要實(shí)時上傳的應(yīng)用場合。而課題中的數(shù)據(jù)采集系統(tǒng)需要采集現(xiàn)場多個類型、多個通道的數(shù)據(jù),采集數(shù)據(jù)需通過網(wǎng)絡(luò)實(shí)時傳輸給上位機(jī),因此,采用DSP/BIOS實(shí)時操作系統(tǒng)提供的多任務(wù)機(jī)制并結(jié)合TI提供的NDK網(wǎng)絡(luò)開發(fā)工具包來設(shè)計(jì)研制數(shù)據(jù)采集系統(tǒng)。
1 DSP/BIOS及NDK簡介
DSP/BIOS是TI公司為C28x,C5000和C6000系列DSP開發(fā)的可裁剪實(shí)時多任務(wù)操作系統(tǒng),同時也是CCS提供的一套多任務(wù)開發(fā)、硬件抽象、實(shí)時分析和系統(tǒng)配置的專用工具。DSP/BIOS以其功能豐富的APIs綜合管理系統(tǒng)內(nèi)存,實(shí)現(xiàn)任務(wù)分配和調(diào)度,實(shí)時監(jiān)測分析系統(tǒng)運(yùn)行,并提供方便的數(shù)據(jù)通信接口和外設(shè)驅(qū)動開發(fā)工具。DSP/BIOS的運(yùn)用大大降低了DSP軟件開發(fā)難度,提高了調(diào)試效率,非常適合結(jié)構(gòu)復(fù)雜、實(shí)時性強(qiáng)和運(yùn)行效率高的應(yīng)用開發(fā)。NDK是TI專門為網(wǎng)絡(luò)應(yīng)用開發(fā)提供的網(wǎng)絡(luò)開發(fā)工具包,利用其TCP/IP協(xié)議棧開發(fā)網(wǎng)絡(luò)應(yīng)用具有成本低、開發(fā)周期短的特點(diǎn)。網(wǎng)絡(luò)性能由套接字類型、套接字緩沖區(qū)、CPU速度和CPU緩沖等幾方面決定。
2 數(shù)據(jù)采集系統(tǒng)總體設(shè)計(jì)
數(shù)據(jù)采集系統(tǒng)可工作在兩種模式下:模式一,采集數(shù)據(jù)通過網(wǎng)絡(luò)實(shí)時上傳;模式二,采集數(shù)據(jù)先存入CF卡,監(jiān)測結(jié)束后一并上傳。硬件上采用DM642+FPGA的主控方案,在DSP中運(yùn)行DSP/BIOS操作系統(tǒng)來綜合管理外設(shè)資源,分配調(diào)度硬件中斷HWI、周期性觸發(fā)線程PRD、數(shù)據(jù)采集任務(wù)和網(wǎng)絡(luò)控制傳輸任務(wù),從而實(shí)現(xiàn)對A/D采集、串口通信、數(shù)據(jù)存儲和網(wǎng)絡(luò)收發(fā)的控制。根據(jù)功能劃分,數(shù)據(jù)采集系統(tǒng)可以分為A/D采集單元、RS 422通信單元、CF卡存儲單元和網(wǎng)絡(luò)控制收發(fā)單元。硬件總體框圖如圖1所示。
2.1 A/D采集單元設(shè)計(jì)
A/D采集單元分為高速采集和低速采集2個通道。高速采集通道選用12位的AD7356,單片并行雙通道,最高采樣率5 MSa/s,串行輸出,通過5片AD7356的組合可并行或循環(huán)采集10路差分輸入信號。低速采集通道選用12位的AD7658,單片并行6通道,最高采樣率250KSa/s,2片AD7658采用菊花鏈的級聯(lián)方式可同時采集12路差分或單端輸入信號。A/D控制信號和轉(zhuǎn)換數(shù)據(jù)通過磁耦隔離芯片IL716實(shí)現(xiàn)后端隔離。
2.2 其他功能單元設(shè)計(jì)
RS 422串口通信單元采用MAX485實(shí)現(xiàn),1路發(fā)送5路接收,發(fā)送通道用于產(chǎn)生設(shè)備自檢信號。數(shù)據(jù)存儲單元選用大容量、掉電不丟失的CF卡,并開發(fā)支持IDE模式下UDMA傳輸?shù)闹骺豂P核,由FPGA獨(dú)立控制。網(wǎng)路控制收發(fā)單元采用DM642自帶的以太網(wǎng)接口并結(jié)合TI提供的TCP/IP協(xié)議棧實(shí)現(xiàn)。
[!--empirenews.page--]
3 多線程機(jī)制設(shè)計(jì)
3.1 DSP/BIOS提供的多線程機(jī)制
DSP/BIOS支持的線程按優(yōu)先級從高到低可以分為硬件中斷HWI、軟件中斷SWI、任務(wù)TSK和后臺線程IDL。HWI就是ISR,優(yōu)先級最高,適合200 kHz觸發(fā)的任務(wù);SWI適合100 ms或者更大周期的觸發(fā)任務(wù);Task不同SWI之處在于它在執(zhí)行過程中能被掛起直到必需資源有效,任務(wù)之間可以通過queue,semaphore,mailbox進(jìn)行信息共享;其他線程不運(yùn)行時才運(yùn)行IDL;HWI和SWI不能掛起和等待。
3.2 功能劃分及任務(wù)規(guī)劃
為了優(yōu)化CPU資源,實(shí)現(xiàn)各功能的協(xié)調(diào)運(yùn)作,需要合理劃分功能、規(guī)劃任務(wù)。本設(shè)計(jì)中構(gòu)建了2個硬件中斷線程HWI、一個周期觸發(fā)線程PRD以及網(wǎng)絡(luò)配置任務(wù)線程和網(wǎng)絡(luò)傳輸任務(wù)線程共5個線程。各線程運(yùn)行調(diào)度狀態(tài)如圖2所示。
3.2.1 硬件中斷線程
硬件中斷線程主要用來處理響應(yīng)時間要求嚴(yán)格的請求,同時它的優(yōu)先級最高,能搶占當(dāng)前運(yùn)行的其他線程及時運(yùn)行。方案中的RS 422通信共5個接收通道,波特率高達(dá)614.4 Kb/s,且每個通道的緩沖FIFO只設(shè)計(jì)了256 B,連續(xù)通信時半滿觸發(fā)的時間為2 ms左右。因此,采用HWI處理RS 422通信數(shù)據(jù),5個通道共用一個DSP中斷源。另外,設(shè)計(jì)要求被測28 V信號作為AD采集的開關(guān),即28 V有效時啟動采集,28 V無效就得中斷當(dāng)前采集任務(wù)。因此,通過比較電路將28 V轉(zhuǎn)換為控制信號觸發(fā)DSP中斷。
[!--empirenews.page--]
3.2.2 網(wǎng)絡(luò)任務(wù)線程
網(wǎng)絡(luò)服務(wù)啟動流程通常是先運(yùn)行NETCTRL任務(wù)線程,完成協(xié)議棧的配置、初始化和事件調(diào)度,然后開辟新線程執(zhí)行FTP服務(wù)或者HTTP服務(wù)。本設(shè)計(jì)中,網(wǎng)絡(luò)配置任務(wù)線程即NETCTRL任務(wù)線程,是DSP/BIOS靜態(tài)創(chuàng)建的主線程mainTSK,并動態(tài)創(chuàng)建網(wǎng)絡(luò)傳輸任務(wù)線程。網(wǎng)絡(luò)傳輸任務(wù)是最核心的任務(wù)線程,主要完成網(wǎng)絡(luò)命令解析、通道查詢和數(shù)據(jù)上傳的功能,其流程圖如圖3所示。網(wǎng)絡(luò)命令分為自檢、監(jiān)測和切斷通信下監(jiān)測3種。自檢時不需要被測28 V信號作為AD采集開關(guān),但需要設(shè)備本身提供模擬真實(shí)信號的以5 ms為周期發(fā)送的RS 422信號,采用PRD來實(shí)現(xiàn)。通信切斷的功能的為了防止設(shè)備對原有測試環(huán)境的影響。
4 數(shù)據(jù)可靠性傳輸機(jī)制設(shè)計(jì)
實(shí)時采集上傳的數(shù)據(jù)量大,為了保證數(shù)據(jù)傳輸?shù)目煽啃裕C合考慮網(wǎng)絡(luò)帶寬、AD采樣率和緩沖數(shù)組等因素。底層數(shù)據(jù)分為AD采集數(shù)據(jù)和RS 422通信數(shù)據(jù)2類,AD采集又分成高速采集和低速采集2個通道。高速采集通道的平均數(shù)據(jù)量為4 MB/s,低速采集通道的平均數(shù)據(jù)量為50 KB/s,F(xiàn)PGA中為每個通道配置一個FIFO,DSP通過循環(huán)查詢判斷FIFO標(biāo)志位,有效即從FIFO讀取數(shù)據(jù)再通過網(wǎng)絡(luò)上傳。RS 422通信數(shù)據(jù)采用中斷方式寫到網(wǎng)絡(luò)發(fā)送的緩沖數(shù)組中,為了避免由于中斷搶占導(dǎo)致的數(shù)據(jù)沖突,設(shè)計(jì)2個緩沖數(shù)組通過乒乓操作交替寫入和上傳通信數(shù)據(jù)。
各環(huán)節(jié)時間估計(jì)如下:通過配置寄存器,DSP訪問1次外部存儲器需要40個100 MHz的時鐘周期。DM642運(yùn)行TI提供的TCP/IP協(xié)議棧,底層通過網(wǎng)絡(luò)循環(huán)發(fā)送常數(shù)給上位機(jī),經(jīng)測試,網(wǎng)絡(luò)平均帶寬為80 Mb/s。因此,DSP從FIFO中讀取4 KWord(雙字節(jié))數(shù)據(jù)并上傳需要的時間至少為2.46 ms,這段時間里4.MB/s采樣率下積累的數(shù)據(jù)量近10 KB。為了防止一個通道數(shù)據(jù)有效時由于CPU正處理另一個通道的數(shù)據(jù)而導(dǎo)致第一個通道FIFO溢出的情況,設(shè)計(jì)每個FIFO的深度為16 KWord,容量達(dá)1/4時產(chǎn)生滿標(biāo)志位。數(shù)據(jù)傳輸機(jī)制如圖4所示。
5 結(jié)果分析
上位機(jī)軟件采用VC 6.0結(jié)合SQL 2005數(shù)據(jù)庫開發(fā),實(shí)現(xiàn)網(wǎng)絡(luò)控制、數(shù)據(jù)接收和存儲、數(shù)據(jù)處理和故障診斷以及動態(tài)顯示信號波形的功能。每一次監(jiān)測的數(shù)據(jù)都自動保存到數(shù)據(jù)庫中以便之后的進(jìn)一步分析和處理。
采樣數(shù)據(jù)波形顯示界面如圖5所示。
6 結(jié)語
本設(shè)計(jì)利用DSP/BIOS的多任務(wù)機(jī)制,實(shí)現(xiàn)網(wǎng)絡(luò)控制、數(shù)據(jù)采集以及網(wǎng)絡(luò)通信的有效配合,保證底層高速采集的大數(shù)據(jù)量快速可靠得上傳給上位機(jī)。同時,以DM642的硬件資源為基礎(chǔ),通過調(diào)用NDK提供的APIs,實(shí)現(xiàn)了百兆以太網(wǎng)的傳輸。上位機(jī)軟件利用數(shù)據(jù)庫作為數(shù)據(jù)存儲平臺,可以方便得處理、顯示、對比多次采集結(jié)果。實(shí)際應(yīng)用表明,該系統(tǒng)穩(wěn)定可靠、實(shí)時性強(qiáng),在高速實(shí)時數(shù)據(jù)采集領(lǐng)域中有一定的應(yīng)用價值。