基于16位微處理器和實(shí)時(shí)操作系統(tǒng)μC/OS-II的基站監(jiān)控終端設(shè)
為提高通信基站監(jiān)控終端的可靠性和事件處理能力,本文介紹采用 16位 RISC架構(gòu)嵌入式微處理器R8800實(shí)現(xiàn)基站監(jiān)控終端的設(shè)計(jì)。利用 Paradigm C++ 5.1集成環(huán)境編寫監(jiān)控終端控制程序,實(shí)現(xiàn)μC/OS-II在 R8800上的移植。通過(guò)實(shí)裝調(diào)試,設(shè)計(jì)的任務(wù)程序能在硬件環(huán)境和操作系統(tǒng)下穩(wěn)定工作,實(shí)現(xiàn)了監(jiān)控終端對(duì)環(huán)境模擬量和開(kāi)關(guān)量信息的采集,對(duì)智能電源、空調(diào)設(shè)備和通風(fēng)系統(tǒng)的通信與控制,與區(qū)域監(jiān)控中心進(jìn)行遠(yuǎn)程通信。
近年來(lái),隨著移動(dòng)通信業(yè)務(wù)的迅猛發(fā)展,尤其是 3G通信網(wǎng)建設(shè)的進(jìn)行,通信基站的建設(shè)數(shù)量與日俱增。通信運(yùn)營(yíng)商對(duì)快速建站、降低基站綜合成本和運(yùn)營(yíng)維護(hù)成本的要求更加迫切?;颈O(jiān)控終端,可做到基站無(wú)人值守、遠(yuǎn)程監(jiān)控,給基站內(nèi)設(shè)備提供一個(gè)穩(wěn)定可靠的工作環(huán)境,能夠明顯降低運(yùn)營(yíng)商的維護(hù)和管理成本,具有很高的應(yīng)用價(jià)值。設(shè)計(jì)基站監(jiān)控系統(tǒng)的核心問(wèn)題在于如何保證各功能模塊和監(jiān)控模塊自身的正常運(yùn)行,對(duì)于各種異常和故障如何及時(shí)做出準(zhǔn)確的報(bào)警,以及面向使用者的人性化設(shè)計(jì)等方面。
1 監(jiān)控終端硬件設(shè)計(jì)
1.1 功能描述基站監(jiān)控終端主要有 3個(gè)要求:門禁功能(對(duì)進(jìn)入基站的人員進(jìn)行身份驗(yàn)證)、環(huán)境控制功能(為設(shè)備提供安全合適的環(huán)境)、報(bào)警功能(對(duì)各種故障和異常及時(shí)做出報(bào)警)。
本監(jiān)控終端的硬件結(jié)構(gòu)如圖 1所示?;緝?nèi)智能電源、空調(diào)和通風(fēng)系統(tǒng),通過(guò)標(biāo)準(zhǔn)數(shù)據(jù)通信接口與本監(jiān)控終端傳輸設(shè)備和控制信息。智能電源能夠自動(dòng)管理和切換市電和蓄電池,為站內(nèi)設(shè)備提供穩(wěn)定的-48V電源,空調(diào)系統(tǒng)使用專用的空調(diào)柜機(jī)及工業(yè)級(jí)控制模塊,可以改善站內(nèi)溫濕度環(huán)境,這兩者與終端采用 RS485連接。通風(fēng)系統(tǒng)由風(fēng)機(jī)和百葉窗組成,相對(duì)空調(diào)系統(tǒng)而言的結(jié)構(gòu)簡(jiǎn)單,可靠性高,且較為省電,是優(yōu)先使用的溫度控制手段,通風(fēng)系統(tǒng)與終端采用 RS232連接。監(jiān)控終端需要采集交直流電源電壓電流數(shù)據(jù),溫濕度等模擬量數(shù)據(jù),采集水浸、煙感和與門禁相關(guān)的干結(jié)點(diǎn)開(kāi)關(guān)信號(hào),監(jiān)控終端具有本級(jí)顯示和鍵盤輸入功能。監(jiān)控終端通過(guò)時(shí)隙提取設(shè)備、撥號(hào) MODEM、外置 GSM MODEM 3種手段向區(qū)域監(jiān)控中心傳送基站狀態(tài)參數(shù)和報(bào)警數(shù)據(jù),本終端設(shè)計(jì)了與這 3種通信設(shè)備硬件接口和軟件協(xié)議。
1.2硬件設(shè)計(jì)
監(jiān)控終端選擇 RDC公司的 R8800作為 CPU。R8800微控制器是 16位 RISC嵌入式微處理器,指令集與 x86兼容, R8800可以與 AM186EM相互替換,昀高工作頻率達(dá)到 40MHz。 R8800具有 1M的尋址空間, 32個(gè) PIO管腳,7個(gè)內(nèi)部中斷,6個(gè)外部中斷,3個(gè)定時(shí)器, 1個(gè)UART,WDT看門狗,100QFP/LQFP封裝[3]。本終端采用兩塊 128K × 8-bitFLASH ROM,兩塊 128K × 8-bit StatICRAM,滿足 1M的尋址空間。
利用現(xiàn)場(chǎng)可編程門陣列(FPGA)設(shè)計(jì) CPU外設(shè)的譯碼電路,本終端采用 Xilinx XCS20芯片,該芯片具有 2萬(wàn)門,160個(gè) IO端口,具有JTAG調(diào)試端口,芯片不必脫離線路板就可以更新設(shè)計(jì)并下載邏輯電路程序。FPGA除了對(duì) 16C554的片選、多路選擇開(kāi)關(guān)、數(shù)模轉(zhuǎn)換、FLASH芯片的譯碼外,還負(fù)責(zé)鍵盤輸入、水浸、門狀態(tài)、鎖芯狀態(tài)、出門按鈕、紅外、煙感信號(hào)的干結(jié)點(diǎn)開(kāi)關(guān)信號(hào)輸入,液晶顯示輸出,門鎖和照明的控制,與實(shí)時(shí)時(shí)鐘 HT1380的串行通信。
本終端通過(guò)兩個(gè)異步通信芯片 16C554外擴(kuò) 6個(gè)收發(fā)單元, 3個(gè) RS232端口,連接通風(fēng)系統(tǒng)、時(shí)隙提取設(shè)備和 GSM MODEM,2個(gè) RS485端口,連接工業(yè)空調(diào)和智能電源,還有 1個(gè)獨(dú)立的收發(fā)控制電路與撥號(hào) MODEM接口。16C554內(nèi)含 4個(gè) 16C550異步通信單元,每個(gè)單元獨(dú)立控制發(fā)送與接收,且具有 16字節(jié) FIFO以減少中斷請(qǐng)求次數(shù),波特率發(fā)生器可編程。本終端用了 6個(gè) 16C550單元,這六路通信中斷接至 R8800的六個(gè)外部中斷端口上,實(shí)現(xiàn)通信接收信息中斷。
表征各種環(huán)境參量的傳感器的輸出信號(hào)經(jīng)過(guò)預(yù)處理輸出一系列的模擬信號(hào),模擬信號(hào)經(jīng)過(guò)多路選擇開(kāi)關(guān)送給A/D轉(zhuǎn)換芯片,A/D轉(zhuǎn)換芯片把轉(zhuǎn)換后的數(shù)據(jù)送入 FLASH芯片進(jìn)行存儲(chǔ)。
鍵盤選用通用 4×4按鈕鍵盤,包括: 10個(gè)數(shù)字鍵、上下鍵、確認(rèn)鍵、返回鍵。選擇 8279芯片作為鍵盤接口芯片,它能自動(dòng)完成鍵盤的掃描輸入,能自動(dòng)清除按鍵抖動(dòng),并實(shí)現(xiàn)多鍵同時(shí)按下的保護(hù),減輕軟件負(fù)擔(dān)。液晶顯示器件選擇了帶有接口芯片 ST7920的圖形點(diǎn)陣式液晶顯示模塊 LCM12864,顯示分辨率為 128×64,它具有多種接口方式和三種顯示方式(圖形方式、文本方式及圖形和文本合成方式),內(nèi)部具有字符發(fā)生器,可管理 64K顯示緩沖區(qū)及字符發(fā)生器,允許隨時(shí)訪問(wèn)顯示緩沖區(qū)。
2 監(jiān)控終端的軟件設(shè)計(jì)
2.1軟件任務(wù)模塊軟件部分由 R8800控制程序和FPGA程序組成。由于篇幅的限制,本文主要討論基于 μC/OS-II的監(jiān)控終端軟件設(shè)計(jì)。
本系統(tǒng)采用μC/OS-II面向中小型的嵌入式操作系統(tǒng)。采用 μC/OS-II實(shí)時(shí)系統(tǒng)之后,程序的結(jié)構(gòu)變得非常清晰,根據(jù)程序的功能劃分出各個(gè)任務(wù)(task),系統(tǒng)任務(wù)示意如圖 2所示,利用μC/OS-II提供的信號(hào)量、郵箱等進(jìn)行各個(gè)任務(wù)之間的同步、數(shù)據(jù)交換以及對(duì)共享資源進(jìn)行保護(hù)[4]。
系統(tǒng)設(shè)計(jì)了開(kāi)機(jī)任務(wù),中斷服務(wù),用戶任務(wù)。
(1)開(kāi)機(jī)任務(wù)( TaskStart)。系統(tǒng)進(jìn)行自檢,按程序規(guī)定的流程檢測(cè)所有設(shè)備是否正常工作。自檢成功后,命令系統(tǒng)進(jìn)入主程序啟動(dòng)多任務(wù)環(huán)境,運(yùn)行所有默認(rèn)系統(tǒng)任務(wù)和用戶任務(wù)。開(kāi)機(jī)任務(wù)完成后進(jìn)行自我刪除。
(2)中斷服務(wù)程序( Inttask0~I(xiàn)nttask5)。中斷服務(wù)程序主要是 R8800響應(yīng) 16C554串口擴(kuò)展芯片的接收信息的中斷請(qǐng)求,進(jìn)入相應(yīng)的處理程序(幀接受任務(wù) TaskUart0Receive~ TaskUart5Receive),首先對(duì)幀信息的完整性與正確性做出判斷,對(duì)接收到的命令幀進(jìn)行判斷,調(diào)用系統(tǒng)相應(yīng)模塊或任務(wù),并回應(yīng)主叫命令 (幀處理任務(wù) TaskUart0Handle~ TaskUart5Handle)。
(3)用戶任務(wù)。該軟件系統(tǒng)擁有 16個(gè)任務(wù),數(shù)據(jù)處理和鍵盤處理任務(wù)通過(guò)判斷后進(jìn)行任務(wù)切換。主要用戶任務(wù)如下:
A.鍵盤掃描任務(wù) (TaskUser0_KeyBoard),采用任務(wù)循環(huán),對(duì)鍵盤信息(鍵盤由 FPGA進(jìn)行掃描,將鍵盤信息存在 FPGA的 RAM中)進(jìn)行動(dòng)態(tài)掃描,當(dāng)?shù)玫叫碌暮戏⊕呙璐a時(shí),就向鍵盤郵箱(KeyBoarDMAilbox)發(fā)送帶有鍵盤掃描碼信息的消息。
B.數(shù)據(jù)采集任務(wù)( TaskUser1_DataCollection),采用任務(wù)循環(huán),數(shù)據(jù)采集任務(wù)包括模擬量和干結(jié)點(diǎn)開(kāi)關(guān)量的數(shù)據(jù)采集,模擬量的采集由 FPGA譯碼控制,將模數(shù)轉(zhuǎn)換數(shù)據(jù)存入 Flash,開(kāi)關(guān)量的采集由 FPGA負(fù)責(zé)采集,也存入 Flash中。CPU將 Flash中的模擬量和開(kāi)關(guān)量數(shù)據(jù)進(jìn)行分析處理,在模擬量數(shù)據(jù)處理上采用去極值求平均法去噪,即對(duì)一個(gè)檢測(cè)點(diǎn)采集多個(gè)值去掉昀大值和昀小值然后求平均,這個(gè)平均值就作為該點(diǎn)的數(shù)據(jù)值,對(duì)數(shù)字量也采用多采集幾次的方法增加可靠性。這樣可以消除突發(fā)脈沖、隨機(jī)噪聲的干擾,從而進(jìn)一步提高了系統(tǒng)的抗干擾性和穩(wěn)定性。
C.溫度控制任務(wù)( TaskUser2_TemperatureControl),根據(jù)數(shù)據(jù)采集任務(wù)中獲得室內(nèi)外的溫度狀況,在兼顧考慮節(jié)能等要求的情況下,決定控制環(huán)境的策略(采用通風(fēng)系統(tǒng)還是空調(diào)系統(tǒng),還是兩者都采用)。
D.門禁控制任務(wù)( TaskUser3_DoorGuard),根據(jù)數(shù)字量(門磁、鎖芯和紅外傳感器)信號(hào),如果同時(shí)有門磁告警和紅外告警判定為人員入侵,啟動(dòng)報(bào)警任務(wù)進(jìn)行報(bào)警。
E.報(bào)警任務(wù)( TaskUser4_Alarm),從通信、數(shù)據(jù)采集任務(wù)和門禁控制任務(wù)等處獲得系統(tǒng)的異常和故障情況,及時(shí)調(diào)用幀發(fā)送任務(wù)向監(jiān)控中心和維護(hù)人員報(bào)警,報(bào)警信息包括基站識(shí)別號(hào)、告警類型及屬性值、告警時(shí)間等。
此外,還有中斷服務(wù)程序中提到的幀處理任務(wù),幀發(fā)送任務(wù),鍵盤處理任務(wù),顯示任務(wù),查詢?nèi)蝿?wù)(供查詢歷史數(shù)據(jù)),設(shè)置任務(wù)(設(shè)置系統(tǒng)運(yùn)行參數(shù))。
2.2 Paradigm C++集成環(huán)境下程序的編寫 監(jiān)控終端軟件基于μC/OS-II嵌入式操作系統(tǒng),由上述各程序模塊組成,在 Paradigm C++
5.1集成環(huán)境下編譯和調(diào)試通過(guò)( Paradigm C++是美國(guó) Devtools公司開(kāi)發(fā)的 80x86集成開(kāi)發(fā)環(huán)境)。Paradigm C++ IDE帶有可視化助理 (Visual Assist)的編輯器(Editor)、編譯器 (Compiler/Assembler)、連接工具 (Linker)、定位器 (LOCater)、Lint工具和集成調(diào)試器(Integrated debugger)。Paradigm的集成調(diào)試器屏蔽了硬件特殊性,提供了一個(gè)標(biāo)準(zhǔn)的軟件接口,主機(jī)上的 Paradigm調(diào)試器通過(guò) RS232串口與本終端目標(biāo)板建立通信連接,進(jìn)行軟件調(diào)試 [5][6]。
通常移植μC/OS-II需要注意的兩點(diǎn)問(wèn)題:
(1)與硬件有關(guān)問(wèn)題,由于 R8800與 x86指令兼容,所以 μC/OS-II的移植根據(jù)參考文獻(xiàn) 4和 R8800說(shuō)明文檔編寫與處理器相關(guān)的代碼,系統(tǒng)采用 40MHz的晶振,由于定時(shí)器與時(shí)鐘節(jié)拍有關(guān),修改定時(shí)器相關(guān)的設(shè)置。
(2)與編譯器有關(guān)問(wèn)題,由于 Paradigm C++集成開(kāi)發(fā)環(huán)境包括的編譯器和匯編器與 Borland兼