王震懿,吳 怡,俞志敏
(福建師范大學(xué)光電與信息工程學(xué)院,福建福州350007)
在移動(dòng)通信迅猛發(fā)展的今天,伴隨著終端用戶數(shù)量的日益增長(zhǎng),相應(yīng)的GSM基站設(shè)備也在成指數(shù)級(jí)的增加。移動(dòng)運(yùn)營(yíng)商也越來(lái)越關(guān)注運(yùn)營(yíng)網(wǎng)絡(luò)質(zhì)量的測(cè)試,尤其是在用戶感受度方面的測(cè)試。中國(guó)移動(dòng)在江蘇、浙江、湖南、廣東、福建等省都已籌劃開(kāi)始建設(shè)網(wǎng)絡(luò)QoS自動(dòng)撥測(cè)系統(tǒng),并逐步完善功能,反映了網(wǎng)絡(luò)優(yōu)化深入開(kāi)展的趨勢(shì)。江西移動(dòng)、山西移動(dòng)也已經(jīng)在開(kāi)展此類(lèi)項(xiàng)目的前期調(diào)研工作,并提出了相應(yīng)的實(shí)施建議:在2012年建設(shè)完成滿足江西移動(dòng)GSM網(wǎng)絡(luò)優(yōu)化工作需要,并滿足地市級(jí)重要客戶網(wǎng)絡(luò)質(zhì)量監(jiān)控需要的定點(diǎn)監(jiān)測(cè)系統(tǒng),預(yù)計(jì)將配置定點(diǎn)測(cè)試終端2 000~3 000臺(tái),隨后建立覆蓋全省的無(wú)線網(wǎng)絡(luò)質(zhì)量監(jiān)控系統(tǒng),實(shí)現(xiàn)全面的網(wǎng)絡(luò)質(zhì)量監(jiān)控,使無(wú)線網(wǎng)絡(luò)深度優(yōu)化工作走向一個(gè)新的臺(tái)階。
為了解決傳統(tǒng)的CQT測(cè)試主要以人工方式進(jìn)行操作而產(chǎn)生了效率低下,測(cè)試數(shù)據(jù)缺乏準(zhǔn)確性、真實(shí)性等弊端[1]。本文應(yīng)用嵌入式系統(tǒng)的開(kāi)發(fā)技術(shù),設(shè)計(jì)了一種基于M10芯片的自動(dòng)撥測(cè)系統(tǒng),將該系統(tǒng)的終端設(shè)備置于測(cè)試地點(diǎn),由系統(tǒng)的平臺(tái)通過(guò)GSM網(wǎng)絡(luò)下發(fā)測(cè)試任務(wù),終端接收?qǐng)?zhí)行測(cè)試任務(wù),并回傳測(cè)試數(shù)據(jù)至平臺(tái),供服務(wù)器對(duì)數(shù)據(jù)進(jìn)行處理。與文獻(xiàn)[2-4]提出的撥測(cè)系統(tǒng)設(shè)計(jì)方案在終端設(shè)備的設(shè)計(jì)上均需使用多塊芯片(控制芯片、通信芯片)相比,本文設(shè)計(jì)的撥測(cè)終端產(chǎn)品在M10芯片特有的OpenCPU架構(gòu)上開(kāi)發(fā)實(shí)現(xiàn),無(wú)需引入額外的控制芯片,大大節(jié)約了開(kāi)發(fā)成本。
系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)框圖如圖1所示。該自動(dòng)撥測(cè)系統(tǒng)主要由嵌入式終端設(shè)備和服務(wù)器端設(shè)備組成。其中嵌入式終端設(shè)備負(fù)責(zé)接收?qǐng)?zhí)行來(lái)自服務(wù)器端的測(cè)試命令,采集相關(guān)的測(cè)試數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)傳回給服務(wù)器端;服務(wù)器端設(shè)備由監(jiān)測(cè)平臺(tái)和數(shù)據(jù)庫(kù)服務(wù)器組成,平臺(tái)通過(guò)向終端設(shè)備發(fā)送短信的方式配置目標(biāo)地址建立通信通道,下發(fā)測(cè)試任務(wù)并負(fù)責(zé)接收前端設(shè)備傳回的數(shù)據(jù),數(shù)據(jù)庫(kù)服務(wù)器則負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行錄入和分析[5-7]。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)框圖
嵌入式撥測(cè)終端設(shè)備的硬件設(shè)計(jì)框圖如圖2所示,整個(gè)硬件平臺(tái)基于Quectel公司生產(chǎn)的M10芯片搭建。M10采用特有的OpenCPU構(gòu)架將GSM 模塊和系統(tǒng)控制芯片集成在一起,開(kāi)發(fā)人員可在Quectel公司提供的M10 SDK上可完成整個(gè)系統(tǒng)軟件的開(kāi)發(fā)。其中的GSM模塊可工作于850,900,1 800,1 900 MHz四個(gè)頻段,采用標(biāo)準(zhǔn)的AT指令與CPU進(jìn)行交互。系統(tǒng)的存儲(chǔ)空間由64 Mbyte的SDRAM和256 Mbyte的NAND Flash組成,滿足程序運(yùn)行和大量數(shù)據(jù)存儲(chǔ)的需求。另外還設(shè)有RS-232外圍接口可連接PC端串口供開(kāi)發(fā)人員調(diào)試系統(tǒng)。
圖2 終端設(shè)備硬件模塊結(jié)構(gòu)框圖
OpenCPU是一種提供了強(qiáng)大的支撐環(huán)境的軟件機(jī)制,它為Quectel公司的M10和M30模塊設(shè)計(jì),其軟件架構(gòu)如圖3所示,從上至下可分為應(yīng)用層、應(yīng)用接口層、傳輸接口層和內(nèi)核層。
圖3 OpenCPU架構(gòu)圖
OpenCPU使用標(biāo)準(zhǔn)C語(yǔ)言開(kāi)發(fā),向應(yīng)用層抽象了包括Memory、FILE system、FCM在內(nèi)的12類(lèi)典型應(yīng)用程序編程接口,可完美支持TCP/IP協(xié)議棧,支持最多10個(gè)的多任務(wù)處理機(jī)制,其子程序在ql_customer_config.c文件中定義。開(kāi)發(fā)者可在其上開(kāi)發(fā)新的創(chuàng)新應(yīng)用并直接將它們嵌入到Quectel GSM/GPRS模塊中。同時(shí)OpenCPU也能簡(jiǎn)單地讓?xiě)?yīng)用軟件在別的不同的MCU平臺(tái)上運(yùn)行。以撥打測(cè)試為例,通過(guò)Ql_OpenModemPort()函數(shù)來(lái)打開(kāi)虛擬串口,之后通過(guò)Ql_SendToModem()函數(shù)傳輸數(shù)據(jù)給coresystembuffer,傳輸內(nèi)容可以是AT指令、CSD數(shù) 據(jù) 或GPRS數(shù) 據(jù)。Ql_SendToModem(“ATD10086/0xd”,4)與通過(guò)外接串口在超級(jí)終端中輸入“ATD10086”指令的效果是一樣的。而OpenCPU與外部設(shè)備通信則是通過(guò)Ql_SendToUart_2()函數(shù)來(lái)向UART口傳輸數(shù)據(jù)。給出一個(gè)典型的基于OpenCPU平臺(tái)編寫(xiě)的應(yīng)用代碼框架如下:
/*main function*/
QlEventBuffer qlEventBuffer;
bool keepGoing=TRUE;
void ql_entry(void)//Entrance function
{
while(keepGoing)
{
Ql_GetEvent(&qlEventBuffer);//get event from Quectel Core system
switch(qlEventBuffer.eventTyp)
{
…//To do:add your code for parsing EVENTs.
default:…
break;
}
終端系統(tǒng)軟件結(jié)構(gòu)框圖如圖4所示。
圖4 終端系統(tǒng)軟件結(jié)構(gòu)框圖
各主要模塊功能描述如下:
1)AT指令通信模塊:通過(guò)向virtual modem port接口發(fā)送AT指令來(lái)操控M10芯片的GSM模塊。主要完成兩個(gè)任務(wù):一是根據(jù)測(cè)試任務(wù)要求連續(xù)采集相關(guān)的網(wǎng)絡(luò)參數(shù)寫(xiě)入文件并交付數(shù)據(jù)收發(fā)模塊,主要包括LAC(位置區(qū)碼)、BASIC(基站識(shí)別碼)、BCCH(廣播控制信道)、RxLev(接收信號(hào)電平)、RxQualSub(閑時(shí)信號(hào)誤碼率)、RxQualFull(忙時(shí)信號(hào)誤碼率)等;二是負(fù)責(zé)從GSM modem的短信收件箱中讀取短信,并交予任務(wù)處理模塊對(duì)信息進(jìn)行分析和處理。
2)任務(wù)處理模塊:任務(wù)處理模塊可分為協(xié)議處理和任務(wù)管理兩部分。協(xié)議處理部分主要負(fù)責(zé)通信協(xié)議的解析與封轉(zhuǎn),接收來(lái)自AT指令通信模塊的通信包,并按照相應(yīng)的通信協(xié)議進(jìn)行解析,剔除無(wú)效信息。任務(wù)管理部分則負(fù)責(zé)根據(jù)協(xié)議處理的結(jié)果創(chuàng)建不同類(lèi)型的測(cè)試任務(wù)線程,分為撥打測(cè)試、短信測(cè)試和數(shù)據(jù)測(cè)試三類(lèi)。
3)數(shù)據(jù)收發(fā)模塊:通過(guò)GPRS撥號(hào)連接網(wǎng)絡(luò),形成PPP鏈路。進(jìn)而將AT指令通信模塊產(chǎn)生的測(cè)試數(shù)據(jù)封裝成UDP報(bào)文發(fā)送回服務(wù)器端。其硬件層面依然是通過(guò)GSM modem實(shí)現(xiàn),在OpenCPU構(gòu)架下有關(guān)UDP通信的實(shí)現(xiàn)被封裝成以下幾個(gè)函數(shù),一個(gè)UDP報(bào)文的產(chǎn)生和發(fā)送流程如圖5所示。
圖5 M10芯片UDP包傳輸流程
4)程序監(jiān)控模塊:實(shí)現(xiàn)類(lèi)似看門(mén)狗的功能,通過(guò)生成軟件定時(shí)器要求系統(tǒng)中的各程序模塊在指定時(shí)限內(nèi)向監(jiān)控模塊發(fā)送心跳包,一旦監(jiān)控模塊在一個(gè)運(yùn)行周期內(nèi)未接收到合法的心跳信息,則調(diào)用硬件接口對(duì)整個(gè)軟硬件系統(tǒng)進(jìn)行復(fù)位和重啟。
整個(gè)撥測(cè)系統(tǒng)的南向接口規(guī)范包括下行命令數(shù)據(jù)包和上行應(yīng)答數(shù)據(jù)包兩部分,其中命令類(lèi)型包括:初始化設(shè)備、設(shè)置全局通信參數(shù)、重啟測(cè)試模塊、停止測(cè)試任務(wù)、設(shè)置短信內(nèi)容、設(shè)置告警門(mén)限、設(shè)置告警使能、下發(fā)語(yǔ)音測(cè)試任務(wù)、下發(fā)語(yǔ)音測(cè)試任務(wù)、下發(fā)掃頻測(cè)試任務(wù)、查詢(xún)?cè)O(shè)備狀態(tài)、查詢(xún)告警信息、查詢(xún)關(guān)鍵網(wǎng)絡(luò)參數(shù)、查詢(xún)周邊網(wǎng)絡(luò)參數(shù)、告警和告警消除十五類(lèi)。具體的下行命令格式如表1??刂泼钏髯侄握f(shuō)明如表2所示。
表1 下行命令格式
表2 控制命令所含各字段說(shuō)明
上行應(yīng)答格式與下行命令格式相比,在命令長(zhǎng)度與命令類(lèi)型字段間增加了設(shè)備編號(hào)參數(shù),其余字段設(shè)置相同,其數(shù)據(jù)結(jié)構(gòu)定義為:
typedef struct
{
unsigned char strCodeFlag[1];
unsigned char strCodeLength[2];
unsigned char strDeviceID[10];
unsigned char strCodeID[2];
unsigned char strCodeContent[MAX_SIZE];
unsigned char strCodeCrc16[4];
}UpPacketStats;
其中,CRC校驗(yàn)位的算法實(shí)現(xiàn)如下:
static unsigned short fcstab16[]={0x0000,0x1189,…,0x0f78,};
unsigned short VerifyCrc16(byte*origFrame,int length)
{
unsigned short fcs16=0xFFFF;
for(int i=0;i<length;i++)
{
fcs16=(unsigned short)((fcs16>>8)^fcstab16[(fcs16^orig-Frame[i])&0xff]);
}
return fcs16;
}
服務(wù)器端軟件負(fù)責(zé)封裝和發(fā)送下行數(shù)據(jù)包,接收和解析上行數(shù)據(jù)包,并錄入數(shù)據(jù)庫(kù)。服務(wù)器端軟件使用VC++編寫(xiě),利用MFC中的Cstring類(lèi)實(shí)現(xiàn)對(duì)字符型數(shù)據(jù)的操作,利用ODBC技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)支持,圖6是服務(wù)器端軟件的界面圖。以下發(fā)短信測(cè)試任務(wù)為例,用戶在下發(fā)短信測(cè)試任務(wù)的各個(gè)參數(shù)編輯框中填入?yún)?shù),點(diǎn)擊“下行編碼”按鈕完成編碼,點(diǎn)擊“數(shù)據(jù)發(fā)送”按鈕下發(fā)測(cè)試任務(wù)。當(dāng)前端設(shè)備應(yīng)答時(shí),軟件將彈窗提示用戶接收到有上行數(shù)據(jù),點(diǎn)擊確認(rèn)后,數(shù)據(jù)將直接顯示在“指令顯示”編輯框中,點(diǎn)擊上行解碼軟件自動(dòng)比對(duì)CRC校驗(yàn)成功后,數(shù)據(jù)自動(dòng)填入左側(cè)的上行執(zhí)行結(jié)果中。由圖6中數(shù)據(jù)可見(jiàn),前端設(shè)備共發(fā)送短信496條,成功率100%。
圖6 服務(wù)器接收端軟件(截圖)
本文闡述了一種新型的GSM自動(dòng)撥測(cè)系統(tǒng)的設(shè)計(jì)方案,重點(diǎn)介紹了終端設(shè)備的軟硬件設(shè)計(jì)和通信協(xié)議編寫(xiě)以及在OpenCPU環(huán)境下的應(yīng)用編程。經(jīng)初步測(cè)試,本文設(shè)計(jì)的基于M10芯片的GSM自動(dòng)撥測(cè)系統(tǒng)可實(shí)現(xiàn)語(yǔ)音撥打測(cè)試、短信收發(fā)測(cè)試和網(wǎng)絡(luò)參數(shù)測(cè)試,能夠?yàn)橐苿?dòng)運(yùn)營(yíng)商提高準(zhǔn)確及時(shí)的測(cè)試數(shù)據(jù)。與傳統(tǒng)的人工撥測(cè)手段相比,該系統(tǒng)具不僅節(jié)省了大量的人力物力也提高了運(yùn)營(yíng)商的運(yùn)維效率[2]。得益于針對(duì)M10芯片的深入開(kāi)發(fā),使得系統(tǒng)終端新媒體技術(shù)設(shè)備無(wú)需再引入額外的控制芯片,降低了開(kāi)發(fā)成本,從而使整個(gè)設(shè)計(jì)方案更具有現(xiàn)實(shí)意義。
[1]李程達(dá).GSM網(wǎng)絡(luò)自動(dòng)撥測(cè)終端的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2012,36(11):154-156.
[2]申晨,劉偉平,黃紅斌.基于以太網(wǎng)通信的自動(dòng)撥測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)應(yīng)用,2008,29(12):34-38.
[3]YD/T 1216—2010,900/1800MHz TDMA數(shù)字蜂窩移動(dòng)通信網(wǎng)通用分組無(wú)線業(yè)務(wù)(GPRS)基站子系統(tǒng)與服務(wù)GPRS支持節(jié)點(diǎn)(SGSN)間接口(Gb接口)測(cè)試方法[S].2010.
[4]江厚炎,劉軍杰.GPRS核心網(wǎng)自動(dòng)撥測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].軍事通信技術(shù),2008,29(3):57-60.
[5]柯小婉,李文璟,芮蘭蘭.移動(dòng)業(yè)務(wù)撥打測(cè)試自動(dòng)控制協(xié)議設(shè)計(jì)[J].工程與設(shè)計(jì),2010(3):54-59.
[6]管耀武,楊宗德.ARM嵌入式無(wú)線通信系統(tǒng)開(kāi)發(fā)實(shí)例精講[M].北京:電子工業(yè)出版社,2006.
[7]潘愛(ài)國(guó),王國(guó)印.Visual C++技術(shù)內(nèi)幕[M].4版.北京:清華大學(xué)出版社,2009.